Name: series-workflowhgq27 Phase: Failed StartedAt: 2026-09-07 12:54:02 +0000 UTC FinishedAt: 2026-09-07 13:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgq27[0] Phase: Succeeded StartedAt: 2026-09-07 12:54:02 +0000 UTC FinishedAt: 2026-09-07 13:13:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgq27[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 12:54:02 +0000 UTC FinishedAt: 2026-09-07 13:13:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgTUNVIGV2ZW50IFRMViBwYXJzaW5nIGluIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKCkgd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5OTYgUENJZSB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YTkzZjUzNzQ3NDJkMjBlOTZlYjU2NWQ4YmM5ZThjMmY0OTVjOTM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxMzoxMjoyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jXG5pbmRleCBjZDc1ODdjZTViOGE2Li5mNzRjNGIwYmRhM2MxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jXG5AQCAtNDk3LDEwICYjNDM7NDk3LDE4IEBAIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gXG4gXHR0YWlsID0gc2tiLVx1MDAzZWRhdGEgJiM0Mzsgc2tiLVx1MDAzZWxlbjtcbiBcdGRhdGEgJiM0Mzs9IHNpemVvZigqaGRyKTtcbi1cdHdoaWxlIChkYXRhICYjNDM7IHNpemVvZigqdGx2KSBcdTAwM2MgdGFpbCBcdTAwMjZcdTAwMjYgbGUxNl90b19jcHUodGx2LVx1MDAzZWxlbikpIHtcbiYjNDM7XHR3aGlsZSAoZGF0YSAmIzQzOyBzaXplb2YoKnRsdikgXHUwMDNjPSB0YWlsKSB7XG4mIzQzO1x0XHR1MTYgdGFnX2xlbiA9IGxlMTZfdG9fY3B1KHRsdi1cdTAwM2VsZW4pO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0YWdfbGVuIFx1MDAzYyBzaXplb2YoKnRsdikgfHwgZGF0YSAmIzQzOyB0YWdfbGVuIFx1MDAzZSB0YWlsKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdGV2ZW50ID0gKHN0cnVjdCBtdDc5OTZfbWN1X2NvdW50ZG93bl9ub3RpZnkgKil0bHYtXHUwMDNlZGF0YTtcbiBcbi1cdFx0Y2RhdGEub21hY19pZHggPSBldmVudC1cdTAwM2VvbWFjX2lkeDtcbiYjNDM7XHRcdGlmICh0YWdfbGVuIFx1MDAzZT0gc2l6ZW9mKCp0bHYpICYjNDM7IHNpemVvZigqZXZlbnQpKVxuJiM0MztcdFx0XHRjZGF0YS5vbWFjX2lkeCA9IGV2ZW50LVx1MDAzZW9tYWNfaWR4O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRicmVhaztcbiBcbiBcdFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHYtXHUwMDNldGFnKSkge1xuIFx0XHRjYXNlIFVOSV9FVkVOVF9JRV9DT1VOVERPV05fQ1NBOlxuQEAgLTUxNyw3ICYjNDM7NTI1LDcgQEAgbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuLVx0XHRkYXRhICYjNDM7PSBsZTE2X3RvX2NwdSh0bHYtXHUwMDNlbGVuKTtcbiYjNDM7XHRcdGRhdGEgJiM0Mzs9IHRhZ19sZW47XG4gXHRcdHRsdiA9IChzdHJ1Y3QgdGx2ICopZGF0YTtcbiBcdH1cbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgTUNVIGV2ZW50IFRMViBwYXJzaW5nIGluIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKCkgd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5OTYgUENJZSB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YTkzZjUzNzQ3NDJkMjBlOTZlYjU2NWQ4YmM5ZThjMmY0OTVjOTM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAxMzoxMjoyOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMKaW5kZXggY2Q3NTg3Y2U1YjhhNi4uZjc0YzRiMGJkYTNjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMKQEAgLTQ5NywxMCAmIzQzOzQ5NywxOCBAQCBtdDc5OTZfbWN1X2llX2NvdW50ZG93bihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAJdGFpbCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKIAlkYXRhICYjNDM7PSBzaXplb2YoKmhkcik7Ci0Jd2hpbGUgKGRhdGEgJiM0Mzsgc2l6ZW9mKCp0bHYpICZsdDsgdGFpbCAmYW1wOyZhbXA7IGxlMTZfdG9fY3B1KHRsdi0mZ3Q7bGVuKSkgewomIzQzOwl3aGlsZSAoZGF0YSAmIzQzOyBzaXplb2YoKnRsdikgJmx0Oz0gdGFpbCkgewomIzQzOwkJdTE2IHRhZ19sZW4gPSBsZTE2X3RvX2NwdSh0bHYtJmd0O2xlbik7CiYjNDM7CiYjNDM7CQlpZiAodGFnX2xlbiAmbHQ7IHNpemVvZigqdGx2KSB8fCBkYXRhICYjNDM7IHRhZ19sZW4gJmd0OyB0YWlsKQomIzQzOwkJCWJyZWFrOwomIzQzOwogCQlldmVudCA9IChzdHJ1Y3QgbXQ3OTk2X21jdV9jb3VudGRvd25fbm90aWZ5ICopdGx2LSZndDtkYXRhOwogCi0JCWNkYXRhLm9tYWNfaWR4ID0gZXZlbnQtJmd0O29tYWNfaWR4OwomIzQzOwkJaWYgKHRhZ19sZW4gJmd0Oz0gc2l6ZW9mKCp0bHYpICYjNDM7IHNpemVvZigqZXZlbnQpKQomIzQzOwkJCWNkYXRhLm9tYWNfaWR4ID0gZXZlbnQtJmd0O29tYWNfaWR4OwomIzQzOwkJZWxzZQomIzQzOwkJCWJyZWFrOwogCiAJCXN3aXRjaCAobGUxNl90b19jcHUodGx2LSZndDt0YWcpKSB7CiAJCWNhc2UgVU5JX0VWRU5UX0lFX0NPVU5URE9XTl9DU0E6CkBAIC01MTcsNyAmIzQzOzUyNSw3IEBAIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiAJCQlicmVhazsKIAkJfQogCi0JCWRhdGEgJiM0Mzs9IGxlMTZfdG9fY3B1KHRsdi0mZ3Q7bGVuKTsKJiM0MzsJCWRhdGEgJiM0Mzs9IHRhZ19sZW47CiAJCXRsdiA9IChzdHJ1Y3QgdGx2ICopZGF0YTsKIAl9CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoaXMgUGF0Y2ggYW5kIEl0cyBDb250ZXh0KioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY2F0Y2hlcyBteSBleWUgaXMgdGhlIHRhcmdldDogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jYC4gUmlnaHQgYXdheSwgSSYjMzk7bSB0aGlua2luZyBNZWRpYXRlaywgc28gd2UmIzM5O3JlIHRhbGtpbmcgbGlrZWx5IFdpLUZpLCBhbmQgc3BlY2lmaWNhbGx5IHRoZWlyIE1UNzk5NiBjaGlwc2V0LiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGBtdDc5OTZfbWN1X2llX2NvdW50ZG93bmAsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIGhhbmRsaW5nLCBhbmQgYSBwb3RlbnRpYWwgY291bnRkb3duIG1lY2hhbmlzbSB3aXRoaW4gdGhlIE1lZGlhdGVrIE1DVSAoTWljcm9jb250cm9sbGVyIFVuaXQpIGludGVyYWN0aW9uLiBJbnRlcmVzdGluZy4KCk5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG92ZXJhbGwgaGFyZHdhcmUgY29udGV4dCBmb3IgYG10Nzk5NmAuIElzIHRoaXMgYSBQQ0llIGNhcmQgZHJpdmVyLCBhIFVTQiBXaS1GaSBkb25nbGUgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQ291bGQgaXQgYmUgc29tZXRoaW5nIHNpbXVsYXRlZCwgbGlrZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgZXZlbiBRRU1VLCBvciBtYXliZSBVU0IgZ2FkZ2V0IG1vZGU/IENoZWNraW5nIHRoZSBLY29uZmlnLCBhbmQgb3RoZXIgY29kZSB3aXRoaW4gdGhhdCBgbXQ3OTk2YCBkaXJlY3Rvcnkgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBoeXNpY2FsIGludGVyZmFjZSBhbmQgZGVwZW5kZW5jaWVzIGludm9sdmVkLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBvciB0aGUgdmlydHVhbCByZXByZXNlbnRhdGlvbiB0aGVyZW9mLCB0byBwcm9wZXJseSBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIElFIGNvdW50ZG93biBtb2RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzk5NiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzk5NkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzk5NiAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc5OTZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTE3LVx0Ym9vbCBcJiMzNDtNVDc5OTYgKFBDSWUpIE5QVSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyOAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnYCBmaWxlOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTk2IEtjb25maWcqKgoKT2theSwgdGltZSB0byBkaXNzZWN0IHRoZSBLY29uZmlnIGZvciB0aGUgTVQ3OTk2IHdpcmVsZXNzIGRyaXZlci4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGNvbmZpZ3VyZWQgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGZlYXR1cmVzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW55IG9wdGlvbmFsIG1vZHVsZXMgdGhhdCBjYW4gYmUgYWRkZWQsIGFuZCB3aGljaCBvZiB0aGVzZSBhcmUgbGlrZWx5IHRvIGJlIHBsYXRmb3JtLXNwZWNpZmljIG9yIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIHNldCBvZiBNZWRpYXRlayBjaGlwcy4KCkkmIzM5O20gc2Nhbm5pbmcgZm9yIHRoZSB1c3VhbCBzdXNwZWN0czogc3VwcG9ydCBmb3IgODAyLjExIHN0YW5kYXJkcyAoYS9iL2cvbi9hYy9heCwgc3VyZWx5KSwgYW55IHNwZWNpYWwgTWVkaWF0ZWstc3BlY2lmaWMgZmVhdHVyZXMgbGlrZSBwcm9wcmlldGFyeSBoYXJkd2FyZSBhY2NlbGVyYXRpb24gb3IgcG93ZXIgbWFuYWdlbWVudCBjb25maWd1cmF0aW9ucywgYW5kIGFueSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byByZWd1bGF0b3J5IGRvbWFpbnMgb3IgY291bnRyeSBjb2Rlcy4gSSYjMzk7bGwgYmUga2VlcGluZyBhIGtlZW4gZXllIG91dCBmb3IgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBsaWtlIHNwZWNpZmljIGNyeXB0b2dyYXBoeSBtb2R1bGVzIG9yIGhhcmR3YXJlIGFjY2VzcyBsYXllcnMuIEFyZSB0aGVyZSBhbnkgZmVhdHVyZXMgZ2F0ZWQgYmVoaW5kIGNlcnRhaW4gcHJvY2Vzc29yIGFyY2hpdGVjdHVyZXM/CgpNeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGJyZWFkdGggb2YgY29uZmlndXJhYmxlIG9wdGlvbnMgYW5kIGhvdyB0aGV5IGludGVyYWN0LCBhbmQgdG8gdGhlbiBmb3JtIGEgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGFyY2hpdGVjdGVkIGF0IGEgS2NvbmZpZyBsZXZlbC4gSSYjMzk7bGwgbm90ZSBhbnkgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGZsYWdzIG9yIG9wdGlvbnMsIGVzcGVjaWFsbHkgdGhvc2UgdGhhdCBtaWdodCBoaW50IGF0IGFyZWFzIHdoZXJlIHRoZSBkcml2ZXImIzM5O3MgcGVyZm9ybWFuY2UgY2FuIGJlIHR3ZWFrZWQgb3Igb3B0aW1pemVkLCBvciB3aGVyZSB0aGVyZSBtaWdodCBiZSBwb3RlbnRpYWwgaXNzdWVzIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMgb3IgaGFyZHdhcmUgdmFyaWFudHMuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gZnVsbHkgdW5kZXJzdGFuZGluZyBob3cgdG8gYmVzdCB1c2UgYW5kIGNvbmZpZ3VyZSB0aGlzIGRyaXZlciB3aXRoaW4gbXkgb3duIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5OTZFXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5OTYgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFx0c2VsZWN0IFJFTEFZXG4gICA3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA4Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTk2LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcbiAgMTE6XHRcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IHRyaS1iYW5kIG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LFxuICAxMjpcdFx0ICBhbmQgMi40R0h6IElFRUUgODAyLjExYmUgNHg0OjRTUyA0MDk2LVFBTSwgMzIwTUh6IGNoYW5uZWxzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxNTpcdFxuICAxNjpcdGNvbmZpZyBNVDc5OTZfTlBVXG4gIDE3Olx0XHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3OTk2RVxuICAxOTpcdFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzZfQ09SRT1ORVRfQUlST0hBX05QVVxuICAyMDpcdFx0c2VsZWN0IE1UNzZfTlBVXG4gIDIxOlx0XHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzAxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIE1UNzk5NiBDb25uZWN0aXZpdHkgT3B0aW9ucyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGludGVyZmFjZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE1UNzk5NiBjaGlwc2V0LiBNeSBpbml0aWFsIGh1bmNoIGlzIFBDSWUsIGJ1dCBsZXQmIzM5O3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gVGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQgaXMgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciBhcmVhLiBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvYCBkaXJlY3RvcnkgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB0aGUgYE1ha2VmaWxlYCBsb2NhdGVkIHdpdGhpbi4gVGhlIE1ha2VmaWxlIHNob3VsZCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGJ1aWxkIGRlcGVuZGVuY2llcyBhbmQgaW5jbHVkZWQgc291cmNlIGZpbGVzLCB3aGljaCB3aWxsLCBpbiB0dXJuLCBpbmRpY2F0ZSB0aGUgc3VwcG9ydGVkIGludGVyZmFjZXMuIEkmIzM5O2xsIGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIGRpcmVjdG9yeSBjb250ZW50cyB0byBnZXQgYSBob2xpc3RpYyBwaWN0dXJlLiBUaGlzIHNob3VsZCB0ZWxsIG1lIHF1aWNrbHkgd2hldGhlciB3ZSYjMzk7cmUgdGFsa2luZyBQQ0llICpvbmx5Kiwgb3IgaWYgdGhlcmUmIzM5O3MgVVNCLCBTRElPLCBvciBvdGhlciBpbnRlcmZhY2VzIGluIHBsYXkgYXMgd2VsbC4gVGltZSB0byBnZXQgdG8gdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjb3JlZHVtcC5jJiMzNDssCiAgICAmIzM0O2NvcmVkdW1wLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2RtYS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5oJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bW1pby5jJiMzNDssCiAgICAmIzM0O210Nzk5Ni5oJiMzNDssCiAgICAmIzM0O25wdS5jJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTExNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIE1UNzk5NioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhpcyBgbXQ3OTk2YCBpcyBleGNsdXNpdmVseSBhIFBDSWUgZGV2aWNlLiBEaXZpbmcgaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvYCBkaXJlY3RvcnksIHRoZSBwcmVzZW5jZSBvZiBmaWxlcyBsaWtlIGBwY2kuY2AsIGBtbWlvLmNgLCBhbmQgYG1jdS5jYCBzdHJvbmdseSBzdWdnZXN0cyBhIFBDSWUgaW1wbGVtZW50YXRpb24uIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgYSBxdWljayBzZWFyY2ggY29uZmlybXMgdGhhdCB0aGUgTVQ3OTk2IGlzIGluZGVlZCBhIE1lZGlhVGVrIFdpLUZpIDcgUENJZSBjaGlwLgoKTm93LCBsZXQmIzM5O3MgYXBwbHkgdGhlIENPUkUgVFJJQUdFIFBISUxPU09QSFkmIzM5O3MgbmVnYXRpdmUgY3JpdGVyaWEuIFNlY3Rpb24gMiBkaWN0YXRlcyB3aGVuIHdlIGNhbiBjb25maWRlbnRseSBzYXkgYSB0YXJnZXQgaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgY2xhdXNlIGlzOiAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogKlZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuKiYjMzQ7CgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGJlY29tZXM6IElzIHRoZSBNVDc5OTYgYWNjZXNzaWJsZSB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFPyBUaGUgYW5zd2VyIGlzIGEgZGVmaW5pdGl2ZSBuby4gVGhpcyBpcyBhIGRlZGljYXRlZCBNZWRpYVRlayBQQ0llIHdpcmVsZXNzIE5JQyAoTVQ3OTk2LCBNVDc5OTIsIG9yIE1UNzk5MCksIHJlcXVpcmluZyBwaHlzaWNhbCBNZWRpYVRlayBoYXJkd2FyZS4gSXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLiBJdCYjMzk7cyBub3QgYWNjZXNzaWJsZSB2aWEgVVNCIGdhZGdldCBvciBldmVuIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUgc2ltdWxhdG9yLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IGhhcyB2ZW5kb3Itc3BlY2lmaWMgTUNVIGZpcm13YXJlIGFuZCByZWxpZXMgb24gUENJZSBETUEgYW5kIE1NSU8uIEl0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoKQnV0IHdhaXQsIGhvbGQgb24uLi4gY291bGQgdGhlcmUgYmUgc29tZSBiYWNrZG9vciwgc29tZSB3YXkgYG10Nzk5Nl9tY3VfaWVfY291bnRkb3duYCBpcyByZWFjaGFibGUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gVGhpcyBuZWVkcyBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgbXQ3OTk2X21jdV9pZV9jb3VudGRvd25gLiBUaGF0IHdpbGwgZGVjaWRlIGlmIGl0IGlzIHJlYWNoYWJsZSB3aXRob3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2X21jdV9pZV9jb3VudGRvd24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NzY6bXQ3OTk2X21jdV9pZV9jb3VudGRvd24oc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9OTIxPW10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTI5LVx0Y2FzZSBNQ1VfVU5JX0VWRU5UX0lFX0NPVU5URE9XTjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjkzMDpcdFx0bXQ3OTk2X21jdV9pZV9jb3VudGRvd24oZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTMxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMzOQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd24sIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQuCgoqKlRyYWNpbmcgYG10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIGBtdDc5OTZfbWN1X3VuaV9yeF91bnNvbGljaXRlZF9ldmVudGAuLi4gaW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgaXMgYSBsaWtlbHkgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWMgdG8gdGhlIG10Nzk5NiBjaGlwc2V0LCBkZWFsaW5nIHdpdGggdW5zb2xpY2l0ZWQgZXZlbnRzIHJlY2VpdmVkIG92ZXIgdGhlIE1DVSAoTWljcm9jb250cm9sbGVyIFVuaXQpIGludGVyZmFjZS4gVGhlICYjMzQ7VU5JJiMzNDsgbGlrZWx5IHJlZmVycyB0byB0aGUgVW5pZmllZCBOZXR3b3JrIEludGVyZmFjZSBvciBhIHNpbWlsYXIgYWJzdHJhY3Rpb24gbGF5ZXIuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdoYXQmIzM5O3MgdGhlIHRyaWdnZXJpbmcgZXZlbnQgZm9yIHRoaXMgZnVuY3Rpb24gY2FsbD8gSXMgaXQgYW4gaW50ZXJydXB0LCBhIHRpbWVyLCBvciBhIHBvbGw/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIGJlIGNydWNpYWwgaW4gZmlndXJpbmcgb3V0IHRoZSBmbG93IG9mIGV4ZWN1dGlvbi4KClRoZW4sIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc291cmNlIG9mIHRoZSB1bnNvbGljaXRlZCBldmVudC4gV2hhdCBtZXNzYWdlLCBvciBkYXRhIHN0cnVjdHVyZSwgaXMgYmVpbmcgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbj8gSeKAmWxsIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBtdDc5OTZfbWN1X3VuaV9yeF91bnNvbGljaXRlZF9ldmVudGAgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBkYXRhIGlzIHJlYWQgZnJvbSB0aGUgTUNVLiBPZnRlbiwgdGhpcyBpbnZvbHZlcyBsb29raW5nIGF0IHRoZSBzaGFyZWQgbWVtb3J5IGJ1ZmZlcnMgb3IgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBpbnZvbHZlZCBpbiB0aGUgY29tbXVuaWNhdGlvbi4KCk5leHQsIEkmIzM5O2xsIGFuYWx5emUgaG93IHRoZSBkYXRhIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBmdW5jdGlvbi4gSXMgaXQgYSBzaW1wbGUgZGlzcGF0Y2ggdG8gYW5vdGhlciBoYW5kbGVyIGJhc2VkIG9uIGFuIGV2ZW50IGNvZGUsIG9yIGRvZXMgaXQgaW52b2x2ZSBtb3JlIGNvbXBsZXggcHJvY2Vzc2luZz8gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQsIGFuZCBob3cgYXJlIHRoZXkgcG9wdWxhdGVkIG9yIG1vZGlmaWVkPyBJcyB0aGVyZSBhbnkgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBkcml2ZXJzLCBmaXJtd2FyZSwgb3IgaGFyZHdhcmUgY29tcG9uZW50cz8gVGhlIGVycm9yIGhhbmRsaW5nIHdpbGwgYmUgY3J1Y2lhbCBoZXJlLCBhbmQgSSB3aWxsIGJlIGxvb2tpbmcgY2xvc2VseSBhdCBob3cgdGhlIGZ1bmN0aW9uIGRlYWxzIHdpdGggbWFsZm9ybWVkIGRhdGEgb3IgdW5leHBlY3RlZCBldmVudHMuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyAobXV0ZXhlcywgc3BpbmxvY2tzLCBzZW1hcGhvcmVzKSB0aGF0IGFyZSBpbnZvbHZlZC4gVGhpcyBpcyBhIGNyaXRpY2FsIGFyZWEgZm9yIGNvbmN1cnJlbmN5IGJ1Z3MsIGVzcGVjaWFsbHkgaW4gYSB3aXJlbGVzcyBkcml2ZXIuIFJhY2UgY29uZGl0aW9ucyBjYW4gbGVhZCB0byBjcmFzaGVzIG9yIGRhdGEgY29ycnVwdGlvbiwgYW5kIEkgaGF2ZSB0byBiZSBwYXJ0aWN1bGFybHkgdmlnaWxhbnQgYWJvdXQgdGhpcy4KCkZpbmFsbHksIEkmIzM5O2xsIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBldmVudC4gV2hhdCBkb2VzIGl0IHNpZ25pZnkgZm9yIHRoZSBzeXN0ZW0/IERvZXMgaXQgcmVxdWlyZSBhbnkgYWN0aW9uIGZyb20gdGhlIGhvc3QsIGxpa2UgcmVjb25maWd1cmluZyBhIHdpcmVsZXNzIGxpbmssIHJlcG9ydGluZyBhbiBlcnJvciwgb3IgdXBkYXRpbmcgc3RhdGU/IEnigJlsbCBoYXZlIHRvIGxvb2sgZm9yIGFueSBjYWxscyB0byBoaWdoZXItbGV2ZWwgQVBJcyBvciBjYWxsYmFja3MsIGVuc3VyaW5nIHRoYXQgdGhlIGRyaXZlciBiZWhhdmVzIGluIGEgd2F5IHRoYXQgZG9lc24mIzM5O3QgdmlvbGF0ZSB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZWZmZWN0IG9uIHRoZSBuZXR3b3Jr4oCZcyBxdWFsaXR5IG9mIHNlcnZpY2UsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTkyMD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6OTIxOm10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05MjIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTk1MD12b2lkIG10Nzk5Nl9tY3VfcnhfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05NTQtXHRpZiAocnhkLVx1MDAzZW9wdGlvbiBcdTAwMjYgTUNVX1VOSV9DTURfVU5TT0xJQ0lURURfRVZFTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjk1NTpcdFx0bXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnQoZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTU2LVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIG10Nzk5NiBNQ1UgUmVjZWl2ZSBFdmVudCBIYW5kbGVyKioKCk9rYXksIHNvIGBtdDc5OTZfbWN1X3J4X2V2ZW50YCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc3lzdGVtIHJlY2VpdmVzIGFuIGV2ZW50IGZyb20gdGhlIGZpcm13YXJlIG9uIHRoYXQgTVQ3OTk2IFBDSWUgY2FyZC4gV2Uga25vdyB0aGlzIGhhcHBlbnMgdmlhIHRoZSBNQ1UmIzM5O3MgcmVjZWl2ZSBxdWV1ZSwgbWVhbmluZyBETUEgYW5kIFBDSSBpbnRlcnJ1cHRzIGFyZSBpbnZvbHZlZCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgY2FsbCBwYXRocy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cy4gV2hlcmUgZXhhY3RseSAqaXMqIGBtdDc5OTZfbWN1X3J4X2V2ZW50YCBiZWluZyBjYWxsZWQgZnJvbT8gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBtYXAgb3V0IHRoZSBmdW5jdGlvbiBjYWxscy4gSSB3YW50IHRvIHNlZSB0aGUgY29tcGxldGUgcGljdHVyZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVycnVwdCBwcm9jZXNzaW5nIGZsb3cgZnJvbSB0aGUgaGFyZHdhcmUgbGV2ZWwgdGhyb3VnaCB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfbWN1X3J4X2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTE2ODY9dm9pZCBtdDc5OTZfcXVldWVfcnhfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTE3MTQtXHRjYXNlIFBLVF9UWVBFX1JYX0VWRU5UOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MTcxNTpcdFx0bXQ3OTk2X21jdV9yeF9ldmVudChkZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNzE2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz05MjE9bXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05NDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo5NTA6dm9pZCBtdDc5OTZfbWN1X3J4X2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05NTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTc5Mz1pbnQgbXQ3OTk2X21jdV90cmlnZ2VyX2Fzc2VydChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjc5NDp2b2lkIG10Nzk5Nl9tY3VfcnhfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC03OTUtdm9pZCBtdDc5OTZfbWN1X2V4aXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDYKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMjY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gdGhlIGNvZGUgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgTVQ3OTk2IFBDSWUgV2ktRmkgY2FyZCBkcml2ZXIgaGFuZGxlcyB1bnNvbGljaXRlZCBldmVudCBUTFYgcGFyc2luZy4gSSBrbm93IHRoYXQgTVQ3OTk2IGlzIGEgTWVkaWFUZWstc3BlY2lmaWMgZHJpdmVyLCBtZWFuaW5nIGl0JiMzOTtzIHRpZWQgdG8gdGhlaXIgaGFyZHdhcmUuIEFuZCwgYXMgc3VzcGVjdGVkLCBpdCBuZWVkcyAqcmVhbCogUENJZSBoYXJkd2FyZSwgYSB2ZW5kb3IgQVNJQyBzcGVjaWZpY2FsbHksIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQgaW4gYSB2aXJ0dWFsIG1hY2hpbmUgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4KCkdpdmVuIHRoYXQgZGVwZW5kZW5jeSwgSSYjMzk7bSBjb25maXJtaW5nIHRoYXQgdGhpcyBtb2RpZmllZCBjb2RlIGlzIHNpbXBseSB1bnJlYWNoYWJsZSBieSBzeXprYWxsZXImIzM5O3MgY3VycmVudCBjYXBhYmlsaXRpZXMuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgc3RydWN0dXJhbCBsaW1pdGF0aW9uOyB5b3UgY2FuJiMzOTt0IHRlc3QgaXQgd2l0aG91dCB0aGUgcHJvcGVyIGhhcmR3YXJlIHNldHVwLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmdXp6aW5nIGNyaXRlcmlhLiBUaGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBgbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oKWAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY2AsIGRlYWxzIHdpdGggVExWIHBhcnNpbmcuIEJ1dCwgYmVjYXVzZSBNVDc5OTYgaXMgdmVuZG9yLXNwZWNpZmljLCByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMsIGl0JiMzOTtzIGEgZGVhZCBlbmQgZm9yIHVzIGFzIHRoaW5ncyBzdGFuZC4KClNvLCB0aGUgJiMzOTtXb3J0aEZ1enppbmcmIzM5OyBmbGFnIGlzIGRlZmluaXRlbHkgZmFsc2UuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBlbXB0eSwgYW5kIHRoZXJlIGFyZSBubyBgRm9jdXNTeW1ib2xzYCB0byBjb25zaWRlci4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY3kgbWFrZXMgdGhlIGNvZGUgdW5yZWFjaGFibGUuIFRpbWUgdG8gdXNlIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgTUNVIGV2ZW50IFRMViBwYXJzaW5nIGluIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKCkgd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5OTYgUENJZSB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIE1DVSBldmVudCBUTFYgcGFyc2luZyBpbiBtdDc5OTZfbWN1X2llX2NvdW50ZG93bigpIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3OTk2IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMzoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6MzAuNjU3NTA3OTY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3MDE1NjIxODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBNQ1UgZXZlbnQgVExWIHBhcnNpbmcgaW4gbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oKSB3aXRoaW4gdGhlIE1lZGlhVGVrIE1UNzk5NiBQQ0llIHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6MzAuNjU3NTE0MTQ3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzIwMDIxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YTkzZjUzNzQ3NDJkMjBlOTZlYjU2NWQ4YmM5ZThjMmY0OTVjOTM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMTM6MTI6MjkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY1xcbmluZGV4IGNkNzU4N2NlNWI4YTYuLmY3NGM0YjBiZGEzYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY1xcbkBAIC00OTcsMTAgKzQ5NywxOCBAQCBtdDc5OTZfbWN1X2llX2NvdW50ZG93bihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXG4gXFx0dGFpbCA9IHNrYi1cXHUwMDNlZGF0YSArIHNrYi1cXHUwMDNlbGVuO1xcbiBcXHRkYXRhICs9IHNpemVvZigqaGRyKTtcXG4tXFx0d2hpbGUgKGRhdGEgKyBzaXplb2YoKnRsdikgXFx1MDAzYyB0YWlsIFxcdTAwMjZcXHUwMDI2IGxlMTZfdG9fY3B1KHRsdi1cXHUwMDNlbGVuKSkge1xcbitcXHR3aGlsZSAoZGF0YSArIHNpemVvZigqdGx2KSBcXHUwMDNjPSB0YWlsKSB7XFxuK1xcdFxcdHUxNiB0YWdfbGVuID0gbGUxNl90b19jcHUodGx2LVxcdTAwM2VsZW4pO1xcbitcXG4rXFx0XFx0aWYgKHRhZ19sZW4gXFx1MDAzYyBzaXplb2YoKnRsdikgfHwgZGF0YSArIHRhZ19sZW4gXFx1MDAzZSB0YWlsKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuIFxcdFxcdGV2ZW50ID0gKHN0cnVjdCBtdDc5OTZfbWN1X2NvdW50ZG93bl9ub3RpZnkgKil0bHYtXFx1MDAzZWRhdGE7XFxuIFxcbi1cXHRcXHRjZGF0YS5vbWFjX2lkeCA9IGV2ZW50LVxcdTAwM2VvbWFjX2lkeDtcXG4rXFx0XFx0aWYgKHRhZ19sZW4gXFx1MDAzZT0gc2l6ZW9mKCp0bHYpICsgc2l6ZW9mKCpldmVudCkpXFxuK1xcdFxcdFxcdGNkYXRhLm9tYWNfaWR4ID0gZXZlbnQtXFx1MDAzZW9tYWNfaWR4O1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0XFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHYtXFx1MDAzZXRhZykpIHtcXG4gXFx0XFx0Y2FzZSBVTklfRVZFTlRfSUVfQ09VTlRET1dOX0NTQTpcXG5AQCAtNTE3LDcgKzUyNSw3IEBAIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRkYXRhICs9IGxlMTZfdG9fY3B1KHRsdi1cXHUwMDNlbGVuKTtcXG4rXFx0XFx0ZGF0YSArPSB0YWdfbGVuO1xcbiBcXHRcXHR0bHYgPSAoc3RydWN0IHRsdiAqKWRhdGE7XFxuIFxcdH1cXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjozMS4xOTAzMzY4MDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI2MTY4NzE5OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBNQ1UgZXZlbnQgVExWIHBhcnNpbmcgaW4gbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oKSB3aXRoaW4gdGhlIE1lZGlhVGVrIE1UNzk5NiBQQ0llIHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YTkzZjUzNzQ3NDJkMjBlOTZlYjU2NWQ4YmM5ZThjMmY0OTVjOTM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxMzoxMjoyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmNcbmluZGV4IGNkNzU4N2NlNWI4YTYuLmY3NGM0YjBiZGEzYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmNcbkBAIC00OTcsMTAgKzQ5NywxOCBAQCBtdDc5OTZfbWN1X2llX2NvdW50ZG93bihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0dGFpbCA9IHNrYi1cdTAwM2VkYXRhICsgc2tiLVx1MDAzZWxlbjtcbiBcdGRhdGEgKz0gc2l6ZW9mKCpoZHIpO1xuLVx0d2hpbGUgKGRhdGEgKyBzaXplb2YoKnRsdikgXHUwMDNjIHRhaWwgXHUwMDI2XHUwMDI2IGxlMTZfdG9fY3B1KHRsdi1cdTAwM2VsZW4pKSB7XG4rXHR3aGlsZSAoZGF0YSArIHNpemVvZigqdGx2KSBcdTAwM2M9IHRhaWwpIHtcbitcdFx0dTE2IHRhZ19sZW4gPSBsZTE2X3RvX2NwdSh0bHYtXHUwMDNlbGVuKTtcbitcbitcdFx0aWYgKHRhZ19sZW4gXHUwMDNjIHNpemVvZigqdGx2KSB8fCBkYXRhICsgdGFnX2xlbiBcdTAwM2UgdGFpbClcbitcdFx0XHRicmVhaztcbitcbiBcdFx0ZXZlbnQgPSAoc3RydWN0IG10Nzk5Nl9tY3VfY291bnRkb3duX25vdGlmeSAqKXRsdi1cdTAwM2VkYXRhO1xuIFxuLVx0XHRjZGF0YS5vbWFjX2lkeCA9IGV2ZW50LVx1MDAzZW9tYWNfaWR4O1xuK1x0XHRpZiAodGFnX2xlbiBcdTAwM2U9IHNpemVvZigqdGx2KSArIHNpemVvZigqZXZlbnQpKVxuK1x0XHRcdGNkYXRhLm9tYWNfaWR4ID0gZXZlbnQtXHUwMDNlb21hY19pZHg7XG4rXHRcdGVsc2VcbitcdFx0XHRicmVhaztcbiBcbiBcdFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHYtXHUwMDNldGFnKSkge1xuIFx0XHRjYXNlIFVOSV9FVkVOVF9JRV9DT1VOVERPV05fQ1NBOlxuQEAgLTUxNyw3ICs1MjUsNyBAQCBtdDc5OTZfbWN1X2llX2NvdW50ZG93bihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXG4tXHRcdGRhdGEgKz0gbGUxNl90b19jcHUodGx2LVx1MDAzZWxlbik7XG4rXHRcdGRhdGEgKz0gdGFnX2xlbjtcbiBcdFx0dGx2ID0gKHN0cnVjdCB0bHYgKilkYXRhO1xuIFx0fVxuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjMxLjE5MDMzODIzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNDA3NTIxODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgUGF0Y2ggYW5kIEl0cyBDb250ZXh0KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGNhdGNoZXMgbXkgZXllIGlzIHRoZSB0YXJnZXQ6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY2AuIFJpZ2h0IGF3YXksIEknbSB0aGlua2luZyBNZWRpYXRlaywgc28gd2UncmUgdGFsa2luZyBsaWtlbHkgV2ktRmksIGFuZCBzcGVjaWZpY2FsbHkgdGhlaXIgTVQ3OTk2IGNoaXBzZXQuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgYG10Nzk5Nl9tY3VfaWVfY291bnRkb3duYCwgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIEluZm9ybWF0aW9uIEVsZW1lbnQgKElFKSBoYW5kbGluZywgYW5kIGEgcG90ZW50aWFsIGNvdW50ZG93biBtZWNoYW5pc20gd2l0aGluIHRoZSBNZWRpYXRlayBNQ1UgKE1pY3JvY29udHJvbGxlciBVbml0KSBpbnRlcmFjdGlvbi4gSW50ZXJlc3RpbmcuXG5cbk5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG92ZXJhbGwgaGFyZHdhcmUgY29udGV4dCBmb3IgYG10Nzk5NmAuIElzIHRoaXMgYSBQQ0llIGNhcmQgZHJpdmVyLCBhIFVTQiBXaS1GaSBkb25nbGUgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQ291bGQgaXQgYmUgc29tZXRoaW5nIHNpbXVsYXRlZCwgbGlrZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgZXZlbiBRRU1VLCBvciBtYXliZSBVU0IgZ2FkZ2V0IG1vZGU/IENoZWNraW5nIHRoZSBLY29uZmlnLCBhbmQgb3RoZXIgY29kZSB3aXRoaW4gdGhhdCBgbXQ3OTk2YCBkaXJlY3Rvcnkgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBoeXNpY2FsIGludGVyZmFjZSBhbmQgZGVwZW5kZW5jaWVzIGludm9sdmVkLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIG9yIHRoZSB2aXJ0dWFsIHJlcHJlc2VudGF0aW9uIHRoZXJlb2YsIHRvIHByb3Blcmx5IGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgSUUgY291bnRkb3duIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIwNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjM3LjMzMTA5MzIyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTAwODkwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTk2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZzoyOmNvbmZpZyBNVDc5OTZFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5OTYgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6MTY6Y29uZmlnIE1UNzk5Nl9OUFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTE3LVxcdGJvb2wgXFxcIk1UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjM3LjQzMDEwODEwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4MzU4ODc2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnYCBmaWxlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5OTYgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZGlzc2VjdCB0aGUgS2NvbmZpZyBmb3IgdGhlIE1UNzk5NiB3aXJlbGVzcyBkcml2ZXIuIExldCdzIHNlZSB3aGF0J3MgYmVpbmcgY29uZmlndXJlZCBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHByZXNlbnRlZCB0byB0aGUgdXNlciBkdXJpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24uIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBmZWF0dXJlcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFueSBvcHRpb25hbCBtb2R1bGVzIHRoYXQgY2FuIGJlIGFkZGVkLCBhbmQgd2hpY2ggb2YgdGhlc2UgYXJlIGxpa2VseSB0byBiZSBwbGF0Zm9ybS1zcGVjaWZpYyBvciB0aWVkIHRvIGEgcGFydGljdWxhciBzZXQgb2YgTWVkaWF0ZWsgY2hpcHMuXG5cbkknbSBzY2FubmluZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiBzdXBwb3J0IGZvciA4MDIuMTEgc3RhbmRhcmRzIChhL2IvZy9uL2FjL2F4LCBzdXJlbHkpLCBhbnkgc3BlY2lhbCBNZWRpYXRlay1zcGVjaWZpYyBmZWF0dXJlcyBsaWtlIHByb3ByaWV0YXJ5IGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvciBwb3dlciBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb25zLCBhbmQgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHJlZ3VsYXRvcnkgZG9tYWlucyBvciBjb3VudHJ5IGNvZGVzLiBJJ2xsIGJlIGtlZXBpbmcgYSBrZWVuIGV5ZSBvdXQgZm9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cywgbGlrZSBzcGVjaWZpYyBjcnlwdG9ncmFwaHkgbW9kdWxlcyBvciBoYXJkd2FyZSBhY2Nlc3MgbGF5ZXJzLiBBcmUgdGhlcmUgYW55IGZlYXR1cmVzIGdhdGVkIGJlaGluZCBjZXJ0YWluIHByb2Nlc3NvciBhcmNoaXRlY3R1cmVzP1xuXG5NeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGJyZWFkdGggb2YgY29uZmlndXJhYmxlIG9wdGlvbnMgYW5kIGhvdyB0aGV5IGludGVyYWN0LCBhbmQgdG8gdGhlbiBmb3JtIGEgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGFyY2hpdGVjdGVkIGF0IGEgS2NvbmZpZyBsZXZlbC4gSSdsbCBub3RlIGFueSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgZmxhZ3Mgb3Igb3B0aW9ucywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IG1pZ2h0IGhpbnQgYXQgYXJlYXMgd2hlcmUgdGhlIGRyaXZlcidzIHBlcmZvcm1hbmNlIGNhbiBiZSB0d2Vha2VkIG9yIG9wdGltaXplZCwgb3Igd2hlcmUgdGhlcmUgbWlnaHQgYmUgcG90ZW50aWFsIGlzc3VlcyBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzIG9yIGhhcmR3YXJlIHZhcmlhbnRzLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGZ1bGx5IHVuZGVyc3RhbmRpbmcgaG93IHRvIGJlc3QgdXNlIGFuZCBjb25maWd1cmUgdGhpcyBkcml2ZXIgd2l0aGluIG15IG93biBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkyOCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjQwLjI2NTk5NzQ2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzk5NkVcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5OTYgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcdHNlbGVjdCBSRUxBWVxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzk5Ni1iYXNlZCBQQ0llIHdpcmVsZXNzIGRldmljZXMsXFxuICAxMTpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgY29uY3VycmVudCB0cmktYmFuZCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeixcXG4gIDEyOlxcdFxcdCAgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlIDR4NDo0U1MgNDA5Ni1RQU0sIDMyME1IeiBjaGFubmVscy5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb25maWcgTVQ3OTk2X05QVVxcbiAgMTc6XFx0XFx0Ym9vbCBcXFwiTVQ3OTk2IChQQ0llKSBOUFUgc3VwcG9ydFxcXCJcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTVQ3OTk2RVxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzZfQ09SRT1ORVRfQUlST0hBX05QVVxcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzZfTlBVXFxuICAyMTpcXHRcXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NDAuMjY2MDUzODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTc2NDg5MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBNVDc5OTYgQ29ubmVjdGl2aXR5IE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGludGVyZmFjZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE1UNzk5NiBjaGlwc2V0LiBNeSBpbml0aWFsIGh1bmNoIGlzIFBDSWUsIGJ1dCBsZXQncyBub3QgYXNzdW1lIGFueXRoaW5nLiBUaGUgYmVzdCBzdGFydGluZyBwb2ludCBpcyB0byBkaXZlIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyIGFyZWEuIEknbGwgemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2AgZGlyZWN0b3J5IGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdGhlIGBNYWtlZmlsZWAgbG9jYXRlZCB3aXRoaW4uIFRoZSBNYWtlZmlsZSBzaG91bGQgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGluY2x1ZGVkIHNvdXJjZSBmaWxlcywgd2hpY2ggd2lsbCwgaW4gdHVybiwgaW5kaWNhdGUgdGhlIHN1cHBvcnRlZCBpbnRlcmZhY2VzLiBJJ2xsIGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIGRpcmVjdG9yeSBjb250ZW50cyB0byBnZXQgYSBob2xpc3RpYyBwaWN0dXJlLiBUaGlzIHNob3VsZCB0ZWxsIG1lIHF1aWNrbHkgd2hldGhlciB3ZSdyZSB0YWxraW5nIFBDSWUgKm9ubHkqLCBvciBpZiB0aGVyZSdzIFVTQiwgU0RJTywgb3Igb3RoZXIgaW50ZXJmYWNlcyBpbiBwbGF5IGFzIHdlbGwuIFRpbWUgdG8gZ2V0IHRvIHRoZSBjb2RlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzAxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjo0Mi40NDI1NDcyNzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNvcmVkdW1wLmNcIixcbiAgICBcImNvcmVkdW1wLmhcIixcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiZG1hLmNcIixcbiAgICBcImVlcHJvbS5jXCIsXG4gICAgXCJlZXByb20uaFwiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWN1LmNcIixcbiAgICBcIm1jdS5oXCIsXG4gICAgXCJtbWlvLmNcIixcbiAgICBcIm10Nzk5Ni5oXCIsXG4gICAgXCJucHUuY1wiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInJlZ3MuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjo0Mi40NDI2NzYxNDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzMxODg2NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgTVQ3OTk2KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhpcyBgbXQ3OTk2YCBpcyBleGNsdXNpdmVseSBhIFBDSWUgZGV2aWNlLiBEaXZpbmcgaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvYCBkaXJlY3RvcnksIHRoZSBwcmVzZW5jZSBvZiBmaWxlcyBsaWtlIGBwY2kuY2AsIGBtbWlvLmNgLCBhbmQgYG1jdS5jYCBzdHJvbmdseSBzdWdnZXN0cyBhIFBDSWUgaW1wbGVtZW50YXRpb24uIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgYSBxdWljayBzZWFyY2ggY29uZmlybXMgdGhhdCB0aGUgTVQ3OTk2IGlzIGluZGVlZCBhIE1lZGlhVGVrIFdpLUZpIDcgUENJZSBjaGlwLlxuXG5Ob3csIGxldCdzIGFwcGx5IHRoZSBDT1JFIFRSSUFHRSBQSElMT1NPUEhZJ3MgbmVnYXRpdmUgY3JpdGVyaWEuIFNlY3Rpb24gMiBkaWN0YXRlcyB3aGVuIHdlIGNhbiBjb25maWRlbnRseSBzYXkgYSB0YXJnZXQgaXNuJ3Qgd29ydGggZnV6emluZy4gVGhlIGtleSBjbGF1c2UgaXM6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuLi4gcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4qXCJcblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiBJcyB0aGUgTVQ3OTk2IGFjY2Vzc2libGUgd2l0aGluIHN0YW5kYXJkIFFFTVUgb3IgYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRT8gVGhlIGFuc3dlciBpcyBhIGRlZmluaXRpdmUgbm8uIFRoaXMgaXMgYSBkZWRpY2F0ZWQgTWVkaWFUZWsgUENJZSB3aXJlbGVzcyBOSUMgKE1UNzk5NiwgTVQ3OTkyLCBvciBNVDc5OTApLCByZXF1aXJpbmcgcGh5c2ljYWwgTWVkaWFUZWsgaGFyZHdhcmUuIEl0J3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLiBJdCdzIG5vdCBhY2Nlc3NpYmxlIHZpYSBVU0IgZ2FkZ2V0IG9yIGV2ZW4gYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggaXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIHRoYXQgaGFzIHZlbmRvci1zcGVjaWZpYyBNQ1UgZmlybXdhcmUgYW5kIHJlbGllcyBvbiBQQ0llIERNQSBhbmQgTU1JTy4gSXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLi4uIGNvdWxkIHRoZXJlIGJlIHNvbWUgYmFja2Rvb3IsIHNvbWUgd2F5IGBtdDc5OTZfbWN1X2llX2NvdW50ZG93bmAgaXMgcmVhY2hhYmxlIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IFRoaXMgbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gYG10Nzk5Nl9tY3VfaWVfY291bnRkb3duYC4gVGhhdCB3aWxsIGRlY2lkZSBpZiBpdCBpcyByZWFjaGFibGUgd2l0aG91dCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMTQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTgsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjQ2Ljc3NDU2NDg3M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MTI4MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9tY3VfaWVfY291bnRkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00NzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NzY6bXQ3OTk2X21jdV9pZV9jb3VudGRvd24oc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9OTIxPW10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05MjktXFx0Y2FzZSBNQ1VfVU5JX0VWRU5UX0lFX0NPVU5URE9XTjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo5MzA6XFx0XFx0bXQ3OTk2X21jdV9pZV9jb3VudGRvd24oZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTkzMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NDYuODgwNjk5NTUzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4MTkwODAxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQuXG5cbioqVHJhY2luZyBgbXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIGBtdDc5OTZfbWN1X3VuaV9yeF91bnNvbGljaXRlZF9ldmVudGAuLi4gaW1tZWRpYXRlbHksIEknbSB0aGlua2luZywgdGhpcyBpcyBhIGxpa2VseSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpYyB0byB0aGUgbXQ3OTk2IGNoaXBzZXQsIGRlYWxpbmcgd2l0aCB1bnNvbGljaXRlZCBldmVudHMgcmVjZWl2ZWQgb3ZlciB0aGUgTUNVIChNaWNyb2NvbnRyb2xsZXIgVW5pdCkgaW50ZXJmYWNlLiBUaGUgXCJVTklcIiBsaWtlbHkgcmVmZXJzIHRvIHRoZSBVbmlmaWVkIE5ldHdvcmsgSW50ZXJmYWNlIG9yIGEgc2ltaWxhciBhYnN0cmFjdGlvbiBsYXllci5cblxuRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaGF0J3MgdGhlIHRyaWdnZXJpbmcgZXZlbnQgZm9yIHRoaXMgZnVuY3Rpb24gY2FsbD8gSXMgaXQgYW4gaW50ZXJydXB0LCBhIHRpbWVyLCBvciBhIHBvbGw/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIGJlIGNydWNpYWwgaW4gZmlndXJpbmcgb3V0IHRoZSBmbG93IG9mIGV4ZWN1dGlvbi5cblxuVGhlbiwgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNvdXJjZSBvZiB0aGUgdW5zb2xpY2l0ZWQgZXZlbnQuIFdoYXQgbWVzc2FnZSwgb3IgZGF0YSBzdHJ1Y3R1cmUsIGlzIGJlaW5nIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24/IEnigJlsbCBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgbXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnRgIHRvIHRoZSBwb2ludCB3aGVyZSB0aGUgZGF0YSBpcyByZWFkIGZyb20gdGhlIE1DVS4gT2Z0ZW4sIHRoaXMgaW52b2x2ZXMgbG9va2luZyBhdCB0aGUgc2hhcmVkIG1lbW9yeSBidWZmZXJzIG9yIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgaW52b2x2ZWQgaW4gdGhlIGNvbW11bmljYXRpb24uXG5cbk5leHQsIEknbGwgYW5hbHl6ZSBob3cgdGhlIGRhdGEgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGZ1bmN0aW9uLiBJcyBpdCBhIHNpbXBsZSBkaXNwYXRjaCB0byBhbm90aGVyIGhhbmRsZXIgYmFzZWQgb24gYW4gZXZlbnQgY29kZSwgb3IgZG9lcyBpdCBpbnZvbHZlIG1vcmUgY29tcGxleCBwcm9jZXNzaW5nPyBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgdXNlZCwgYW5kIGhvdyBhcmUgdGhleSBwb3B1bGF0ZWQgb3IgbW9kaWZpZWQ/IElzIHRoZXJlIGFueSBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGRyaXZlcnMsIGZpcm13YXJlLCBvciBoYXJkd2FyZSBjb21wb25lbnRzPyBUaGUgZXJyb3IgaGFuZGxpbmcgd2lsbCBiZSBjcnVjaWFsIGhlcmUsIGFuZCBJIHdpbGwgYmUgbG9va2luZyBjbG9zZWx5IGF0IGhvdyB0aGUgZnVuY3Rpb24gZGVhbHMgd2l0aCBtYWxmb3JtZWQgZGF0YSBvciB1bmV4cGVjdGVkIGV2ZW50cy5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyAobXV0ZXhlcywgc3BpbmxvY2tzLCBzZW1hcGhvcmVzKSB0aGF0IGFyZSBpbnZvbHZlZC4gVGhpcyBpcyBhIGNyaXRpY2FsIGFyZWEgZm9yIGNvbmN1cnJlbmN5IGJ1Z3MsIGVzcGVjaWFsbHkgaW4gYSB3aXJlbGVzcyBkcml2ZXIuIFJhY2UgY29uZGl0aW9ucyBjYW4gbGVhZCB0byBjcmFzaGVzIG9yIGRhdGEgY29ycnVwdGlvbiwgYW5kIEkgaGF2ZSB0byBiZSBwYXJ0aWN1bGFybHkgdmlnaWxhbnQgYWJvdXQgdGhpcy5cblxuRmluYWxseSwgSSdsbCBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZXZlbnQuIFdoYXQgZG9lcyBpdCBzaWduaWZ5IGZvciB0aGUgc3lzdGVtPyBEb2VzIGl0IHJlcXVpcmUgYW55IGFjdGlvbiBmcm9tIHRoZSBob3N0LCBsaWtlIHJlY29uZmlndXJpbmcgYSB3aXJlbGVzcyBsaW5rLCByZXBvcnRpbmcgYW4gZXJyb3IsIG9yIHVwZGF0aW5nIHN0YXRlPyBJ4oCZbGwgaGF2ZSB0byBsb29rIGZvciBhbnkgY2FsbHMgdG8gaGlnaGVyLWxldmVsIEFQSXMgb3IgY2FsbGJhY2tzLCBlbnN1cmluZyB0aGF0IHRoZSBkcml2ZXIgYmVoYXZlcyBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgdmlvbGF0ZSB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZWZmZWN0IG9uIHRoZSBuZXR3b3Jr4oCZcyBxdWFsaXR5IG9mIHNlcnZpY2UsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMzksIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjo1MC42OTk3ODI2MDlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NTcwOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz05MjA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo5MjE6bXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9OTUwPXZvaWQgbXQ3OTk2X21jdV9yeF9ldmVudChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTU0LVxcdGlmIChyeGQtXFx1MDAzZW9wdGlvbiBcXHUwMDI2IE1DVV9VTklfQ01EX1VOU09MSUNJVEVEX0VWRU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6OTU1OlxcdFxcdG10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50KGRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05NTYtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjo1MC43ODUzNTk2MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjI4MjM1NTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIG10Nzk5NiBNQ1UgUmVjZWl2ZSBFdmVudCBIYW5kbGVyKipcblxuT2theSwgc28gYG10Nzk5Nl9tY3VfcnhfZXZlbnRgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBzeXN0ZW0gcmVjZWl2ZXMgYW4gZXZlbnQgZnJvbSB0aGUgZmlybXdhcmUgb24gdGhhdCBNVDc5OTYgUENJZSBjYXJkLiBXZSBrbm93IHRoaXMgaGFwcGVucyB2aWEgdGhlIE1DVSdzIHJlY2VpdmUgcXVldWUsIG1lYW5pbmcgRE1BIGFuZCBQQ0kgaW50ZXJydXB0cyBhcmUgaW52b2x2ZWQsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludHMuIFdoZXJlIGV4YWN0bHkgKmlzKiBgbXQ3OTk2X21jdV9yeF9ldmVudGAgYmVpbmcgY2FsbGVkIGZyb20/IExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBtYXAgb3V0IHRoZSBmdW5jdGlvbiBjYWxscy4gSSB3YW50IHRvIHNlZSB0aGUgY29tcGxldGUgcGljdHVyZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVycnVwdCBwcm9jZXNzaW5nIGZsb3cgZnJvbSB0aGUgaGFyZHdhcmUgbGV2ZWwgdGhyb3VnaCB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzAwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NTMuNDEzNTk5MzA5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTkyNDY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5OTZfbWN1X3J4X2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0xNjg2PXZvaWQgbXQ3OTk2X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTE3MTQtXFx0Y2FzZSBQS1RfVFlQRV9SWF9FVkVOVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoxNzE1OlxcdFxcdG10Nzk5Nl9tY3VfcnhfZXZlbnQoZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTE3MTYtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz05MjE9bXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTk0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo5NTA6dm9pZCBtdDc5OTZfbWN1X3J4X2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTc5Mz1pbnQgbXQ3OTk2X21jdV90cmlnZ2VyX2Fzc2VydChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo3OTQ6dm9pZCBtdDc5OTZfbWN1X3J4X2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTc5NS12b2lkIG10Nzk5Nl9tY3VfZXhpdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NTMuNDgzNTI4NDI0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NzU0OTk1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGNoYW5nZXMgYXJlIGRlZmluaXRlbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIE1UNzk5NiBQQ0llIFdpLUZpIGNhcmQgZHJpdmVyIGhhbmRsZXMgdW5zb2xpY2l0ZWQgZXZlbnQgVExWIHBhcnNpbmcuIEkga25vdyB0aGF0IE1UNzk5NiBpcyBhIE1lZGlhVGVrLXNwZWNpZmljIGRyaXZlciwgbWVhbmluZyBpdCdzIHRpZWQgdG8gdGhlaXIgaGFyZHdhcmUuIEFuZCwgYXMgc3VzcGVjdGVkLCBpdCBuZWVkcyAqcmVhbCogUENJZSBoYXJkd2FyZSwgYSB2ZW5kb3IgQVNJQyBzcGVjaWZpY2FsbHksIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQgaW4gYSB2aXJ0dWFsIG1hY2hpbmUgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS5cblxuR2l2ZW4gdGhhdCBkZXBlbmRlbmN5LCBJJ20gY29uZmlybWluZyB0aGF0IHRoaXMgbW9kaWZpZWQgY29kZSBpcyBzaW1wbHkgdW5yZWFjaGFibGUgYnkgc3l6a2FsbGVyJ3MgY3VycmVudCBjYXBhYmlsaXRpZXMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBzdHJ1Y3R1cmFsIGxpbWl0YXRpb247IHlvdSBjYW4ndCB0ZXN0IGl0IHdpdGhvdXQgdGhlIHByb3BlciBoYXJkd2FyZSBzZXR1cC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGZ1enppbmcgY3JpdGVyaWEuIFRoZSBwYXRjaCwgc3BlY2lmaWNhbGx5IGluIGBtdDc5OTZfbWN1X2llX2NvdW50ZG93bigpYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jYCwgZGVhbHMgd2l0aCBUTFYgcGFyc2luZy4gQnV0LCBiZWNhdXNlIE1UNzk5NiBpcyB2ZW5kb3Itc3BlY2lmaWMsIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBpdCdzIGEgZGVhZCBlbmQgZm9yIHVzIGFzIHRoaW5ncyBzdGFuZC5cblxuU28sIHRoZSAnV29ydGhGdXp6aW5nJyBmbGFnIGlzIGRlZmluaXRlbHkgZmFsc2UuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBlbXB0eSwgYW5kIHRoZXJlIGFyZSBubyBgRm9jdXNTeW1ib2xzYCB0byBjb25zaWRlci4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY3kgbWFrZXMgdGhlIGNvZGUgdW5yZWFjaGFibGUuIFRpbWUgdG8gdXNlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNDYsIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjU3LjM1OTAzMTU3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIE1DVSBldmVudCBUTFYgcGFyc2luZyBpbiBtdDc5OTZfbWN1X2llX2NvdW50ZG93bigpIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3OTk2IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBNQ1UgZXZlbnQgVExWIHBhcnNpbmcgaW4gbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oKSB3aXRoaW4gdGhlIE1lZGlhVGVrIE1UNzk5NiBQQ0llIHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NTcuMzU5MDU4ODUzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgq27[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 12:54:02 +0000 UTC FinishedAt: 2026-09-07 13:12:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgTUNVIGV2ZW50IFRMViBwYXJzaW5nIGluIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKCkgd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5OTYgUENJZSB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YTkzZjUzNzQ3NDJkMjBlOTZlYjU2NWQ4YmM5ZThjMmY0OTVjOTM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxMzoxMjoyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jXG5pbmRleCBjZDc1ODdjZTViOGE2Li5mNzRjNGIwYmRhM2MxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jXG5AQCAtNDk3LDEwICYjNDM7NDk3LDE4IEBAIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gXG4gXHR0YWlsID0gc2tiLVx1MDAzZWRhdGEgJiM0Mzsgc2tiLVx1MDAzZWxlbjtcbiBcdGRhdGEgJiM0Mzs9IHNpemVvZigqaGRyKTtcbi1cdHdoaWxlIChkYXRhICYjNDM7IHNpemVvZigqdGx2KSBcdTAwM2MgdGFpbCBcdTAwMjZcdTAwMjYgbGUxNl90b19jcHUodGx2LVx1MDAzZWxlbikpIHtcbiYjNDM7XHR3aGlsZSAoZGF0YSAmIzQzOyBzaXplb2YoKnRsdikgXHUwMDNjPSB0YWlsKSB7XG4mIzQzO1x0XHR1MTYgdGFnX2xlbiA9IGxlMTZfdG9fY3B1KHRsdi1cdTAwM2VsZW4pO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0YWdfbGVuIFx1MDAzYyBzaXplb2YoKnRsdikgfHwgZGF0YSAmIzQzOyB0YWdfbGVuIFx1MDAzZSB0YWlsKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdGV2ZW50ID0gKHN0cnVjdCBtdDc5OTZfbWN1X2NvdW50ZG93bl9ub3RpZnkgKil0bHYtXHUwMDNlZGF0YTtcbiBcbi1cdFx0Y2RhdGEub21hY19pZHggPSBldmVudC1cdTAwM2VvbWFjX2lkeDtcbiYjNDM7XHRcdGlmICh0YWdfbGVuIFx1MDAzZT0gc2l6ZW9mKCp0bHYpICYjNDM7IHNpemVvZigqZXZlbnQpKVxuJiM0MztcdFx0XHRjZGF0YS5vbWFjX2lkeCA9IGV2ZW50LVx1MDAzZW9tYWNfaWR4O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRicmVhaztcbiBcbiBcdFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHYtXHUwMDNldGFnKSkge1xuIFx0XHRjYXNlIFVOSV9FVkVOVF9JRV9DT1VOVERPV05fQ1NBOlxuQEAgLTUxNyw3ICYjNDM7NTI1LDcgQEAgbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuLVx0XHRkYXRhICYjNDM7PSBsZTE2X3RvX2NwdSh0bHYtXHUwMDNlbGVuKTtcbiYjNDM7XHRcdGRhdGEgJiM0Mzs9IHRhZ19sZW47XG4gXHRcdHRsdiA9IChzdHJ1Y3QgdGx2ICopZGF0YTtcbiBcdH1cbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgTUNVIGV2ZW50IFRMViBwYXJzaW5nIGluIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKCkgd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5OTYgUENJZSB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YTkzZjUzNzQ3NDJkMjBlOTZlYjU2NWQ4YmM5ZThjMmY0OTVjOTM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAxMzoxMjoyOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMKaW5kZXggY2Q3NTg3Y2U1YjhhNi4uZjc0YzRiMGJkYTNjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMKQEAgLTQ5NywxMCAmIzQzOzQ5NywxOCBAQCBtdDc5OTZfbWN1X2llX2NvdW50ZG93bihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAJdGFpbCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKIAlkYXRhICYjNDM7PSBzaXplb2YoKmhkcik7Ci0Jd2hpbGUgKGRhdGEgJiM0Mzsgc2l6ZW9mKCp0bHYpICZsdDsgdGFpbCAmYW1wOyZhbXA7IGxlMTZfdG9fY3B1KHRsdi0mZ3Q7bGVuKSkgewomIzQzOwl3aGlsZSAoZGF0YSAmIzQzOyBzaXplb2YoKnRsdikgJmx0Oz0gdGFpbCkgewomIzQzOwkJdTE2IHRhZ19sZW4gPSBsZTE2X3RvX2NwdSh0bHYtJmd0O2xlbik7CiYjNDM7CiYjNDM7CQlpZiAodGFnX2xlbiAmbHQ7IHNpemVvZigqdGx2KSB8fCBkYXRhICYjNDM7IHRhZ19sZW4gJmd0OyB0YWlsKQomIzQzOwkJCWJyZWFrOwomIzQzOwogCQlldmVudCA9IChzdHJ1Y3QgbXQ3OTk2X21jdV9jb3VudGRvd25fbm90aWZ5ICopdGx2LSZndDtkYXRhOwogCi0JCWNkYXRhLm9tYWNfaWR4ID0gZXZlbnQtJmd0O29tYWNfaWR4OwomIzQzOwkJaWYgKHRhZ19sZW4gJmd0Oz0gc2l6ZW9mKCp0bHYpICYjNDM7IHNpemVvZigqZXZlbnQpKQomIzQzOwkJCWNkYXRhLm9tYWNfaWR4ID0gZXZlbnQtJmd0O29tYWNfaWR4OwomIzQzOwkJZWxzZQomIzQzOwkJCWJyZWFrOwogCiAJCXN3aXRjaCAobGUxNl90b19jcHUodGx2LSZndDt0YWcpKSB7CiAJCWNhc2UgVU5JX0VWRU5UX0lFX0NPVU5URE9XTl9DU0E6CkBAIC01MTcsNyAmIzQzOzUyNSw3IEBAIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiAJCQlicmVhazsKIAkJfQogCi0JCWRhdGEgJiM0Mzs9IGxlMTZfdG9fY3B1KHRsdi0mZ3Q7bGVuKTsKJiM0MzsJCWRhdGEgJiM0Mzs9IHRhZ19sZW47CiAJCXRsdiA9IChzdHJ1Y3QgdGx2ICopZGF0YTsKIAl9CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoaXMgUGF0Y2ggYW5kIEl0cyBDb250ZXh0KioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY2F0Y2hlcyBteSBleWUgaXMgdGhlIHRhcmdldDogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jYC4gUmlnaHQgYXdheSwgSSYjMzk7bSB0aGlua2luZyBNZWRpYXRlaywgc28gd2UmIzM5O3JlIHRhbGtpbmcgbGlrZWx5IFdpLUZpLCBhbmQgc3BlY2lmaWNhbGx5IHRoZWlyIE1UNzk5NiBjaGlwc2V0LiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGBtdDc5OTZfbWN1X2llX2NvdW50ZG93bmAsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIGhhbmRsaW5nLCBhbmQgYSBwb3RlbnRpYWwgY291bnRkb3duIG1lY2hhbmlzbSB3aXRoaW4gdGhlIE1lZGlhdGVrIE1DVSAoTWljcm9jb250cm9sbGVyIFVuaXQpIGludGVyYWN0aW9uLiBJbnRlcmVzdGluZy4KCk5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG92ZXJhbGwgaGFyZHdhcmUgY29udGV4dCBmb3IgYG10Nzk5NmAuIElzIHRoaXMgYSBQQ0llIGNhcmQgZHJpdmVyLCBhIFVTQiBXaS1GaSBkb25nbGUgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQ291bGQgaXQgYmUgc29tZXRoaW5nIHNpbXVsYXRlZCwgbGlrZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgZXZlbiBRRU1VLCBvciBtYXliZSBVU0IgZ2FkZ2V0IG1vZGU/IENoZWNraW5nIHRoZSBLY29uZmlnLCBhbmQgb3RoZXIgY29kZSB3aXRoaW4gdGhhdCBgbXQ3OTk2YCBkaXJlY3Rvcnkgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBoeXNpY2FsIGludGVyZmFjZSBhbmQgZGVwZW5kZW5jaWVzIGludm9sdmVkLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBvciB0aGUgdmlydHVhbCByZXByZXNlbnRhdGlvbiB0aGVyZW9mLCB0byBwcm9wZXJseSBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIElFIGNvdW50ZG93biBtb2RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzk5NiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzk5NkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzk5NiAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc5OTZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTE3LVx0Ym9vbCBcJiMzNDtNVDc5OTYgKFBDSWUpIE5QVSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyOAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnYCBmaWxlOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTk2IEtjb25maWcqKgoKT2theSwgdGltZSB0byBkaXNzZWN0IHRoZSBLY29uZmlnIGZvciB0aGUgTVQ3OTk2IHdpcmVsZXNzIGRyaXZlci4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGNvbmZpZ3VyZWQgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGZlYXR1cmVzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW55IG9wdGlvbmFsIG1vZHVsZXMgdGhhdCBjYW4gYmUgYWRkZWQsIGFuZCB3aGljaCBvZiB0aGVzZSBhcmUgbGlrZWx5IHRvIGJlIHBsYXRmb3JtLXNwZWNpZmljIG9yIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIHNldCBvZiBNZWRpYXRlayBjaGlwcy4KCkkmIzM5O20gc2Nhbm5pbmcgZm9yIHRoZSB1c3VhbCBzdXNwZWN0czogc3VwcG9ydCBmb3IgODAyLjExIHN0YW5kYXJkcyAoYS9iL2cvbi9hYy9heCwgc3VyZWx5KSwgYW55IHNwZWNpYWwgTWVkaWF0ZWstc3BlY2lmaWMgZmVhdHVyZXMgbGlrZSBwcm9wcmlldGFyeSBoYXJkd2FyZSBhY2NlbGVyYXRpb24gb3IgcG93ZXIgbWFuYWdlbWVudCBjb25maWd1cmF0aW9ucywgYW5kIGFueSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byByZWd1bGF0b3J5IGRvbWFpbnMgb3IgY291bnRyeSBjb2Rlcy4gSSYjMzk7bGwgYmUga2VlcGluZyBhIGtlZW4gZXllIG91dCBmb3IgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBsaWtlIHNwZWNpZmljIGNyeXB0b2dyYXBoeSBtb2R1bGVzIG9yIGhhcmR3YXJlIGFjY2VzcyBsYXllcnMuIEFyZSB0aGVyZSBhbnkgZmVhdHVyZXMgZ2F0ZWQgYmVoaW5kIGNlcnRhaW4gcHJvY2Vzc29yIGFyY2hpdGVjdHVyZXM/CgpNeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGJyZWFkdGggb2YgY29uZmlndXJhYmxlIG9wdGlvbnMgYW5kIGhvdyB0aGV5IGludGVyYWN0LCBhbmQgdG8gdGhlbiBmb3JtIGEgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGFyY2hpdGVjdGVkIGF0IGEgS2NvbmZpZyBsZXZlbC4gSSYjMzk7bGwgbm90ZSBhbnkgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGZsYWdzIG9yIG9wdGlvbnMsIGVzcGVjaWFsbHkgdGhvc2UgdGhhdCBtaWdodCBoaW50IGF0IGFyZWFzIHdoZXJlIHRoZSBkcml2ZXImIzM5O3MgcGVyZm9ybWFuY2UgY2FuIGJlIHR3ZWFrZWQgb3Igb3B0aW1pemVkLCBvciB3aGVyZSB0aGVyZSBtaWdodCBiZSBwb3RlbnRpYWwgaXNzdWVzIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMgb3IgaGFyZHdhcmUgdmFyaWFudHMuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gZnVsbHkgdW5kZXJzdGFuZGluZyBob3cgdG8gYmVzdCB1c2UgYW5kIGNvbmZpZ3VyZSB0aGlzIGRyaXZlciB3aXRoaW4gbXkgb3duIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5OTZFXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5OTYgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFx0c2VsZWN0IFJFTEFZXG4gICA3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA4Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTk2LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcbiAgMTE6XHRcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IHRyaS1iYW5kIG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LFxuICAxMjpcdFx0ICBhbmQgMi40R0h6IElFRUUgODAyLjExYmUgNHg0OjRTUyA0MDk2LVFBTSwgMzIwTUh6IGNoYW5uZWxzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxNTpcdFxuICAxNjpcdGNvbmZpZyBNVDc5OTZfTlBVXG4gIDE3Olx0XHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3OTk2RVxuICAxOTpcdFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzZfQ09SRT1ORVRfQUlST0hBX05QVVxuICAyMDpcdFx0c2VsZWN0IE1UNzZfTlBVXG4gIDIxOlx0XHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzAxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIE1UNzk5NiBDb25uZWN0aXZpdHkgT3B0aW9ucyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGludGVyZmFjZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE1UNzk5NiBjaGlwc2V0LiBNeSBpbml0aWFsIGh1bmNoIGlzIFBDSWUsIGJ1dCBsZXQmIzM5O3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gVGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQgaXMgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciBhcmVhLiBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvYCBkaXJlY3RvcnkgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB0aGUgYE1ha2VmaWxlYCBsb2NhdGVkIHdpdGhpbi4gVGhlIE1ha2VmaWxlIHNob3VsZCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGJ1aWxkIGRlcGVuZGVuY2llcyBhbmQgaW5jbHVkZWQgc291cmNlIGZpbGVzLCB3aGljaCB3aWxsLCBpbiB0dXJuLCBpbmRpY2F0ZSB0aGUgc3VwcG9ydGVkIGludGVyZmFjZXMuIEkmIzM5O2xsIGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIGRpcmVjdG9yeSBjb250ZW50cyB0byBnZXQgYSBob2xpc3RpYyBwaWN0dXJlLiBUaGlzIHNob3VsZCB0ZWxsIG1lIHF1aWNrbHkgd2hldGhlciB3ZSYjMzk7cmUgdGFsa2luZyBQQ0llICpvbmx5Kiwgb3IgaWYgdGhlcmUmIzM5O3MgVVNCLCBTRElPLCBvciBvdGhlciBpbnRlcmZhY2VzIGluIHBsYXkgYXMgd2VsbC4gVGltZSB0byBnZXQgdG8gdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjb3JlZHVtcC5jJiMzNDssCiAgICAmIzM0O2NvcmVkdW1wLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2RtYS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5oJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bW1pby5jJiMzNDssCiAgICAmIzM0O210Nzk5Ni5oJiMzNDssCiAgICAmIzM0O25wdS5jJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTExNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIE1UNzk5NioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhpcyBgbXQ3OTk2YCBpcyBleGNsdXNpdmVseSBhIFBDSWUgZGV2aWNlLiBEaXZpbmcgaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvYCBkaXJlY3RvcnksIHRoZSBwcmVzZW5jZSBvZiBmaWxlcyBsaWtlIGBwY2kuY2AsIGBtbWlvLmNgLCBhbmQgYG1jdS5jYCBzdHJvbmdseSBzdWdnZXN0cyBhIFBDSWUgaW1wbGVtZW50YXRpb24uIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgYSBxdWljayBzZWFyY2ggY29uZmlybXMgdGhhdCB0aGUgTVQ3OTk2IGlzIGluZGVlZCBhIE1lZGlhVGVrIFdpLUZpIDcgUENJZSBjaGlwLgoKTm93LCBsZXQmIzM5O3MgYXBwbHkgdGhlIENPUkUgVFJJQUdFIFBISUxPU09QSFkmIzM5O3MgbmVnYXRpdmUgY3JpdGVyaWEuIFNlY3Rpb24gMiBkaWN0YXRlcyB3aGVuIHdlIGNhbiBjb25maWRlbnRseSBzYXkgYSB0YXJnZXQgaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgY2xhdXNlIGlzOiAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogKlZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuKiYjMzQ7CgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGJlY29tZXM6IElzIHRoZSBNVDc5OTYgYWNjZXNzaWJsZSB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFPyBUaGUgYW5zd2VyIGlzIGEgZGVmaW5pdGl2ZSBuby4gVGhpcyBpcyBhIGRlZGljYXRlZCBNZWRpYVRlayBQQ0llIHdpcmVsZXNzIE5JQyAoTVQ3OTk2LCBNVDc5OTIsIG9yIE1UNzk5MCksIHJlcXVpcmluZyBwaHlzaWNhbCBNZWRpYVRlayBoYXJkd2FyZS4gSXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLiBJdCYjMzk7cyBub3QgYWNjZXNzaWJsZSB2aWEgVVNCIGdhZGdldCBvciBldmVuIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUgc2ltdWxhdG9yLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IGhhcyB2ZW5kb3Itc3BlY2lmaWMgTUNVIGZpcm13YXJlIGFuZCByZWxpZXMgb24gUENJZSBETUEgYW5kIE1NSU8uIEl0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoKQnV0IHdhaXQsIGhvbGQgb24uLi4gY291bGQgdGhlcmUgYmUgc29tZSBiYWNrZG9vciwgc29tZSB3YXkgYG10Nzk5Nl9tY3VfaWVfY291bnRkb3duYCBpcyByZWFjaGFibGUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gVGhpcyBuZWVkcyBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgbXQ3OTk2X21jdV9pZV9jb3VudGRvd25gLiBUaGF0IHdpbGwgZGVjaWRlIGlmIGl0IGlzIHJlYWNoYWJsZSB3aXRob3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2X21jdV9pZV9jb3VudGRvd24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NzY6bXQ3OTk2X21jdV9pZV9jb3VudGRvd24oc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9OTIxPW10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTI5LVx0Y2FzZSBNQ1VfVU5JX0VWRU5UX0lFX0NPVU5URE9XTjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjkzMDpcdFx0bXQ3OTk2X21jdV9pZV9jb3VudGRvd24oZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTMxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMzOQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd24sIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQuCgoqKlRyYWNpbmcgYG10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIGBtdDc5OTZfbWN1X3VuaV9yeF91bnNvbGljaXRlZF9ldmVudGAuLi4gaW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgaXMgYSBsaWtlbHkgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWMgdG8gdGhlIG10Nzk5NiBjaGlwc2V0LCBkZWFsaW5nIHdpdGggdW5zb2xpY2l0ZWQgZXZlbnRzIHJlY2VpdmVkIG92ZXIgdGhlIE1DVSAoTWljcm9jb250cm9sbGVyIFVuaXQpIGludGVyZmFjZS4gVGhlICYjMzQ7VU5JJiMzNDsgbGlrZWx5IHJlZmVycyB0byB0aGUgVW5pZmllZCBOZXR3b3JrIEludGVyZmFjZSBvciBhIHNpbWlsYXIgYWJzdHJhY3Rpb24gbGF5ZXIuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdoYXQmIzM5O3MgdGhlIHRyaWdnZXJpbmcgZXZlbnQgZm9yIHRoaXMgZnVuY3Rpb24gY2FsbD8gSXMgaXQgYW4gaW50ZXJydXB0LCBhIHRpbWVyLCBvciBhIHBvbGw/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIGJlIGNydWNpYWwgaW4gZmlndXJpbmcgb3V0IHRoZSBmbG93IG9mIGV4ZWN1dGlvbi4KClRoZW4sIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc291cmNlIG9mIHRoZSB1bnNvbGljaXRlZCBldmVudC4gV2hhdCBtZXNzYWdlLCBvciBkYXRhIHN0cnVjdHVyZSwgaXMgYmVpbmcgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbj8gSeKAmWxsIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBtdDc5OTZfbWN1X3VuaV9yeF91bnNvbGljaXRlZF9ldmVudGAgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBkYXRhIGlzIHJlYWQgZnJvbSB0aGUgTUNVLiBPZnRlbiwgdGhpcyBpbnZvbHZlcyBsb29raW5nIGF0IHRoZSBzaGFyZWQgbWVtb3J5IGJ1ZmZlcnMgb3IgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBpbnZvbHZlZCBpbiB0aGUgY29tbXVuaWNhdGlvbi4KCk5leHQsIEkmIzM5O2xsIGFuYWx5emUgaG93IHRoZSBkYXRhIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBmdW5jdGlvbi4gSXMgaXQgYSBzaW1wbGUgZGlzcGF0Y2ggdG8gYW5vdGhlciBoYW5kbGVyIGJhc2VkIG9uIGFuIGV2ZW50IGNvZGUsIG9yIGRvZXMgaXQgaW52b2x2ZSBtb3JlIGNvbXBsZXggcHJvY2Vzc2luZz8gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQsIGFuZCBob3cgYXJlIHRoZXkgcG9wdWxhdGVkIG9yIG1vZGlmaWVkPyBJcyB0aGVyZSBhbnkgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBkcml2ZXJzLCBmaXJtd2FyZSwgb3IgaGFyZHdhcmUgY29tcG9uZW50cz8gVGhlIGVycm9yIGhhbmRsaW5nIHdpbGwgYmUgY3J1Y2lhbCBoZXJlLCBhbmQgSSB3aWxsIGJlIGxvb2tpbmcgY2xvc2VseSBhdCBob3cgdGhlIGZ1bmN0aW9uIGRlYWxzIHdpdGggbWFsZm9ybWVkIGRhdGEgb3IgdW5leHBlY3RlZCBldmVudHMuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyAobXV0ZXhlcywgc3BpbmxvY2tzLCBzZW1hcGhvcmVzKSB0aGF0IGFyZSBpbnZvbHZlZC4gVGhpcyBpcyBhIGNyaXRpY2FsIGFyZWEgZm9yIGNvbmN1cnJlbmN5IGJ1Z3MsIGVzcGVjaWFsbHkgaW4gYSB3aXJlbGVzcyBkcml2ZXIuIFJhY2UgY29uZGl0aW9ucyBjYW4gbGVhZCB0byBjcmFzaGVzIG9yIGRhdGEgY29ycnVwdGlvbiwgYW5kIEkgaGF2ZSB0byBiZSBwYXJ0aWN1bGFybHkgdmlnaWxhbnQgYWJvdXQgdGhpcy4KCkZpbmFsbHksIEkmIzM5O2xsIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBldmVudC4gV2hhdCBkb2VzIGl0IHNpZ25pZnkgZm9yIHRoZSBzeXN0ZW0/IERvZXMgaXQgcmVxdWlyZSBhbnkgYWN0aW9uIGZyb20gdGhlIGhvc3QsIGxpa2UgcmVjb25maWd1cmluZyBhIHdpcmVsZXNzIGxpbmssIHJlcG9ydGluZyBhbiBlcnJvciwgb3IgdXBkYXRpbmcgc3RhdGU/IEnigJlsbCBoYXZlIHRvIGxvb2sgZm9yIGFueSBjYWxscyB0byBoaWdoZXItbGV2ZWwgQVBJcyBvciBjYWxsYmFja3MsIGVuc3VyaW5nIHRoYXQgdGhlIGRyaXZlciBiZWhhdmVzIGluIGEgd2F5IHRoYXQgZG9lc24mIzM5O3QgdmlvbGF0ZSB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZWZmZWN0IG9uIHRoZSBuZXR3b3Jr4oCZcyBxdWFsaXR5IG9mIHNlcnZpY2UsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTkyMD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6OTIxOm10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05MjIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTk1MD12b2lkIG10Nzk5Nl9tY3VfcnhfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05NTQtXHRpZiAocnhkLVx1MDAzZW9wdGlvbiBcdTAwMjYgTUNVX1VOSV9DTURfVU5TT0xJQ0lURURfRVZFTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjk1NTpcdFx0bXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnQoZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTU2LVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIG10Nzk5NiBNQ1UgUmVjZWl2ZSBFdmVudCBIYW5kbGVyKioKCk9rYXksIHNvIGBtdDc5OTZfbWN1X3J4X2V2ZW50YCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc3lzdGVtIHJlY2VpdmVzIGFuIGV2ZW50IGZyb20gdGhlIGZpcm13YXJlIG9uIHRoYXQgTVQ3OTk2IFBDSWUgY2FyZC4gV2Uga25vdyB0aGlzIGhhcHBlbnMgdmlhIHRoZSBNQ1UmIzM5O3MgcmVjZWl2ZSBxdWV1ZSwgbWVhbmluZyBETUEgYW5kIFBDSSBpbnRlcnJ1cHRzIGFyZSBpbnZvbHZlZCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgY2FsbCBwYXRocy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cy4gV2hlcmUgZXhhY3RseSAqaXMqIGBtdDc5OTZfbWN1X3J4X2V2ZW50YCBiZWluZyBjYWxsZWQgZnJvbT8gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBtYXAgb3V0IHRoZSBmdW5jdGlvbiBjYWxscy4gSSB3YW50IHRvIHNlZSB0aGUgY29tcGxldGUgcGljdHVyZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVycnVwdCBwcm9jZXNzaW5nIGZsb3cgZnJvbSB0aGUgaGFyZHdhcmUgbGV2ZWwgdGhyb3VnaCB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfbWN1X3J4X2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTE2ODY9dm9pZCBtdDc5OTZfcXVldWVfcnhfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTE3MTQtXHRjYXNlIFBLVF9UWVBFX1JYX0VWRU5UOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MTcxNTpcdFx0bXQ3OTk2X21jdV9yeF9ldmVudChkZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNzE2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz05MjE9bXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05NDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo5NTA6dm9pZCBtdDc5OTZfbWN1X3J4X2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05NTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTc5Mz1pbnQgbXQ3OTk2X21jdV90cmlnZ2VyX2Fzc2VydChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjc5NDp2b2lkIG10Nzk5Nl9tY3VfcnhfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC03OTUtdm9pZCBtdDc5OTZfbWN1X2V4aXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDYKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMjY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gdGhlIGNvZGUgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgTVQ3OTk2IFBDSWUgV2ktRmkgY2FyZCBkcml2ZXIgaGFuZGxlcyB1bnNvbGljaXRlZCBldmVudCBUTFYgcGFyc2luZy4gSSBrbm93IHRoYXQgTVQ3OTk2IGlzIGEgTWVkaWFUZWstc3BlY2lmaWMgZHJpdmVyLCBtZWFuaW5nIGl0JiMzOTtzIHRpZWQgdG8gdGhlaXIgaGFyZHdhcmUuIEFuZCwgYXMgc3VzcGVjdGVkLCBpdCBuZWVkcyAqcmVhbCogUENJZSBoYXJkd2FyZSwgYSB2ZW5kb3IgQVNJQyBzcGVjaWZpY2FsbHksIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQgaW4gYSB2aXJ0dWFsIG1hY2hpbmUgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4KCkdpdmVuIHRoYXQgZGVwZW5kZW5jeSwgSSYjMzk7bSBjb25maXJtaW5nIHRoYXQgdGhpcyBtb2RpZmllZCBjb2RlIGlzIHNpbXBseSB1bnJlYWNoYWJsZSBieSBzeXprYWxsZXImIzM5O3MgY3VycmVudCBjYXBhYmlsaXRpZXMuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgc3RydWN0dXJhbCBsaW1pdGF0aW9uOyB5b3UgY2FuJiMzOTt0IHRlc3QgaXQgd2l0aG91dCB0aGUgcHJvcGVyIGhhcmR3YXJlIHNldHVwLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmdXp6aW5nIGNyaXRlcmlhLiBUaGUgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBgbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oKWAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY2AsIGRlYWxzIHdpdGggVExWIHBhcnNpbmcuIEJ1dCwgYmVjYXVzZSBNVDc5OTYgaXMgdmVuZG9yLXNwZWNpZmljLCByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMsIGl0JiMzOTtzIGEgZGVhZCBlbmQgZm9yIHVzIGFzIHRoaW5ncyBzdGFuZC4KClNvLCB0aGUgJiMzOTtXb3J0aEZ1enppbmcmIzM5OyBmbGFnIGlzIGRlZmluaXRlbHkgZmFsc2UuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBlbXB0eSwgYW5kIHRoZXJlIGFyZSBubyBgRm9jdXNTeW1ib2xzYCB0byBjb25zaWRlci4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY3kgbWFrZXMgdGhlIGNvZGUgdW5yZWFjaGFibGUuIFRpbWUgdG8gdXNlIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDEzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgTUNVIGV2ZW50IFRMViBwYXJzaW5nIGluIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKCkgd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5OTYgUENJZSB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIE1DVSBldmVudCBUTFYgcGFyc2luZyBpbiBtdDc5OTZfbWN1X2llX2NvdW50ZG93bigpIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3OTk2IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMzoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6MzAuNjU3NTA3OTY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3MDE1NjIxODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBNQ1UgZXZlbnQgVExWIHBhcnNpbmcgaW4gbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oKSB3aXRoaW4gdGhlIE1lZGlhVGVrIE1UNzk5NiBQQ0llIHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6MzAuNjU3NTE0MTQ3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzIwMDIxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YTkzZjUzNzQ3NDJkMjBlOTZlYjU2NWQ4YmM5ZThjMmY0OTVjOTM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMTM6MTI6MjkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY1xcbmluZGV4IGNkNzU4N2NlNWI4YTYuLmY3NGM0YjBiZGEzYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY1xcbkBAIC00OTcsMTAgKzQ5NywxOCBAQCBtdDc5OTZfbWN1X2llX2NvdW50ZG93bihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXG4gXFx0dGFpbCA9IHNrYi1cXHUwMDNlZGF0YSArIHNrYi1cXHUwMDNlbGVuO1xcbiBcXHRkYXRhICs9IHNpemVvZigqaGRyKTtcXG4tXFx0d2hpbGUgKGRhdGEgKyBzaXplb2YoKnRsdikgXFx1MDAzYyB0YWlsIFxcdTAwMjZcXHUwMDI2IGxlMTZfdG9fY3B1KHRsdi1cXHUwMDNlbGVuKSkge1xcbitcXHR3aGlsZSAoZGF0YSArIHNpemVvZigqdGx2KSBcXHUwMDNjPSB0YWlsKSB7XFxuK1xcdFxcdHUxNiB0YWdfbGVuID0gbGUxNl90b19jcHUodGx2LVxcdTAwM2VsZW4pO1xcbitcXG4rXFx0XFx0aWYgKHRhZ19sZW4gXFx1MDAzYyBzaXplb2YoKnRsdikgfHwgZGF0YSArIHRhZ19sZW4gXFx1MDAzZSB0YWlsKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuIFxcdFxcdGV2ZW50ID0gKHN0cnVjdCBtdDc5OTZfbWN1X2NvdW50ZG93bl9ub3RpZnkgKil0bHYtXFx1MDAzZWRhdGE7XFxuIFxcbi1cXHRcXHRjZGF0YS5vbWFjX2lkeCA9IGV2ZW50LVxcdTAwM2VvbWFjX2lkeDtcXG4rXFx0XFx0aWYgKHRhZ19sZW4gXFx1MDAzZT0gc2l6ZW9mKCp0bHYpICsgc2l6ZW9mKCpldmVudCkpXFxuK1xcdFxcdFxcdGNkYXRhLm9tYWNfaWR4ID0gZXZlbnQtXFx1MDAzZW9tYWNfaWR4O1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0XFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHYtXFx1MDAzZXRhZykpIHtcXG4gXFx0XFx0Y2FzZSBVTklfRVZFTlRfSUVfQ09VTlRET1dOX0NTQTpcXG5AQCAtNTE3LDcgKzUyNSw3IEBAIG10Nzk5Nl9tY3VfaWVfY291bnRkb3duKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRkYXRhICs9IGxlMTZfdG9fY3B1KHRsdi1cXHUwMDNlbGVuKTtcXG4rXFx0XFx0ZGF0YSArPSB0YWdfbGVuO1xcbiBcXHRcXHR0bHYgPSAoc3RydWN0IHRsdiAqKWRhdGE7XFxuIFxcdH1cXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjozMS4xOTAzMzY4MDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI2MTY4NzE5OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBNQ1UgZXZlbnQgVExWIHBhcnNpbmcgaW4gbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oKSB3aXRoaW4gdGhlIE1lZGlhVGVrIE1UNzk5NiBQQ0llIHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YTkzZjUzNzQ3NDJkMjBlOTZlYjU2NWQ4YmM5ZThjMmY0OTVjOTM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxMzoxMjoyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmNcbmluZGV4IGNkNzU4N2NlNWI4YTYuLmY3NGM0YjBiZGEzYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmNcbkBAIC00OTcsMTAgKzQ5NywxOCBAQCBtdDc5OTZfbWN1X2llX2NvdW50ZG93bihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0dGFpbCA9IHNrYi1cdTAwM2VkYXRhICsgc2tiLVx1MDAzZWxlbjtcbiBcdGRhdGEgKz0gc2l6ZW9mKCpoZHIpO1xuLVx0d2hpbGUgKGRhdGEgKyBzaXplb2YoKnRsdikgXHUwMDNjIHRhaWwgXHUwMDI2XHUwMDI2IGxlMTZfdG9fY3B1KHRsdi1cdTAwM2VsZW4pKSB7XG4rXHR3aGlsZSAoZGF0YSArIHNpemVvZigqdGx2KSBcdTAwM2M9IHRhaWwpIHtcbitcdFx0dTE2IHRhZ19sZW4gPSBsZTE2X3RvX2NwdSh0bHYtXHUwMDNlbGVuKTtcbitcbitcdFx0aWYgKHRhZ19sZW4gXHUwMDNjIHNpemVvZigqdGx2KSB8fCBkYXRhICsgdGFnX2xlbiBcdTAwM2UgdGFpbClcbitcdFx0XHRicmVhaztcbitcbiBcdFx0ZXZlbnQgPSAoc3RydWN0IG10Nzk5Nl9tY3VfY291bnRkb3duX25vdGlmeSAqKXRsdi1cdTAwM2VkYXRhO1xuIFxuLVx0XHRjZGF0YS5vbWFjX2lkeCA9IGV2ZW50LVx1MDAzZW9tYWNfaWR4O1xuK1x0XHRpZiAodGFnX2xlbiBcdTAwM2U9IHNpemVvZigqdGx2KSArIHNpemVvZigqZXZlbnQpKVxuK1x0XHRcdGNkYXRhLm9tYWNfaWR4ID0gZXZlbnQtXHUwMDNlb21hY19pZHg7XG4rXHRcdGVsc2VcbitcdFx0XHRicmVhaztcbiBcbiBcdFx0c3dpdGNoIChsZTE2X3RvX2NwdSh0bHYtXHUwMDNldGFnKSkge1xuIFx0XHRjYXNlIFVOSV9FVkVOVF9JRV9DT1VOVERPV05fQ1NBOlxuQEAgLTUxNyw3ICs1MjUsNyBAQCBtdDc5OTZfbWN1X2llX2NvdW50ZG93bihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXG4tXHRcdGRhdGEgKz0gbGUxNl90b19jcHUodGx2LVx1MDAzZWxlbik7XG4rXHRcdGRhdGEgKz0gdGFnX2xlbjtcbiBcdFx0dGx2ID0gKHN0cnVjdCB0bHYgKilkYXRhO1xuIFx0fVxuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjMxLjE5MDMzODIzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNDA3NTIxODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgUGF0Y2ggYW5kIEl0cyBDb250ZXh0KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGNhdGNoZXMgbXkgZXllIGlzIHRoZSB0YXJnZXQ6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY2AuIFJpZ2h0IGF3YXksIEknbSB0aGlua2luZyBNZWRpYXRlaywgc28gd2UncmUgdGFsa2luZyBsaWtlbHkgV2ktRmksIGFuZCBzcGVjaWZpY2FsbHkgdGhlaXIgTVQ3OTk2IGNoaXBzZXQuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgYG10Nzk5Nl9tY3VfaWVfY291bnRkb3duYCwgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIEluZm9ybWF0aW9uIEVsZW1lbnQgKElFKSBoYW5kbGluZywgYW5kIGEgcG90ZW50aWFsIGNvdW50ZG93biBtZWNoYW5pc20gd2l0aGluIHRoZSBNZWRpYXRlayBNQ1UgKE1pY3JvY29udHJvbGxlciBVbml0KSBpbnRlcmFjdGlvbi4gSW50ZXJlc3RpbmcuXG5cbk5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG92ZXJhbGwgaGFyZHdhcmUgY29udGV4dCBmb3IgYG10Nzk5NmAuIElzIHRoaXMgYSBQQ0llIGNhcmQgZHJpdmVyLCBhIFVTQiBXaS1GaSBkb25nbGUgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQ291bGQgaXQgYmUgc29tZXRoaW5nIHNpbXVsYXRlZCwgbGlrZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgZXZlbiBRRU1VLCBvciBtYXliZSBVU0IgZ2FkZ2V0IG1vZGU/IENoZWNraW5nIHRoZSBLY29uZmlnLCBhbmQgb3RoZXIgY29kZSB3aXRoaW4gdGhhdCBgbXQ3OTk2YCBkaXJlY3Rvcnkgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBoeXNpY2FsIGludGVyZmFjZSBhbmQgZGVwZW5kZW5jaWVzIGludm9sdmVkLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIG9yIHRoZSB2aXJ0dWFsIHJlcHJlc2VudGF0aW9uIHRoZXJlb2YsIHRvIHByb3Blcmx5IGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgSUUgY291bnRkb3duIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIwNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjM3LjMzMTA5MzIyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTAwODkwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTk2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZzoyOmNvbmZpZyBNVDc5OTZFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5OTYgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6MTY6Y29uZmlnIE1UNzk5Nl9OUFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTE3LVxcdGJvb2wgXFxcIk1UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjM3LjQzMDEwODEwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4MzU4ODc2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnYCBmaWxlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5OTYgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZGlzc2VjdCB0aGUgS2NvbmZpZyBmb3IgdGhlIE1UNzk5NiB3aXJlbGVzcyBkcml2ZXIuIExldCdzIHNlZSB3aGF0J3MgYmVpbmcgY29uZmlndXJlZCBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHByZXNlbnRlZCB0byB0aGUgdXNlciBkdXJpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24uIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBmZWF0dXJlcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFueSBvcHRpb25hbCBtb2R1bGVzIHRoYXQgY2FuIGJlIGFkZGVkLCBhbmQgd2hpY2ggb2YgdGhlc2UgYXJlIGxpa2VseSB0byBiZSBwbGF0Zm9ybS1zcGVjaWZpYyBvciB0aWVkIHRvIGEgcGFydGljdWxhciBzZXQgb2YgTWVkaWF0ZWsgY2hpcHMuXG5cbkknbSBzY2FubmluZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiBzdXBwb3J0IGZvciA4MDIuMTEgc3RhbmRhcmRzIChhL2IvZy9uL2FjL2F4LCBzdXJlbHkpLCBhbnkgc3BlY2lhbCBNZWRpYXRlay1zcGVjaWZpYyBmZWF0dXJlcyBsaWtlIHByb3ByaWV0YXJ5IGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvciBwb3dlciBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb25zLCBhbmQgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHJlZ3VsYXRvcnkgZG9tYWlucyBvciBjb3VudHJ5IGNvZGVzLiBJJ2xsIGJlIGtlZXBpbmcgYSBrZWVuIGV5ZSBvdXQgZm9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cywgbGlrZSBzcGVjaWZpYyBjcnlwdG9ncmFwaHkgbW9kdWxlcyBvciBoYXJkd2FyZSBhY2Nlc3MgbGF5ZXJzLiBBcmUgdGhlcmUgYW55IGZlYXR1cmVzIGdhdGVkIGJlaGluZCBjZXJ0YWluIHByb2Nlc3NvciBhcmNoaXRlY3R1cmVzP1xuXG5NeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGJyZWFkdGggb2YgY29uZmlndXJhYmxlIG9wdGlvbnMgYW5kIGhvdyB0aGV5IGludGVyYWN0LCBhbmQgdG8gdGhlbiBmb3JtIGEgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGFyY2hpdGVjdGVkIGF0IGEgS2NvbmZpZyBsZXZlbC4gSSdsbCBub3RlIGFueSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgZmxhZ3Mgb3Igb3B0aW9ucywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IG1pZ2h0IGhpbnQgYXQgYXJlYXMgd2hlcmUgdGhlIGRyaXZlcidzIHBlcmZvcm1hbmNlIGNhbiBiZSB0d2Vha2VkIG9yIG9wdGltaXplZCwgb3Igd2hlcmUgdGhlcmUgbWlnaHQgYmUgcG90ZW50aWFsIGlzc3VlcyBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzIG9yIGhhcmR3YXJlIHZhcmlhbnRzLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGZ1bGx5IHVuZGVyc3RhbmRpbmcgaG93IHRvIGJlc3QgdXNlIGFuZCBjb25maWd1cmUgdGhpcyBkcml2ZXIgd2l0aGluIG15IG93biBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkyOCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjQwLjI2NTk5NzQ2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzk5NkVcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5OTYgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcdHNlbGVjdCBSRUxBWVxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzk5Ni1iYXNlZCBQQ0llIHdpcmVsZXNzIGRldmljZXMsXFxuICAxMTpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgY29uY3VycmVudCB0cmktYmFuZCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeixcXG4gIDEyOlxcdFxcdCAgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlIDR4NDo0U1MgNDA5Ni1RQU0sIDMyME1IeiBjaGFubmVscy5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb25maWcgTVQ3OTk2X05QVVxcbiAgMTc6XFx0XFx0Ym9vbCBcXFwiTVQ3OTk2IChQQ0llKSBOUFUgc3VwcG9ydFxcXCJcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTVQ3OTk2RVxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzZfQ09SRT1ORVRfQUlST0hBX05QVVxcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzZfTlBVXFxuICAyMTpcXHRcXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NDAuMjY2MDUzODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTc2NDg5MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBNVDc5OTYgQ29ubmVjdGl2aXR5IE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGludGVyZmFjZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE1UNzk5NiBjaGlwc2V0LiBNeSBpbml0aWFsIGh1bmNoIGlzIFBDSWUsIGJ1dCBsZXQncyBub3QgYXNzdW1lIGFueXRoaW5nLiBUaGUgYmVzdCBzdGFydGluZyBwb2ludCBpcyB0byBkaXZlIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyIGFyZWEuIEknbGwgemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2AgZGlyZWN0b3J5IGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdGhlIGBNYWtlZmlsZWAgbG9jYXRlZCB3aXRoaW4uIFRoZSBNYWtlZmlsZSBzaG91bGQgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGluY2x1ZGVkIHNvdXJjZSBmaWxlcywgd2hpY2ggd2lsbCwgaW4gdHVybiwgaW5kaWNhdGUgdGhlIHN1cHBvcnRlZCBpbnRlcmZhY2VzLiBJJ2xsIGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIGRpcmVjdG9yeSBjb250ZW50cyB0byBnZXQgYSBob2xpc3RpYyBwaWN0dXJlLiBUaGlzIHNob3VsZCB0ZWxsIG1lIHF1aWNrbHkgd2hldGhlciB3ZSdyZSB0YWxraW5nIFBDSWUgKm9ubHkqLCBvciBpZiB0aGVyZSdzIFVTQiwgU0RJTywgb3Igb3RoZXIgaW50ZXJmYWNlcyBpbiBwbGF5IGFzIHdlbGwuIFRpbWUgdG8gZ2V0IHRvIHRoZSBjb2RlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzAxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjo0Mi40NDI1NDcyNzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNvcmVkdW1wLmNcIixcbiAgICBcImNvcmVkdW1wLmhcIixcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiZG1hLmNcIixcbiAgICBcImVlcHJvbS5jXCIsXG4gICAgXCJlZXByb20uaFwiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWN1LmNcIixcbiAgICBcIm1jdS5oXCIsXG4gICAgXCJtbWlvLmNcIixcbiAgICBcIm10Nzk5Ni5oXCIsXG4gICAgXCJucHUuY1wiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInJlZ3MuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjo0Mi40NDI2NzYxNDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzMxODg2NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgTVQ3OTk2KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhpcyBgbXQ3OTk2YCBpcyBleGNsdXNpdmVseSBhIFBDSWUgZGV2aWNlLiBEaXZpbmcgaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvYCBkaXJlY3RvcnksIHRoZSBwcmVzZW5jZSBvZiBmaWxlcyBsaWtlIGBwY2kuY2AsIGBtbWlvLmNgLCBhbmQgYG1jdS5jYCBzdHJvbmdseSBzdWdnZXN0cyBhIFBDSWUgaW1wbGVtZW50YXRpb24uIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgYSBxdWljayBzZWFyY2ggY29uZmlybXMgdGhhdCB0aGUgTVQ3OTk2IGlzIGluZGVlZCBhIE1lZGlhVGVrIFdpLUZpIDcgUENJZSBjaGlwLlxuXG5Ob3csIGxldCdzIGFwcGx5IHRoZSBDT1JFIFRSSUFHRSBQSElMT1NPUEhZJ3MgbmVnYXRpdmUgY3JpdGVyaWEuIFNlY3Rpb24gMiBkaWN0YXRlcyB3aGVuIHdlIGNhbiBjb25maWRlbnRseSBzYXkgYSB0YXJnZXQgaXNuJ3Qgd29ydGggZnV6emluZy4gVGhlIGtleSBjbGF1c2UgaXM6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuLi4gcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4qXCJcblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiBJcyB0aGUgTVQ3OTk2IGFjY2Vzc2libGUgd2l0aGluIHN0YW5kYXJkIFFFTVUgb3IgYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRT8gVGhlIGFuc3dlciBpcyBhIGRlZmluaXRpdmUgbm8uIFRoaXMgaXMgYSBkZWRpY2F0ZWQgTWVkaWFUZWsgUENJZSB3aXJlbGVzcyBOSUMgKE1UNzk5NiwgTVQ3OTkyLCBvciBNVDc5OTApLCByZXF1aXJpbmcgcGh5c2ljYWwgTWVkaWFUZWsgaGFyZHdhcmUuIEl0J3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLiBJdCdzIG5vdCBhY2Nlc3NpYmxlIHZpYSBVU0IgZ2FkZ2V0IG9yIGV2ZW4gYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggaXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIHRoYXQgaGFzIHZlbmRvci1zcGVjaWZpYyBNQ1UgZmlybXdhcmUgYW5kIHJlbGllcyBvbiBQQ0llIERNQSBhbmQgTU1JTy4gSXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLi4uIGNvdWxkIHRoZXJlIGJlIHNvbWUgYmFja2Rvb3IsIHNvbWUgd2F5IGBtdDc5OTZfbWN1X2llX2NvdW50ZG93bmAgaXMgcmVhY2hhYmxlIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IFRoaXMgbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gYG10Nzk5Nl9tY3VfaWVfY291bnRkb3duYC4gVGhhdCB3aWxsIGRlY2lkZSBpZiBpdCBpcyByZWFjaGFibGUgd2l0aG91dCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMTQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTgsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjQ2Ljc3NDU2NDg3M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MTI4MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9tY3VfaWVfY291bnRkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00NzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NzY6bXQ3OTk2X21jdV9pZV9jb3VudGRvd24oc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9OTIxPW10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05MjktXFx0Y2FzZSBNQ1VfVU5JX0VWRU5UX0lFX0NPVU5URE9XTjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo5MzA6XFx0XFx0bXQ3OTk2X21jdV9pZV9jb3VudGRvd24oZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTkzMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NDYuODgwNjk5NTUzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4MTkwODAxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQuXG5cbioqVHJhY2luZyBgbXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIGBtdDc5OTZfbWN1X3VuaV9yeF91bnNvbGljaXRlZF9ldmVudGAuLi4gaW1tZWRpYXRlbHksIEknbSB0aGlua2luZywgdGhpcyBpcyBhIGxpa2VseSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpYyB0byB0aGUgbXQ3OTk2IGNoaXBzZXQsIGRlYWxpbmcgd2l0aCB1bnNvbGljaXRlZCBldmVudHMgcmVjZWl2ZWQgb3ZlciB0aGUgTUNVIChNaWNyb2NvbnRyb2xsZXIgVW5pdCkgaW50ZXJmYWNlLiBUaGUgXCJVTklcIiBsaWtlbHkgcmVmZXJzIHRvIHRoZSBVbmlmaWVkIE5ldHdvcmsgSW50ZXJmYWNlIG9yIGEgc2ltaWxhciBhYnN0cmFjdGlvbiBsYXllci5cblxuRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaGF0J3MgdGhlIHRyaWdnZXJpbmcgZXZlbnQgZm9yIHRoaXMgZnVuY3Rpb24gY2FsbD8gSXMgaXQgYW4gaW50ZXJydXB0LCBhIHRpbWVyLCBvciBhIHBvbGw/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIGJlIGNydWNpYWwgaW4gZmlndXJpbmcgb3V0IHRoZSBmbG93IG9mIGV4ZWN1dGlvbi5cblxuVGhlbiwgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNvdXJjZSBvZiB0aGUgdW5zb2xpY2l0ZWQgZXZlbnQuIFdoYXQgbWVzc2FnZSwgb3IgZGF0YSBzdHJ1Y3R1cmUsIGlzIGJlaW5nIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24/IEnigJlsbCBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgbXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnRgIHRvIHRoZSBwb2ludCB3aGVyZSB0aGUgZGF0YSBpcyByZWFkIGZyb20gdGhlIE1DVS4gT2Z0ZW4sIHRoaXMgaW52b2x2ZXMgbG9va2luZyBhdCB0aGUgc2hhcmVkIG1lbW9yeSBidWZmZXJzIG9yIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgaW52b2x2ZWQgaW4gdGhlIGNvbW11bmljYXRpb24uXG5cbk5leHQsIEknbGwgYW5hbHl6ZSBob3cgdGhlIGRhdGEgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGZ1bmN0aW9uLiBJcyBpdCBhIHNpbXBsZSBkaXNwYXRjaCB0byBhbm90aGVyIGhhbmRsZXIgYmFzZWQgb24gYW4gZXZlbnQgY29kZSwgb3IgZG9lcyBpdCBpbnZvbHZlIG1vcmUgY29tcGxleCBwcm9jZXNzaW5nPyBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgdXNlZCwgYW5kIGhvdyBhcmUgdGhleSBwb3B1bGF0ZWQgb3IgbW9kaWZpZWQ/IElzIHRoZXJlIGFueSBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGRyaXZlcnMsIGZpcm13YXJlLCBvciBoYXJkd2FyZSBjb21wb25lbnRzPyBUaGUgZXJyb3IgaGFuZGxpbmcgd2lsbCBiZSBjcnVjaWFsIGhlcmUsIGFuZCBJIHdpbGwgYmUgbG9va2luZyBjbG9zZWx5IGF0IGhvdyB0aGUgZnVuY3Rpb24gZGVhbHMgd2l0aCBtYWxmb3JtZWQgZGF0YSBvciB1bmV4cGVjdGVkIGV2ZW50cy5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyAobXV0ZXhlcywgc3BpbmxvY2tzLCBzZW1hcGhvcmVzKSB0aGF0IGFyZSBpbnZvbHZlZC4gVGhpcyBpcyBhIGNyaXRpY2FsIGFyZWEgZm9yIGNvbmN1cnJlbmN5IGJ1Z3MsIGVzcGVjaWFsbHkgaW4gYSB3aXJlbGVzcyBkcml2ZXIuIFJhY2UgY29uZGl0aW9ucyBjYW4gbGVhZCB0byBjcmFzaGVzIG9yIGRhdGEgY29ycnVwdGlvbiwgYW5kIEkgaGF2ZSB0byBiZSBwYXJ0aWN1bGFybHkgdmlnaWxhbnQgYWJvdXQgdGhpcy5cblxuRmluYWxseSwgSSdsbCBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZXZlbnQuIFdoYXQgZG9lcyBpdCBzaWduaWZ5IGZvciB0aGUgc3lzdGVtPyBEb2VzIGl0IHJlcXVpcmUgYW55IGFjdGlvbiBmcm9tIHRoZSBob3N0LCBsaWtlIHJlY29uZmlndXJpbmcgYSB3aXJlbGVzcyBsaW5rLCByZXBvcnRpbmcgYW4gZXJyb3IsIG9yIHVwZGF0aW5nIHN0YXRlPyBJ4oCZbGwgaGF2ZSB0byBsb29rIGZvciBhbnkgY2FsbHMgdG8gaGlnaGVyLWxldmVsIEFQSXMgb3IgY2FsbGJhY2tzLCBlbnN1cmluZyB0aGF0IHRoZSBkcml2ZXIgYmVoYXZlcyBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgdmlvbGF0ZSB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZWZmZWN0IG9uIHRoZSBuZXR3b3Jr4oCZcyBxdWFsaXR5IG9mIHNlcnZpY2UsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMzksIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjo1MC42OTk3ODI2MDlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NTcwOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz05MjA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo5MjE6bXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9OTUwPXZvaWQgbXQ3OTk2X21jdV9yeF9ldmVudChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTU0LVxcdGlmIChyeGQtXFx1MDAzZW9wdGlvbiBcXHUwMDI2IE1DVV9VTklfQ01EX1VOU09MSUNJVEVEX0VWRU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6OTU1OlxcdFxcdG10Nzk5Nl9tY3VfdW5pX3J4X3Vuc29saWNpdGVkX2V2ZW50KGRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy05NTYtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMzoxMjo1MC43ODUzNTk2MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjI4MjM1NTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIG10Nzk5NiBNQ1UgUmVjZWl2ZSBFdmVudCBIYW5kbGVyKipcblxuT2theSwgc28gYG10Nzk5Nl9tY3VfcnhfZXZlbnRgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBzeXN0ZW0gcmVjZWl2ZXMgYW4gZXZlbnQgZnJvbSB0aGUgZmlybXdhcmUgb24gdGhhdCBNVDc5OTYgUENJZSBjYXJkLiBXZSBrbm93IHRoaXMgaGFwcGVucyB2aWEgdGhlIE1DVSdzIHJlY2VpdmUgcXVldWUsIG1lYW5pbmcgRE1BIGFuZCBQQ0kgaW50ZXJydXB0cyBhcmUgaW52b2x2ZWQsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludHMuIFdoZXJlIGV4YWN0bHkgKmlzKiBgbXQ3OTk2X21jdV9yeF9ldmVudGAgYmVpbmcgY2FsbGVkIGZyb20/IExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBtYXAgb3V0IHRoZSBmdW5jdGlvbiBjYWxscy4gSSB3YW50IHRvIHNlZSB0aGUgY29tcGxldGUgcGljdHVyZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVycnVwdCBwcm9jZXNzaW5nIGZsb3cgZnJvbSB0aGUgaGFyZHdhcmUgbGV2ZWwgdGhyb3VnaCB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzAwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NTMuNDEzNTk5MzA5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTkyNDY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5OTZfbWN1X3J4X2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0xNjg2PXZvaWQgbXQ3OTk2X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTE3MTQtXFx0Y2FzZSBQS1RfVFlQRV9SWF9FVkVOVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoxNzE1OlxcdFxcdG10Nzk5Nl9tY3VfcnhfZXZlbnQoZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTE3MTYtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz05MjE9bXQ3OTk2X21jdV91bmlfcnhfdW5zb2xpY2l0ZWRfZXZlbnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTk0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo5NTA6dm9pZCBtdDc5OTZfbWN1X3J4X2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtOTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTc5Mz1pbnQgbXQ3OTk2X21jdV90cmlnZ2VyX2Fzc2VydChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo3OTQ6dm9pZCBtdDc5OTZfbWN1X3J4X2V2ZW50KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTc5NS12b2lkIG10Nzk5Nl9tY3VfZXhpdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NTMuNDgzNTI4NDI0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NzU0OTk1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGNoYW5nZXMgYXJlIGRlZmluaXRlbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIE1UNzk5NiBQQ0llIFdpLUZpIGNhcmQgZHJpdmVyIGhhbmRsZXMgdW5zb2xpY2l0ZWQgZXZlbnQgVExWIHBhcnNpbmcuIEkga25vdyB0aGF0IE1UNzk5NiBpcyBhIE1lZGlhVGVrLXNwZWNpZmljIGRyaXZlciwgbWVhbmluZyBpdCdzIHRpZWQgdG8gdGhlaXIgaGFyZHdhcmUuIEFuZCwgYXMgc3VzcGVjdGVkLCBpdCBuZWVkcyAqcmVhbCogUENJZSBoYXJkd2FyZSwgYSB2ZW5kb3IgQVNJQyBzcGVjaWZpY2FsbHksIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQgaW4gYSB2aXJ0dWFsIG1hY2hpbmUgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS5cblxuR2l2ZW4gdGhhdCBkZXBlbmRlbmN5LCBJJ20gY29uZmlybWluZyB0aGF0IHRoaXMgbW9kaWZpZWQgY29kZSBpcyBzaW1wbHkgdW5yZWFjaGFibGUgYnkgc3l6a2FsbGVyJ3MgY3VycmVudCBjYXBhYmlsaXRpZXMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBzdHJ1Y3R1cmFsIGxpbWl0YXRpb247IHlvdSBjYW4ndCB0ZXN0IGl0IHdpdGhvdXQgdGhlIHByb3BlciBoYXJkd2FyZSBzZXR1cC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGZ1enppbmcgY3JpdGVyaWEuIFRoZSBwYXRjaCwgc3BlY2lmaWNhbGx5IGluIGBtdDc5OTZfbWN1X2llX2NvdW50ZG93bigpYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jYCwgZGVhbHMgd2l0aCBUTFYgcGFyc2luZy4gQnV0LCBiZWNhdXNlIE1UNzk5NiBpcyB2ZW5kb3Itc3BlY2lmaWMsIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBpdCdzIGEgZGVhZCBlbmQgZm9yIHVzIGFzIHRoaW5ncyBzdGFuZC5cblxuU28sIHRoZSAnV29ydGhGdXp6aW5nJyBmbGFnIGlzIGRlZmluaXRlbHkgZmFsc2UuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBlbXB0eSwgYW5kIHRoZXJlIGFyZSBubyBgRm9jdXNTeW1ib2xzYCB0byBjb25zaWRlci4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY3kgbWFrZXMgdGhlIGNvZGUgdW5yZWFjaGFibGUuIFRpbWUgdG8gdXNlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNDYsIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDEzOjEyOjU3LjM1OTAzMTU3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIE1DVSBldmVudCBUTFYgcGFyc2luZyBpbiBtdDc5OTZfbWN1X2llX2NvdW50ZG93bigpIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3OTk2IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBNQ1UgZXZlbnQgVExWIHBhcnNpbmcgaW4gbXQ3OTk2X21jdV9pZV9jb3VudGRvd24oKSB3aXRoaW4gdGhlIE1lZGlhVGVrIE1UNzk5NiBQQ0llIHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTM6MTI6NTcuMzU5MDU4ODUzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhgq27[1] Phase: Running StartedAt: 2026-09-07 13:13:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhgq27[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 13:13:08 +0000 UTC FinishedAt: 2026-09-07 13:13:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}