Name: series-workflow4qlxq Phase: Succeeded StartedAt: 2026-07-15 07:03:07 +0000 UTC FinishedAt: 2026-07-15 09:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[0] Phase: Succeeded StartedAt: 2026-07-15 07:03:07 +0000 UTC FinishedAt: 2026-07-15 07:25:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 07:03:07 +0000 UTC FinishedAt: 2026-07-15 07:25:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IOMMUFD", "VFIO", "VFIO_GROUP", "VFIO_CONTAINER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IOMMUFD", "VFIO", "VFIO_GROUP", "VFIO_CONTAINER" ], "series_id": "f8cc4148-7df3-4e98-a762-ccb171717eb5" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "batch_from_domain", "vfio_unmap_unpin" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPTU1VRkQmIzM0OywKICAgICYjMzQ7VkZJTyYjMzQ7LAogICAgJiMzNDtWRklPX0dST1VQJiMzNDssCiAgICAmIzM0O1ZGSU9fQ09OVEFJTkVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmF0Y2hfZnJvbV9kb21haW4mIzM0OywKICAgICYjMzQ7dmZpb191bm1hcF91bnBpbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGNvbmRfcmVzY2hlZCgpIHRvIGxvb3BzIGluIGJhdGNoX2Zyb21fZG9tYWluIGFuZCB2ZmlvX3VubWFwX3VucGluIHRvIHByZXZlbnQgc29mdCBsb2NrdXBzIGR1cmluZyBsYXJnZSB1bm1hcC91bnBpbiBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgYnkgeWllbGRpbmcgdGhlIENQVS4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIHNvZnQgbG9ja3VwIGlzIGZpeGVkIGFuZCBubyBuZXcgaXNzdWVzIChsaWtlIHNjaGVkdWxpbmcgd2hpbGUgYXRvbWljKSBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUyMDNmMTc2YTc4NmE5NWRiOTg4YmU5MzU5MzU2MTk5NWE0ZjM3MmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNzoyMzo0MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYyBiL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXG5pbmRleCA5YmRiMjk0NWFmZTFlYi4uZTQ3ODc3MWMwY2NmNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcbkBAIC00MTIsNiAmIzQzOzQxMiw3IEBAIHN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxuIFx0dW5zaWduZWQgaW50IHBhZ2Vfb2Zmc2V0ID0gMDtcbiBcdHVuc2lnbmVkIGxvbmcgaW92YTtcbiBcdHBoeXNfYWRkcl90IHBoeXM7XG4mIzQzO1x0aW50IGkgPSAwO1xuIFxuIFx0aW92YSA9IGlvcHRfYXJlYV9pbmRleF90b19pb3ZhKGFyZWEsIHN0YXJ0X2luZGV4KTtcbiBcdGlmIChzdGFydF9pbmRleCA9PSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpXG5AQCAtNDI4LDYgJiM0Mzs0MjksOSBAQCBzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcbiBcdFx0aW92YSAmIzQzOz0gUEFHRV9TSVpFIC0gcGFnZV9vZmZzZXQ7XG4gXHRcdHBhZ2Vfb2Zmc2V0ID0gMDtcbiBcdFx0c3RhcnRfaW5kZXgmIzQzOyYjNDM7O1xuJiM0MztcbiYjNDM7XHRcdGlmICgoJiM0MzsmIzQzO2kgJSBCSVQoUFVEX09SREVSKSkgPT0gMClcbiYjNDM7XHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG5pbmRleCBjODE1MWJhNTRkZTMzYS4uZTc4YmMwN2Q5YjZlOGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG5AQCAtMTE1Myw2ICYjNDM7MTE1Myw3IEBAIHN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSxcbiBcdGludCB1bm1hcHBlZF9yZWdpb25fY250ID0gMDtcbiBcdGxvbmcgdW5sb2NrZWQgPSAwO1xuIFx0c2l6ZV90IHBvcyA9IDA7XG4mIzQzO1x0aW50IGkgPSAwO1xuIFxuIFx0aWYgKCFkbWEtXHUwMDNlc2l6ZSlcbiBcdFx0cmV0dXJuIDA7XG5AQCAtMTE5Niw2ICYjNDM7MTE5Nyw4IEBAIHN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSxcbiBcdFx0XHRuZXh0ID0gaW9tbXVfaW92YV90b19waHlzKGRvbWFpbi1cdTAwM2Vkb21haW4sIGlvdmEgJiM0MzsgbGVuKTtcbiBcdFx0XHRpZiAobmV4dCAhPSBwaHlzICYjNDM7IGxlbilcbiBcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRpZiAoKCYjNDM7JiM0MztpICUgQklUKFBVRF9PUkRFUikpID09IDApXG4mIzQzO1x0XHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4gXHRcdH1cbiBcbiBcdFx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT01NVUZEJiMzNDssCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19HUk9VUCYjMzQ7LAogICAgJiMzNDtWRklPX0NPTlRBSU5FUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhdGNoX2Zyb21fZG9tYWluJiMzNDssCiAgICAmIzM0O3ZmaW9fdW5tYXBfdW5waW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBjb25kX3Jlc2NoZWQoKSB0byBsb29wcyBpbiBiYXRjaF9mcm9tX2RvbWFpbiBhbmQgdmZpb191bm1hcF91bnBpbiB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcyBkdXJpbmcgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBzb2Z0IGxvY2t1cCBpcyBmaXhlZCBhbmQgbm8gbmV3IGlzc3VlcyAobGlrZSBzY2hlZHVsaW5nIHdoaWxlIGF0b21pYykgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUyMDNmMTc2YTc4NmE5NWRiOTg4YmU5MzU5MzU2MTk5NWE0ZjM3MmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAwNzoyMzo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jIGIvZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMKaW5kZXggOWJkYjI5NDVhZmUxZWIuLmU0Nzg3NzFjMGNjZjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYwpAQCAtNDEyLDYgJiM0Mzs0MTIsNyBAQCBzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCwKIAl1bnNpZ25lZCBpbnQgcGFnZV9vZmZzZXQgPSAwOwogCXVuc2lnbmVkIGxvbmcgaW92YTsKIAlwaHlzX2FkZHJfdCBwaHlzOwomIzQzOwlpbnQgaSA9IDA7CiAKIAlpb3ZhID0gaW9wdF9hcmVhX2luZGV4X3RvX2lvdmEoYXJlYSwgc3RhcnRfaW5kZXgpOwogCWlmIChzdGFydF9pbmRleCA9PSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpCkBAIC00MjgsNiAmIzQzOzQyOSw5IEBAIHN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLAogCQlpb3ZhICYjNDM7PSBQQUdFX1NJWkUgLSBwYWdlX29mZnNldDsKIAkJcGFnZV9vZmZzZXQgPSAwOwogCQlzdGFydF9pbmRleCYjNDM7JiM0Mzs7CiYjNDM7CiYjNDM7CQlpZiAoKCYjNDM7JiM0MztpICUgQklUKFBVRF9PUkRFUikpID09IDApCiYjNDM7CQkJY29uZF9yZXNjaGVkKCk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jIGIvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYwppbmRleCBjODE1MWJhNTRkZTMzYS4uZTc4YmMwN2Q5YjZlOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYwpAQCAtMTE1Myw2ICYjNDM7MTE1Myw3IEBAIHN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSwKIAlpbnQgdW5tYXBwZWRfcmVnaW9uX2NudCA9IDA7CiAJbG9uZyB1bmxvY2tlZCA9IDA7CiAJc2l6ZV90IHBvcyA9IDA7CiYjNDM7CWludCBpID0gMDsKIAogCWlmICghZG1hLSZndDtzaXplKQogCQlyZXR1cm4gMDsKQEAgLTExOTYsNiAmIzQzOzExOTcsOCBAQCBzdGF0aWMgbG9uZyB2ZmlvX3VubWFwX3VucGluKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEsCiAJCQluZXh0ID0gaW9tbXVfaW92YV90b19waHlzKGRvbWFpbi0mZ3Q7ZG9tYWluLCBpb3ZhICYjNDM7IGxlbik7CiAJCQlpZiAobmV4dCAhPSBwaHlzICYjNDM7IGxlbikKIAkJCQlicmVhazsKJiM0MzsJCQlpZiAoKCYjNDM7JiM0MztpICUgQklUKFBVRF9PUkRFUikpID09IDApCiYjNDM7CQkJCWNvbmRfcmVzY2hlZCgpOwogCQl9CiAKIAkJLyoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDU2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIERlY2lzaW9uOiBZZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIGFkZGluZyBgY29uZF9yZXNjaGVkKClgIGNhbGxzIHdpdGhpbiBsb29wcyBpbiBgZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNgIGFuZCBgZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgaW5zaWRlIGBiYXRjaF9mcm9tX2RvbWFpbmAgKGlvbW11ZmQpIGFuZCBgdmZpb191bm1hcF91bnBpbmAgKHZmaW8pLiBUaGUgZ29hbCBpcyB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcyBkdXJpbmcgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4KCk15IGluaXRpYWwgZ3V0IHJlYWN0aW9uIHdhcyB0aGF0IGZ1enppbmcgdGhpcyBtaWdodCBub3QgYmUgZnJ1aXRmdWwuIFR5cGljYWxseSwgY2hhbmdlcyBpbnZvbHZpbmcganVzdCBgY29uZF9yZXNjaGVkKClgIGFyZSBsb3cteWllbGQgZm9yIGZ1enppbmcsIHVubGVzcyBpdCYjMzk7cyBhIHNwZWNpZmljIGJ1Zy1maXggd2Ugd2FudCB0byAqZ3VhcmFudGVlKiBkb2VzbiYjMzk7dCByZXN1cmZhY2UuIFN5emthbGxlciBpc24mIzM5O3QgZ3JlYXQgYXQgdGFyZ2V0aW5nIHNvZnQgbG9ja3VwcyBkaXJlY3RseSwgYW5kIGBjb25kX3Jlc2NoZWQoKWAgaXMsIGFmdGVyIGFsbCwganVzdCBhIHNjaGVkdWxpbmcgaGludC4gSG93ZXZlciwgdGhlIGluc3RydWN0aW9ucyBzdGF0ZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGlmIHRoZXJlJiMzOTtzIG5vIGFsdGVyYXRpb24gb2YgZnVuY3Rpb25hbCBmbG93LgoKQnV0IHdhaXQsIHRoaXMgKmRvZXMqIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyEgQWRkaW5nIGBjb25kX3Jlc2NoZWQoKWAgY2xlYXJseSAqZG9lcyogaW1wYWN0IHRoZSBzY2hlZHVsaW5nIGJlaGF2aW9yIG9mIHRob3NlIGxvb3BzLCBldmVuIGlmIGl0JiMzOTtzIHN1YnRsZSwgaXQmIzM5O3MgZnVuY3Rpb25hbC4gSXQmIzM5O3MgZGVzaWduZWQgdG8gbWl0aWdhdGUgYSBzb2Z0IGxvY2t1cCwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNvbmNlcm4uIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgdGhpcyB3b3J0aCBmdXp6aW5nPwoKSSBkaWQgYSBxdWljayBzY2FuIC0gbm8gb3RoZXIgY2hhbmdlcywganVzdCB0aGUgYGNvbmRfcmVzY2hlZCgpYCBjYWxscy4gVGhlIGltcG9ydGFudCB0aGluZyB0byBjb25zaWRlciBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIHRoZXNlIGNoYW5nZXM/IExldCYjMzk7cyBjaGVjayB0aGUgY29uZmlncyBmb3IgSU9NTVVGRCBhbmQgVkZJTy4gTG9va3MgbGlrZSBgQ09ORklHX0lPTU1VRkRgLCBgQ09ORklHX1ZGSU9gLCBhbmQgYENPTkZJR19WRklPX0lPTU1VX1RZUEUxYCBjb250cm9sIHRoZXNlIGZlYXR1cmVzLgoKU28sIHNpbmNlIHRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsLCBhbmQgdGhlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBpbiBhbiBhcHByb3ByaWF0ZSBjb25maWd1cmF0aW9uLCB0aGUgYW5zd2VyIGlzOiAqKnllcywgdGhpcyBtZXJpdHMgZnV6emluZy4qKiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIHRhcmdldCBgYmF0Y2hfZnJvbV9kb21haW5gIGFuZCBgdmZpb191bm1hcF91bnBpbmAgc3BlY2lmaWNhbGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJT01NVUZEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjI6Y29uZmlnIElPTU1VRkRfRFJJVkVSX0NPUkVcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTMtXHRib29sXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjY6Y29uZmlnIElPTU1VRkRcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtJT01NVSBVc2Vyc3BhY2UgQVBJXCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc9MTg9aWYgSU9NTVVGRFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6MTk6Y29uZmlnIElPTU1VRkRfVkZJT19DT05UQUlORVJcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTIwLVx0Ym9vbCBcJiMzNDtJT01NVUZEIHByb3ZpZGVzIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1wmIzM0O1xuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTM4LVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6Mzk6Y29uZmlnIElPTU1VRkRfVEVTVFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDAtXHRib29sIFwmIzM0O0lPTU1VIFVzZXJzcGFjZSBBUEkgVGVzdCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgVkZJTyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGlzIFZGSU8gY29uZmlndXJhdGlvbi4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdHJvdWJsZXNob290aW5nIGFueSBzcGVjaWZpYyBpc3N1ZSwgSSB3YW50IHRvIHRha2UgYSBtZXRob2RpY2FsIGFwcHJvYWNoIGhlcmUsIHN0YXJ0aW5nIHdpdGggYSBjb21wcmVoZW5zaXZlIGNoZWNrLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgZmlyc3Q6IGFyZSB0aGUgSU9NTVUgZ3JvdXBzIHByb3Blcmx5IHNldCB1cD8gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGRldmljZXMgSSBpbnRlbmQgdG8gcGFzc3Rocm91Z2ggYXJlIGlzb2xhdGVkIHdpdGhpbiB0aGVpciBvd24gZ3JvdXBzLCB3aXRob3V0IGFueSBzaGFyZWQgcmVzb3VyY2VzIHRoYXQgY291bGQgY2F1c2UgY29uZmxpY3RzIG9yIGluc3RhYmlsaXR5LgoKVGhlbiwgSSYjMzk7bGwgYmUgZ29pbmcgdGhyb3VnaCB0aGUga2VybmVsIG1vZHVsZXMgdGhhdCBhcmUgbG9hZGVkLiBJcyBgdmZpby1wY2lgIGNvcnJlY3RseSBib3VuZCB0byB0aGUgdGFyZ2V0IGRldmljZXM/IEFyZSBgdmZpb19pb21tdV90eXBlMWAgYW5kIGB2ZmlvYCBtb2R1bGVzIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkPyBJJiMzOTtsbCBhbHNvIGJlIHZlcmlmeWluZyB0aGF0IHRoZSBuZWNlc3NhcnkgZmxhZ3MgYW5kIG9wdGlvbnMgYXJlIHNldC4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkga25vd24gcXVpcmtzIG9yIHdvcmthcm91bmRzIHNwZWNpZmljIHRvIHRoaXMgaGFyZHdhcmUgb3IgaHlwZXJ2aXNvciBzZXR1cD8gSSBuZWVkIHRvIGJlIHN1cmUgYW55IHJlcXVpcmVkIHBhdGNoZXMgb3IgbW9kdWxlcyBmb3IgdGhlIGRldmljZXMgYXJlIGluIHBsYWNlLgoKSSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhlIGdydWIgY29uZmlndXJhdGlvbiBmaWxlLiBUaGUgYm9vdCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgZG91YmxlLWNoZWNrZWQgdG8gbWFrZSBzdXJlIGFsbCB0aGUgcmVxdWlyZWQgSU9NTVUgc2V0dGluZ3MgYW5kIGRldmljZSBibGFja2xpc3RpbmcgYXJlIHByb3Blcmx5IGNvbmZpZ3VyZWQgYXQgdGhlIGtlcm5lbCBsZXZlbC4gVGhpcyBpbmNsdWRlcyB2ZXJpZnlpbmcgdGhlIGBpbnRlbF9pb21tdT1vbmAgb3IgYGFtZF9pb21tdT1vbmAgZmxhZ3MsIGFsb25nIHdpdGggYW55IG5lY2Vzc2FyeSBgaW9tbXU9cHRgIG9yIGBuby1pb21tdWAgZmxhZ3MsIGFuZCBtYWtpbmcgc3VyZSBub3RoaW5nIGlzIGludGVyZmVyaW5nIHdpdGggdGhlIFZGSU8gc2V0dXAuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0IHRoZSBvdmVyYWxsIGVudmlyb25tZW50LiBBcmUgdGhlcmUgYW55IGtub3duIGlzc3VlcyB3aXRoIHRoZSB2aXJ0dWFsaXphdGlvbiBwbGF0Zm9ybSwgaHlwZXJ2aXNvciB2ZXJzaW9uLCBvciBob3N0IG9wZXJhdGluZyBzeXN0ZW0gdGhhdCBjb3VsZCBiZSBhZmZlY3RpbmcgVkZJTz8gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYmFzZSBpcyBzb2xpZCBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGRldGFpbHMgb2YgdGhlIHNwZWNpZmljIGd1ZXN0IGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX0lPTU1VX1RZUEUxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWc9NTI9aWYgVkZJT19DT05UQUlORVJcbmRyaXZlcnMvdmZpby9LY29uZmlnOjUzOmNvbmZpZyBWRklPX0lPTU1VX1RZUEUxXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01NC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggdGhlbSBzdGVwLWJ5LXN0ZXA6CgoqKlZGSU8gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlc2UgSU9NTVUtcmVsYXRlZCBjb25maWdzLiBJJiMzOTt2ZSBnb3QgYElPTU1VRkRgIGFuZCBgVkZJT19JT01NVV9UWVBFMWAgaW4gbWluZCwgdGhvc2UgYXJlIHRoZSBrZXkgcGxheWVycy4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gaXNuJiMzOTt0IGBWRklPX0lPTU1VX1RZUEUxYCBuZXN0ZWQgdW5kZXIgc29tZXRoaW5nPyBZZWFoLCBpdCBpcyEgSXQmIzM5O3MgcGFydCBvZiB0aGUgYFZGSU9fQ09OVEFJTkVSYCBzdWJzeXN0ZW0uIE9rYXksIHRoYXQmIzM5O3MgaW1wb3J0YW50IGNvbnRleHQuIExvb2tzIGxpa2UgSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBgVkZJT19DT05UQUlORVJgIGFuZCBob3cgYFZGSU9fSU9NTVVfVFlQRTFgIGZpdHMgaW50byBpdHMgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgc3RydWN0dXJlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgaGVyZS4gTGV0JiMzOTtzIGRlbHZlIGludG8gYFZGSU9fQ09OVEFJTkVSYCBmaXJzdC4gR290dGEgZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jeSBjaGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkZJT19DT05UQUlORVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZz0zMD1jb25maWcgVkZJT19HUk9VUFxuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnLTM5LVxuZHJpdmVycy92ZmlvL0tjb25maWc6NDA6Y29uZmlnIFZGSU9fQ09OVEFJTkVSXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFZGSU8gY29udGFpbmVyIC9kZXYvdmZpby92ZmlvXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU5MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipDaGVja2luZyBWRklPKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0byB0YWtlIGEgbG9vayBhdCBgVkZJT2AuIFNlZW1zIGxpa2UgdGhpcyBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHdoYXRldmVyIHByb2JsZW0gb3IgdGFzayBpcyBhdCBoYW5kLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgc29saWQgZ3JvdW5kaW5nIGluIHRoZSBiYXNpY3MuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbW9kZWwgb2YgaXRzIGFyY2hpdGVjdHVyZSBhbmQgY2FwYWJpbGl0aWVzIHRvIGFzc2VzcyB0aGUgc2l0dWF0aW9uIHByb3Blcmx5LiBQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIGlzc3VlIHdpdGggcGFzc3Rocm91Z2gsIG9yIG1heWJlIEkmIzM5O20gY29uc2lkZXJpbmcgaXRzIHVzZSBpbiBhIHNwZWNpZmljIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvLiBSZWdhcmRsZXNzLCBhIHF1aWNrIHJldmlldyBvZiB0aGUgYFZGSU9gIGxhbmRzY2FwZSBpcyBlc3NlbnRpYWwgYmVmb3JlIHByb2NlZWRpbmcgZnVydGhlci4gSSBuZWVkIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGN1cnJlbnQsIGFuZCBjb25zaWRlciBhbnkgcmVjZW50IGRldmVsb3BtZW50cyBvciBsaW1pdGF0aW9ucyBJJiMzOTttIGF3YXJlIG9mLiBMZXQmIzM5O3Mgc2VlLi4uIHdoYXQgc3BlY2lmaWNhbGx5IGFtIEkgbG9va2luZyBmb3Igd2l0aGluIGBWRklPYD8gVGhhdCYjMzk7cyB0aGUgbmV4dCBjcml0aWNhbCBxdWVzdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy92ZmlvL0tjb25maWc6MjptZW51Y29uZmlnIFZGSU9cbmRyaXZlcnMvdmZpby9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL0tjb25maWc9MTY9aWYgVkZJT1xuZHJpdmVycy92ZmlvL0tjb25maWc6MTc6Y29uZmlnIFZGSU9fREVWSUNFX0NERVZcbmRyaXZlcnMvdmZpby9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBjZGV2IC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL0tjb25maWctMjktXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzozMDpjb25maWcgVkZJT19HUk9VUFxuZHJpdmVycy92ZmlvL0tjb25maWctMzEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGdyb3VwIC9kZXYvdmZpby8kZ3JvdXBfaWRcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy0zOS1cbmRyaXZlcnMvdmZpby9LY29uZmlnOjQwOmNvbmZpZyBWRklPX0NPTlRBSU5FUlxuZHJpdmVycy92ZmlvL0tjb25maWctNDEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnPTUyPWlmIFZGSU9fQ09OVEFJTkVSXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo1Mzpjb25maWcgVkZJT19JT01NVV9UWVBFMVxuZHJpdmVycy92ZmlvL0tjb25maWctNTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnLTU2LVxuZHJpdmVycy92ZmlvL0tjb25maWc6NTc6Y29uZmlnIFZGSU9fSU9NTVVfU1BBUFJfVENFXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01OC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92ZmlvL0tjb25maWc9NjE9ZW5kaWZcbmRyaXZlcnMvdmZpby9LY29uZmlnLTYyLVxuZHJpdmVycy92ZmlvL0tjb25maWc6NjM6Y29uZmlnIFZGSU9fTk9JT01NVVxuZHJpdmVycy92ZmlvL0tjb25maWctNjQtXHRib29sIFwmIzM0O1ZGSU8gTm8tSU9NTVUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnLTc3LVxuZHJpdmVycy92ZmlvL0tjb25maWc6Nzg6Y29uZmlnIFZGSU9fVklSUUZEXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy03OS1cdGJvb2xcbi0tXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy04Mi1cbmRyaXZlcnMvdmZpby9LY29uZmlnOjgzOmNvbmZpZyBWRklPX0RFQlVHRlNcbmRyaXZlcnMvdmZpby9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFeHBvcnQgVkZJTyBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzkzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBrZXJuZWwgbW9kdWxlcywgdGhpbmtpbmcgdGhyb3VnaCBpdCBsaWtlIEkgd291bGQuCgoqKktlcm5lbCBNb2R1bGUgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZXNlIGtlcm5lbCBtb2R1bGUgcmVxdWlyZW1lbnRzLiBJIGtub3cgd2UgbmVlZCBgSU9NTVVGRGAsIGBWRklPYCwgYFZGSU9fQ09OVEFJTkVSYCwgYW5kIGBWRklPX0lPTU1VX1RZUEUxYC4gSG9sZCBvbiBhIHNlY29uZCwgdGhhdCBgVkZJT19JT01NVV9UWVBFMWAgbW9kdWxlIGRvZXNuJiMzOTt0IGhhdmUgaXRzIG93biBwcm9tcHQsIHdoaWNoIGlzIHVudXN1YWwuIFRoYXQgc3VnZ2VzdHMgaXQmIzM5O3MgYmVpbmcgc2VsZWN0ZWQgaW5kaXJlY3RseSwgd2hpY2ggbWVhbnMgKnNvbWV0aGluZyogaXMgcHVsbGluZyBpdCBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBkcml2aW5nIHRoYXQgZGVwZW5kZW5jeS4gQmV0dGVyIGRpZyBkZWVwZXIgYW5kIHRyYWNrIGRvd24gdGhlIGNvbmZpZyBvcHRpb25zIHRoYXQgZW5hYmxlIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBWRklPX0lPTU1VX1RZUEUxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZz00MD1jb25maWcgVkZJT19DT05UQUlORVJcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cJiMzNDtcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQyOlx0c2VsZWN0IFZGSU9fSU9NTVVfVFlQRTEgaWYgTU1VIFx1MDAyNlx1MDAyNiAoWDg2IHx8IFMzOTAgfHwgQVJNIHx8IEFSTTY0KVxuZHJpdmVycy92ZmlvL0tjb25maWctNDMtXHRkZXBlbmRzIG9uIFZGSU9fR1JPVVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDk0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBhIFNvZnQgTG9ja3VwIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQmIzM5O3MgYWRkaW5nIGBjb25kX3Jlc2NoZWQoKWAgY2FsbHMgd2l0aGluIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4gVGhlIGlkZWEgaXMgdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMsIGFuZCB0aGF0JiMzOTtzIGdvb2QgYmVjYXVzZSBzb2Z0IGxvY2t1cHMgYXJlIGEgdHlwZSBvZiBmdW5jdGlvbmFsIGJ1ZyB0aGF0IFN5emthbGxlciBpcyBhbHJlYWR5IHJlcG9ydGluZy4gSXQgYXBwZWFycyB0aGUgcGF0Y2ggaXMgdXNpbmcgYFZGSU9fQ09OVEFJTkVSYCwgd2hpY2ggaW1wbGllcyB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGBWRklPX0lPTU1VX1RZUEUxYCwgd2hpY2ggbWVhbnMgYElPTU1VRkRgIGFuZCBgVkZJT19DT05UQUlORVJgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUuCgpUaGUgY29yZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhZGRpdGlvbiB3b3J0aCBmdXp6aW5nPyBGcm9tIGEgcHVyZWx5IGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHNpbmNlIHRoZSBjaGFuZ2UgbW9kaWZpZXMgZXhlY3V0aW9uIGZsb3cgYnkgeWllbGRpbmcgdGhlIENQVSAod2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSksIHRoZW4sIHllcywgKldvcnRoRnV6emluZz10cnVlKi4KCkxldCBtZSBjaGVjayB0aGUgZGlmZiBhZ2FpbiwgY29uZmlybWluZyB0aG9zZSBhcmUgdGhlIG9ubHkgY2hhbmdlcy4gQ29ycmVjdCwganVzdCB0aGUgYWRkZWQgYGNvbmRfcmVzY2hlZCgpYCBjYWxscy4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGVuYWJsZSBgSU9NTVVGRGAsIGBWRklPYCwgYW5kIGBWRklPX0NPTlRBSU5FUmAuCgpOb3csIHRoZSBwb3RlbnRpYWwgd3JpbmtsZS4gKkNvdWxkKiBgY29uZF9yZXNjaGVkKClgIGl0c2VsZiBpbnRyb2R1Y2UgYnVncz8gVGhlb3JldGljYWxseSwgeWVzLCBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHJ1bm5pbmcgaW4gYSBjb250ZXh0IHRoYXQgaXNuJiMzOTt0IHByZWVtcHRpYmxlLCBvciBpZiB0aGV5IGhvbGQgc3BpbmxvY2tzLiBBICYjMzQ7c2NoZWR1bGluZyB3aGlsZSBhdG9taWMmIzM0OyBidWcgaXMgYSBwb3NzaWJpbGl0eS4gVGhlcmVmb3JlLCBiZWZvcmUgY29tbWl0dGluZyB0byB0aGUgZnV6emluZyBjYW1wYWlnbiwgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIGBiYXRjaF9mcm9tX2RvbWFpbmAgb3IgYHZmaW9fdW5tYXBfdW5waW5gIGhvbGQgc3BpbmxvY2tzLiBMZXQmIzM5O3MgbG9vayBmb3IgdGhhdCwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiYXRjaF9mcm9tX2RvbWFpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTM5Nz1zdGF0aWMgYm9vbCBiYXRjaF9hZGRfcGZuKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCB1bnNpZ25lZCBsb25nIHBmbilcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDYtICovXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0MDc6c3RhdGljIHZvaWQgYmF0Y2hfZnJvbV9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDgtXHRcdFx0ICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTQzOD1zdGF0aWMgc3RydWN0IHBhZ2UgKipyYXdfcGFnZXNfZnJvbV9kb21haW4oc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ2MS0vKiBDb250aW51ZXMgcmVhZGluZyBhIGRvbWFpbiB1bnRpbCB3ZSByZWFjaCBhIGRpc2NvbnRpbnVpdHkgaW4gdGhlIHBmbnMuICovXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NjI6c3RhdGljIHZvaWQgYmF0Y2hfZnJvbV9kb21haW5fY29udGludWUoc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NjMtXHRcdFx0XHQgICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ3MC1cdGJhdGNoLVx1MDAzZWFycmF5X3NpemUgPSBiYXRjaC1cdTAwM2VlbmQ7XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NzE6XHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCwgbGFzdF9pbmRleCk7XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NzItXHRiYXRjaC1cdTAwM2VhcnJheV9zaXplID0gYXJyYXlfc2l6ZTtcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xMTcyPXN0YXRpYyBpbnQgcGZuX3JlYWRlcl9maWxsX3NwYW4oc3RydWN0IHBmbl9yZWFkZXIgKnBmbnMpXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMS1cdFx0LyogVGhlIHN0b3JhZ2VfZG9tYWluIGNhbm5vdCBjaGFuZ2Ugd2l0aG91dCB0aGUgcGFnZXMgbXV0ZXggKi9cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjEyMDI6XHRcdGJhdGNoX2Zyb21fZG9tYWluKFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMy1cdFx0XHRcdTAwMjZwZm5zLVx1MDAzZWJhdGNoLCBhcmVhLVx1MDAzZXN0b3JhZ2VfZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xNjgxPWlvcHRfYXJlYV91bnBpbl9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY5OC1cdFx0XHRcdFx0c3RhcnRfaW5kZXgpO1xuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTY5OTpcdFx0XHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydCxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3MDAtXHRcdFx0XHRcdCAgbGFzdF9pbmRleCk7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcxOS1cdFx0ICAgIGxhc3RfaW5kZXggIT0gcmVhbF9sYXN0X2luZGV4KVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTcyMDpcdFx0XHRiYXRjaF9mcm9tX2RvbWFpbl9jb250aW51ZShiYXRjaCwgZG9tYWluLCBhcmVhLFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcyMS1cdFx0XHRcdFx0XHQgICBsYXN0X2luZGV4ICYjNDM7IDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MDQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGB2ZmlvX3VubWFwX3VucGluYCoqCgpPa2F5LCB0aW1lIHRvIGNpcmNsZSBiYWNrIHRvIGB2ZmlvX3VubWFwX3VucGluYC4gSSBuZWVkIHRvIHJldmlldyBpdHMgbG9naWMsIGVzcGVjaWFsbHkgaW4gcmVsYXRpb24gdG8gdGhlIG92ZXJhbGwgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3kgd2l0aGluIFZGSU8uIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIHVubWFwcGluZyBhbmQgdW5waW5uaW5nIGFyZSBjb3JyZWN0bHkgc3luY2hyb25pemVkLCBwYXJ0aWN1bGFybHkgY29uc2lkZXJpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBhdG9taWNpdHkgaXNzdWVzLCBlc3BlY2lhbGx5IHdpdGggZGlmZmVyZW50IGRldmljZSBpbnRlcmFjdGlvbnMuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgbWVtb3J5IGxlYWtzIG9yIGRhbmdsaW5nIHBvaW50ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgd2hldGhlciBpdCBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIG1lbW9yeSByZWdpb25zIGl0IG1pZ2h0IGJlIGRlYWxpbmcgd2l0aCDigJMgd2hldGhlciBpdCYjMzk7cyBNTUlPLCBETUEgYnVmZmVycywgb3Igc29tZXRoaW5nIGVsc2UuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGlmIGl0IGNvcnJlY3RseSBoYW5kbGVzIGVycm9yIHBhdGhzIGFuZCBhbnkgbmVjZXNzYXJ5IGNsZWFudXAgb3Igcm9sbGJhY2sgcHJvY2VkdXJlcy4gTmVlZCB0byBjb25maXJtIHRoYXQgdGhlIHJlbGV2YW50IGxvY2tzIGFyZSBoZWxkIGFuZCByZWxlYXNlZCBhcHByb3ByaWF0ZWx5IHRvIG1haW50YWluIG1lbW9yeSBpbnRlZ3JpdHkgYW5kIGNvbnNpc3RlbmN5IGFjcm9zcyB0aGUgVkZJTyBsYXllcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fdW5tYXBfdW5waW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTEzMD1zdGF0aWMgc2l6ZV90IHVubWFwX3VucGluX3Nsb3coc3RydWN0IHZmaW9fZG9tYWluICpkb21haW4sXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMTQ2LVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxMTQ3OnN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTE0OC1cdFx0XHQgICAgIGJvb2wgZG9fYWNjb3VudGluZylcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTEyMzY9c3RhdGljIHZvaWQgdmZpb19yZW1vdmVfZG1hKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEpXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMjM4LVx0V0FSTl9PTighUkJfRU1QVFlfUk9PVChcdTAwMjZkbWEtXHUwMDNlcGZuX2xpc3QpKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTIzOTpcdHZmaW9fdW5tYXBfdW5waW4oaW9tbXUsIGRtYSwgdHJ1ZSk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTEyNDAtXHR2ZmlvX3VubGlua19kbWEoaW9tbXUsIGRtYSk7XG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNDM5PXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdW5tYXBfdW5waW5fcmVhY2NvdW50KHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI0NDgtXHRcdGRtYSA9IHJiX2VudHJ5KG4sIHN0cnVjdCB2ZmlvX2RtYSwgbm9kZSk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI0NDk6XHRcdHVubG9ja2VkICYjNDM7PSB2ZmlvX3VubWFwX3VucGluKGlvbW11LCBkbWEsIGZhbHNlKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjQ1MC1cdFx0cCA9IHJiX2ZpcnN0KFx1MDAyNmRtYS1cdTAwM2VwZm5fbGlzdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2OTUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBEZWVwIGludG8gVkZJTyBETUEgVW5tYXBwaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHZmaW9fdW5tYXBfdW5waW5gIGFuZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQuIFJpZ2h0LCBpdCYjMzk7cyB0cmlnZ2VyZWQgZnJvbSBib3RoIGB2ZmlvX3JlbW92ZV9kbWFgIGFuZCBgdmZpb19pb21tdV91bm1hcF91bnBpbl9yZWFjY291bnRgLiBJbnRlcmVzdGluZy4gTm93LCBhIGtleSBxdWVzdGlvbiB0aGF0IHBvcHMgdXAgaW1tZWRpYXRlbHkgaXM6IERvZXMgdGhpcyBmdW5jdGlvbiwgYHZmaW9fdW5tYXBfdW5waW5gLCBpbnZvbHZlIGhvbGRpbmcgYSBzcGlubG9jaz8gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGRldGFpbCBmb3IgY29uY3VycmVuY3kgYW5kIHBvdGVudGlhbCBkZWFkbG9ja3MuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuIFRoZSBsb2dpY2FsIGZpcnN0IHBsYWNlIHRvIGxvb2sgaXMgd2l0aGluIGB2ZmlvX3JlbW92ZV9kbWFgIGFzIGl04oCZcyB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgY2FsbCBwYXRoLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGF0IGNvZGUgYW5kIHNlZSBpZiB0aGVyZeKAmXMgYSBzcGlubG9jayBpbnZvbHZlZCBiZWZvcmUgdGhlIGB2ZmlvX3VubWFwX3VucGluYCBjYWxsLiBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGVzZSBpbnRlcmFjdGlvbnMgYXJlIHN5bmNocm9uaXplZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBjb25jdXJyZW50IERNQSB1bm1hcHBpbmcgb3BlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19yZW1vdmVfZG1hJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTExNDc9c3RhdGljIGxvbmcgdmZpb191bm1hcF91bnBpbihzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTIzNS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTIzNjpzdGF0aWMgdm9pZCB2ZmlvX3JlbW92ZV9kbWEoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSlcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTIzNy17XG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xMzk0PXN0YXRpYyBpbnQgdmZpb19kbWFfZG9fdW5tYXAoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTU0My1cdFx0biA9IHJiX25leHQobik7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjE1NDQ6XHRcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTU0NS1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTE1ODM9c3RhdGljIGludCB2ZmlvX3Bpbl9tYXBfZG1hKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNjI0LVx0aWYgKHJldClcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTYyNTpcdFx0dmZpb19yZW1vdmVfZG1hKGlvbW11LCBkbWEpO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNjI2LVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTY4Mz1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX21hcChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNzk3LVx0XHRpZiAocmV0KVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNzk4Olx0XHRcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTc5OS1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTI0MzE9c3RhdGljIHZvaWQgdmZpb19pb21tdV91bm1hcF91bnBpbl9hbGwoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11KVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjQzNS1cdHdoaWxlICgobm9kZSA9IHJiX2ZpcnN0KFx1MDAyNmlvbW11LVx1MDAzZWRtYV9saXN0KSkpXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI0MzY6XHRcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgcmJfZW50cnkobm9kZSwgc3RydWN0IHZmaW9fZG1hLCBub2RlKSk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI0MzctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODAwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgdmZpb19kbWFfZG9fdW5tYXBgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHZmaW9fZG1hX2RvX3VubWFwYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGhvbGRpbmcgYGlvbW11LSZndDtsb2NrYCwgd2hpY2ggaXMgYSBtdXRleC4gTXkgZmlyc3QgdGhvdWdodCBpczogSSBuZWVkIHRvIHZlcmlmeSB0aGlzIGFzc3VtcHRpb24uIExldCYjMzk7cyB0cmFjZSB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gYW5kIGNvbmZpcm0gdGhhdCBpdCYjMzk7cyBjb3JyZWN0bHkgdXNpbmcgdGhlIG11dGV4IHRvIHByb3RlY3QgdGhlIHNoYXJlZCByZXNvdXJjZXMgd2l0aGluIHRoYXQgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGx1cmtpbmcgYXJvdW5kLiBLbm93aW5nIHRoaXMgaXMgYSBtdXRleCBhbmQgaXQgaG9sZHMgdGhlIGNyaXRpY2FsIHNlY3Rpb24gZ2l2ZXMgbWUgYSBiYXNlIHRvIGdvIG9uIHRvIHN0YXJ0IGFuYWx5emluZyB0aGUgcG90ZW50aWFsIGNyaXRpY2FsIHNlY3Rpb25zLiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZXZpZXcgdGhlIGNvZGUgZm9yIGFueSBpbnRlcmFjdGlvbnMgd2l0aCBzaGFyZWQgbWVtb3J5IG9yIGRhdGEgc3RydWN0dXJlcyB0aGF0IGNvdWxkIGJlIGFmZmVjdGVkIGJ5IGNvbmN1cnJlbnQgYWNjZXNzLiBBIHF1aWNrIHJldmlldyBzaG91bGQgYmUgZW5vdWdoIHRvIHNlZSBhbnkgcG90ZW50aWFsIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV0ZXhfbG9jay4qaW9tbXUtXHUwMDNlbG9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz04OTM9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX3Bpbl9wYWdlcyh2b2lkICppb21tdV9kYXRhLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtOTE4LVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzo5MTk6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy05MjAtXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xMDE5PXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfdW5waW5fcGFnZXModm9pZCAqaW9tbXVfZGF0YSxcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTEwMzgtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjEwMzk6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMDQwLVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTM3MD1zdGF0aWMgdm9pZCB2ZmlvX25vdGlmeV9kbWFfdW5tYXAoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTM5MC1cdG11dGV4X3VubG9jayhcdTAwMjZpb21tdS1cdTAwM2VkZXZpY2VfbGlzdF9sb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTM5MTpcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTEzOTItfVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTM5ND1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX3VubWFwKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE0MDgtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjE0MDk6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNDEwLVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTY4Mz1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX21hcChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNzE1LVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNzE2Olx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTcxNy1cbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTIyMzk9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2F0dGFjaF9ncm91cCh2b2lkICppb21tdV9kYXRhLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjI1MS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MjI1MjpcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTIyNTMtXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNTQxPXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfZGV0YWNoX2dyb3VwKHZvaWQgKmlvbW11X2RhdGEsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNTQ5LVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoyNTUwOlx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjU1MS1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZ3JvdXAsIFx1MDAyNmlvbW11LVx1MDAzZWVtdWxhdGVkX2lvbW11X2dyb3VwcywgbmV4dCkge1xuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MjY5OT1zdGF0aWMgaW50IHZmaW9fZG9tYWluc19oYXZlX2VuZm9yY2VfY2FjaGVfY29oZXJlbmN5KHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI3MDMtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI3MDQ6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNzA1LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShkb21haW4sIFx1MDAyNmlvbW11LVx1MDAzZWRvbWFpbl9saXN0LCBuZXh0KSB7XG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNzE2PXN0YXRpYyBib29sIHZmaW9faW9tbXVfaGFzX2VtdWxhdGVkKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI3MTktXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI3MjA6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNzIxLVx0cmV0ID0gIWxpc3RfZW1wdHkoXHUwMDI2aW9tbXUtXHUwMDNlZW11bGF0ZWRfaW9tbXVfZ3JvdXBzKTtcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTI4Mzk9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2dldF9pbmZvKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI4NTYtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI4NTc6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yODU4LVx0aW5mby5mbGFncyA9IFZGSU9fSU9NTVVfSU5GT19QR1NJWkVTO1xuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9Mjk3MD1zdGF0aWMgaW50IHZmaW9faW9tbXVfdHlwZTFfZGlydHlfcGFnZXMoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjk5Ny1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6Mjk5ODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjk5OS1cdFx0cGdzaXplID0gMSBcdTAwM2NcdTAwM2MgX19mZnMoaW9tbXUtXHUwMDNlcGdzaXplX2JpdG1hcCk7XG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMDA3LVx0fSBlbHNlIGlmIChkaXJ0eS5mbGFncyBcdTAwMjYgVkZJT19JT01NVV9ESVJUWV9QQUdFU19GTEFHX1NUT1ApIHtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MzAwODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzAwOS1cdFx0aWYgKGlvbW11LVx1MDAzZWRpcnR5X3BhZ2VfdHJhY2tpbmcpIHtcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMwNTAtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMwNTE6XHRcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMwNTItXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0zMTA1PXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfcmVnaXN0ZXJfZGV2aWNlKHZvaWQgKmlvbW11X2RhdGEsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMTE4LVx0ICovXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMxMTk6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMTIwLVx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2VkZXZpY2VfbGlzdF9sb2NrKTtcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTMxMjY9c3RhdGljIHZvaWQgdmZpb19pb21tdV90eXBlMV91bnJlZ2lzdGVyX2RldmljZSh2b2lkICppb21tdV9kYXRhLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzEzMy1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MzEzNDpcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMxMzUtXHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWRldmljZV9saXN0X2xvY2spO1xuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MzIwMT1zdGF0aWMgaW50IHZmaW9faW9tbXVfdHlwZTFfZG1hX3J3KHZvaWQgKmlvbW11X2RhdGEsIGRtYV9hZGRyX3QgdXNlcl9pb3ZhLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzIwNy1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MzIwODpcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMyMDktXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0zMjMzPXZmaW9faW9tbXVfdHlwZTFfZ3JvdXBfaW9tbXVfZG9tYWluKHZvaWQgKmlvbW11X2RhdGEsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMjQyLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzozMjQzOlx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzI0NC1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZCwgXHUwMDI2aW9tbXUtXHUwMDNlZG9tYWluX2xpc3QsIG5leHQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0NjQKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoYXQgY29kZSBzbmlwcGV0LgoKKipBbmFseXppbmcgTG9jayBVc2FnZSBhbmQgQ29uY3VycmVuY3kqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gU2VlaW5nIGBpb21tdS0mZ3Q7bG9ja2AgdXNlZCBhcyBhIG11dGV4IGlzIHBlcmZlY3RseSBub3JtYWwuIFRoYXQgbWVhbnMgdGhlIGNhbGwgdG8gYGNvbmRfcmVzY2hlZCgpYCB3aXRoaW4gdGhhdCBjcml0aWNhbCBzZWN0aW9uIGlzIHRvdGFsbHkgdmFsaWQuIE5vIGlzc3VlcyB0aGVyZSwgdGhhdCYjMzk7cyBleHBlY3RlZCBiZWhhdmlvci4KCkJ1dCB0aGVuIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGJhdGNoX2Zyb21fZG9tYWluYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gKmRvZXNuJiMzOTt0KiBpbnRyb2R1Y2UgYW55IGhpZGRlbiBzcGlubG9jayB1c2FnZS4gSWYgaXQgZGlkLCBgY29uZF9yZXNjaGVkKClgIHdvdWxkIGJlIHByb2JsZW1hdGljIGluc2lkZSB0aGUgbXV0ZXggcHJvdGVjdGVkIHNlY3Rpb24sIGFuZCBsZWFkIHRvIHBvc3NpYmxlIGRlYWRsb2NrIHNjZW5hcmlvcyBvciBwcmlvcml0eSBpbnZlcnNpb24gcHJvYmxlbXMuIEkgbmVlZCB0byByZXZpZXcgaXRzIGNvZGUgdG8gY29uZmlybSB0aGF0IGl0JiMzOTtzIHNhZmUgdG8gY2FsbCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoYXQgbXV0ZXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV0ZXhfbG9jay4qcGFnZXNfcndfc2VtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjcyNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkludmVzdGlnYXRpbmcgYGJhdGNoX2Zyb21fZG9tYWluYCBMb2NrcyoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgdGhpcyBgYmF0Y2hfZnJvbV9kb21haW5gIGZ1bmN0aW9uLiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIEkmIzM5O20gbm90IGludHJvZHVjaW5nIGFueSBjb250ZW50aW9uIG9yIGRlYWRsb2NrcyBkb3duc3RyZWFtLiBJJiMzOTttIGdvaW5nIHRvIHBpbnBvaW50IGV4YWN0bHkgd2hhdCBsb2NrcyB0aGlzIGZ1bmN0aW9uIHV0aWxpemVzLiBVbmRlcnN0YW5kaW5nIHRoZSBsb2NraW5nIHNjb3BlIGFuZCBkdXJhdGlvbiBvZiBgYmF0Y2hfZnJvbV9kb21haW5gIGlzIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIGFuZCBwcmV2ZW50aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcy4gSSB3aWxsIGFsc28gYmUgbG9va2luZyBpbnRvIGl0cyBkZXBlbmRlbmNpZXMsIHNpbmNlIGxvY2tzIHRlbmQgdG8gY2FzY2FkZSBhbmQgdW5kZXJzdGFuZGluZyB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCBgYmF0Y2hfZnJvbV9kb21haW5gIHdpbGwgYmUgY3JpdGljYWwgZm9yIGEgY29tcHJlaGVuc2l2ZSBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiYXRjaF9mcm9tX2RvbWFpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTM5Nz1zdGF0aWMgYm9vbCBiYXRjaF9hZGRfcGZuKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCB1bnNpZ25lZCBsb25nIHBmbilcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDYtICovXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0MDc6c3RhdGljIHZvaWQgYmF0Y2hfZnJvbV9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDgtXHRcdFx0ICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTQzOD1zdGF0aWMgc3RydWN0IHBhZ2UgKipyYXdfcGFnZXNfZnJvbV9kb21haW4oc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ2MS0vKiBDb250aW51ZXMgcmVhZGluZyBhIGRvbWFpbiB1bnRpbCB3ZSByZWFjaCBhIGRpc2NvbnRpbnVpdHkgaW4gdGhlIHBmbnMuICovXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NjI6c3RhdGljIHZvaWQgYmF0Y2hfZnJvbV9kb21haW5fY29udGludWUoc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NjMtXHRcdFx0XHQgICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ3MC1cdGJhdGNoLVx1MDAzZWFycmF5X3NpemUgPSBiYXRjaC1cdTAwM2VlbmQ7XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NzE6XHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCwgbGFzdF9pbmRleCk7XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NzItXHRiYXRjaC1cdTAwM2VhcnJheV9zaXplID0gYXJyYXlfc2l6ZTtcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xMTcyPXN0YXRpYyBpbnQgcGZuX3JlYWRlcl9maWxsX3NwYW4oc3RydWN0IHBmbl9yZWFkZXIgKnBmbnMpXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMS1cdFx0LyogVGhlIHN0b3JhZ2VfZG9tYWluIGNhbm5vdCBjaGFuZ2Ugd2l0aG91dCB0aGUgcGFnZXMgbXV0ZXggKi9cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjEyMDI6XHRcdGJhdGNoX2Zyb21fZG9tYWluKFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMy1cdFx0XHRcdTAwMjZwZm5zLVx1MDAzZWJhdGNoLCBhcmVhLVx1MDAzZXN0b3JhZ2VfZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xNjgxPWlvcHRfYXJlYV91bnBpbl9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY5OC1cdFx0XHRcdFx0c3RhcnRfaW5kZXgpO1xuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTY5OTpcdFx0XHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydCxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3MDAtXHRcdFx0XHRcdCAgbGFzdF9pbmRleCk7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcxOS1cdFx0ICAgIGxhc3RfaW5kZXggIT0gcmVhbF9sYXN0X2luZGV4KVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTcyMDpcdFx0XHRiYXRjaF9mcm9tX2RvbWFpbl9jb250aW51ZShiYXRjaCwgZG9tYWluLCBhcmVhLFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcyMS1cdFx0XHRcdFx0XHQgICBsYXN0X2luZGV4ICYjNDM7IDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzE2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIGBpb3B0X2FyZWFfdW5waW5fZG9tYWluYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIExldCYjMzk7cyBzZWUuLi4gdGhlIHRhc2sgYXQgaGFuZCBpcyBgaW9wdF9hcmVhX3VucGluX2RvbWFpbmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBzY29wZS4gVGhpcyBzb3VuZHMgbGlrZSBzb21ldGhpbmcgcmVsYXRlZCB0byB1bnBpbm5pbmcgbWVtb3J5IHJlZ2lvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gYSBjZXJ0YWluICYjMzQ7ZG9tYWluJiMzNDsgb3IgYXJlYS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBvcHRpbWl6YXRpb24sIGdpdmVuIHRoZSAmIzM0O29wdCYjMzQ7IHByZWZpeCwgcHJvYmFibHkgYWltaW5nIHRvIGZyZWUgdXAgcmVzb3VyY2VzIG9yIG1hbmFnZSBtZW1vcnkgbW9yZSBlZmZpY2llbnRseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQ6IGlzIHRoaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSwgYSBwYXJ0aWN1bGFyIG9wZXJhdGluZyBzeXN0ZW0sIG9yIGEgY3VzdG9tIG1lbW9yeSBtYW5hZ2VtZW50IGxheWVyPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHVucGlubmluZyB0aGlzIGRvbWFpbj8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgcGVyZm9ybWFuY2UsIHNlY3VyaXR5LCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aD8gTXkgZXhwZXJ0aXNlIGluIHRoaXMgZG9tYWluIGFsbG93cyBtZSB0byBpbW1lZGlhdGVseSB0aGluayBvZiBwb3RlbnRpYWwgcGl0ZmFsbHMg4oCTIGFyZSB0aGVyZSBhbnkgcmFjZSBjb25kaXRpb25zIHdoZW4gdW5waW5uaW5nPyBBcmUgdGhlcmUgYW55IGRhdGEgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgbGVhZCB0byBjb3JydXB0aW9uIGlmIHRoZSBtZW1vcnkgaXMgdXNlZCBlbHNld2hlcmU/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgdGhpcyBmdW5jdGlvbiwgYW5kIHdoYXQgb3BlcmF0aW9ucyBpdCBleHBlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb3B0X2FyZWFfdW5waW5fZG9tYWluJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTY4MD1zdGF0aWMgdm9pZFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTY4MTppb3B0X2FyZWFfdW5waW5fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCBzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY4Mi1cdFx0ICAgICAgIHN0cnVjdCBpb3B0X3BhZ2VzICpwYWdlcywgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTE3NDE9c3RhdGljIHZvaWQgX19pb3B0X2FyZWFfdW5maWxsX2RvbWFpbihzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3ODQtXHRcdH1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjE3ODU6XHRcdGlvcHRfYXJlYV91bnBpbl9kb21haW4oXHUwMDI2YmF0Y2gsIGFyZWEsIHBhZ2VzLCBkb21haW4sXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xNzg2LVx0XHRcdFx0ICAgICAgIHNwYW4uc3RhcnRfaG9sZSwgc3Bhbi5sYXN0X2hvbGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MjcwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gYF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW5gKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW5gLiBJJiMzOTttIHRoaW5raW5nLCB0aGlzIGlzIGEgY3J1Y2lhbCBwaWVjZSwgZXNwZWNpYWxseSBnaXZlbiB0aGUgY29udGV4dCBvZiB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIG9uLiBJdCYjMzk7cyBsaWtlbHkgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gcmVsYXRlZCB0byBhcmVhIHVuZmlsbGluZyBvcGVyYXRpb25zLCBwcm9iYWJseSB3aXRoaW4gdGhlIGlvcHQgZnJhbWV3b3JrLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGhhcyB0byBkbyB3aXRoIGhvdyB3ZSYjMzk7cmUgb3B0aW1pemluZyBvciBtYW5pcHVsYXRpbmcgc29tZSBraW5kIG9mIGdlb21ldHJpYyByZXByZXNlbnRhdGlvbi4gTXkgaW5pdGlhbCBndWVzcyBpcyB0aGF0IGl0IG1pZ2h0IGJlIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIGRvbWFpbiBvciByZWdpb24sIGFuZCBwb3NzaWJseSBkb2luZyBzbyBpbiBhIHdheSB0aGF04oCZcyBxdWl0ZSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUuCgpXaGF0IEkmIzM5O20gcmVhbGx5IGtlZW4gdG8gdW5kZXJzdGFuZCBub3cgaXMgdGhlIHByZWNpc2UgbmF0dXJlIG9mIHRoZSBkb21haW4gaXQgZGVhbHMgd2l0aCDigJMgaXMgaXQgYSBjb250aWd1b3VzIGFyZWEsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggYW5kIGRpc2Nvbm5lY3RlZD8gQW5kIG9mIGNvdXJzZSwgdGhlIHVuZGVybHlpbmcgYWxnb3JpdGhtcy4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBjb2RlIGZvciB0aGUgdHlwZXMgb2YgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHVzZWQsIGFueSBwb3RlbnRpYWwgZm9yIHBhcmFsbGVsaXphdGlvbiwgYW5kIG9mIGNvdXJzZSwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBmb3IgbWVtb3J5IGJvdHRsZW5lY2tzIG9yIGFueSBvdGhlciBpc3N1ZXMgdGhhdCBtaWdodCBpbXBlZGUgcGVyZm9ybWFuY2UgaW4gb3VyIHBhcnRpY3VsYXIgc2NlbmFyaW9zLiBJIGFsc28gZXhwZWN0IHRoaXMgdG8gYmUgY29yZSB0byBhbnkgcHJvYmxlbXMgb3IgcXVlc3Rpb25zIHRoYXQgaGF2ZSBjb21lIHVwIGluIHRoZSBhcmVhLiBMZXQmIzM5O3MgZ2V0IHRvIHdvcmshCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faW9wdF9hcmVhX3VuZmlsbF9kb21haW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xNjgxPWlvcHRfYXJlYV91bnBpbl9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTc0MC1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjE3NDE6c3RhdGljIHZvaWQgX19pb3B0X2FyZWFfdW5maWxsX2RvbWFpbihzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTc0Mi1cdFx0XHRcdCAgICAgIHN0cnVjdCBpb3B0X3BhZ2VzICpwYWdlcyxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xODAxPXN0YXRpYyB2b2lkIGlvcHRfYXJlYV91bmZpbGxfcGFydGlhbF9kb21haW4oc3RydWN0IGlvcHRfYXJlYSAqYXJlYSxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xODA2LVx0aWYgKGVuZF9pbmRleCAhPSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxODA3Olx0XHRfX2lvcHRfYXJlYV91bmZpbGxfZG9tYWluKGFyZWEsIHBhZ2VzLCBkb21haW4sIGVuZF9pbmRleCAtIDEpO1xuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTgwOC19XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTgzND12b2lkIGlvcHRfYXJlYV91bmZpbGxfZG9tYWluKHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsIHN0cnVjdCBpb3B0X3BhZ2VzICpwYWdlcyxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xODM5LVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTg0MDpcdF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oYXJlYSwgcGFnZXMsIGRvbWFpbixcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE4NDEtXHRcdFx0XHQgIGlvcHRfYXJlYV9sYXN0X2luZGV4KGFyZWEpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwNzMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIFNvZnQgTG9ja3VwIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllYWgsIGBjb25kX3Jlc2NoZWQoKWAgbG9va3MgcGVyZmVjdGx5IGFwcHJvcHJpYXRlIGhlcmUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCYjMzk7cyBmaXhpbmcgdGhpcyBzb2Z0IGxvY2t1cCwgc28gdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGlzIGl0IHdvcnRoIGZ1enppbmc/IExldCYjMzk7cyBzZWUuLi4KClJpZ2h0LCB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgd2hhdCB0byBsb29rIGZvciB3aGVuIGRldGVybWluaW5nIGBXb3J0aEZ1enppbmdgLiBGaXJzdCwgaXQgc2F5cywgJiMzNDtyZXR1cm4gZmFsc2UmIzM0OyBpZiB0aGUgcGF0Y2ggY29udGFpbnMgb25seSBjaGFuZ2VzIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMgb3IgaWYgaXQgY29udGFpbnMgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBzdWNoIGFzIGxvZ2dpbmcgb3IgdHJhY2Vwb2ludHMuIEl0IHNheXMgYWxzbyBub3QgdG8gaW5jbHVkZSBjaGFuZ2VzIHRvIGNvbnN0YW50cyBvciBtYWNyb3Mgb3IgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoaXMgY2hhbmdlIGlzbiYjMzk7dCBkZWNvcmF0aXZlOyBhZGRpbmcgYGNvbmRfcmVzY2hlZCgpYCAqZGVmaW5pdGVseSogYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0JiMzOTtzIG5vdCBhIHNpbXBsZSBudW1lcmljIGNvbnN0YW50IGNoYW5nZSwgYW5kIGl0JiMzOTtzIGFic29sdXRlbHkgcmVhY2hhYmxlLCBldmVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCBhY2NvcmRpbmcgdG8gdGhlIGNyaXRlcmlhLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYHRydWVgLgoKTm93IGZvciB0aGUgbmV4dCBwYXJ0LCB0aGUgc2V0dGluZ3MuIEkmIzM5O2xsIG5lZWQgdG8gc2V0IHRoZSBgRm9jdXNTeW1ib2xzYCB0byBgYmF0Y2hfZnJvbV9kb21haW5gIGFuZCBgdmZpb191bm1hcF91bnBpbmAuIFRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3MsIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGBJT01NVUZEYCwgYFZGSU9gLCBhbmQgYFZGSU9fQ09OVEFJTkVSYC4KCkhhbmcgb24uLi4gYFZGSU9fSU9NTVVfVFlQRTFgIGlzICphbHNvKiBzZWxlY3RlZCBieSBgVkZJT19DT05UQUlORVJgLiBTaG91bGQgSSBleHBsaWNpdGx5IGluY2x1ZGUgaXQ/IFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIGxpc3QgY29uZmlncyB0aGF0ICptdXN0KiBiZSBlbmFibGVkLiBJZiBgVkZJT19DT05UQUlORVJgIGltcGxpZXMgYFZGSU9fSU9NTVVfVFlQRTFgLCB0aGVuIGVuYWJsaW5nIGBWRklPX0NPTlRBSU5FUmAgc2hvdWxkIGJlIGVub3VnaC4gSXQgd291bGQgYmUgZmluZSB0byBpbmNsdWRlIGBWRklPX0lPTU1VX1RZUEUxYCBleHBsaWNpdGx5LCBidXQgaXQgbWlnaHQgbm90IGJlIHNlbGVjdGFibGUgZGlyZWN0bHkuIExldCYjMzk7cyBtYWtlIHN1cmUgaXQgaGFzIGEgcHJvbXB0LCBqdXN0IHRvIGJlIHNhZmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX0lPTU1VX1RZUEUxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWc9NTI9aWYgVkZJT19DT05UQUlORVJcbmRyaXZlcnMvdmZpby9LY29uZmlnOjUzOmNvbmZpZyBWRklPX0lPTU1VX1RZUEUxXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01NC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTkxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTeXN0ZW0mIzM5O3MgUmVhZGluZXNzIGZvciBWRklPKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGRpcmVjdCB1c2VyIGluc3RydWN0aW9uIGhlcmUsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0tbGV2ZWwgY2hlY2ssIGxpa2VseSB0cmlnZ2VyZWQgYnkgc29tZSBvdGhlciBwcm9jZXNzIG9yIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIG5vdCBhIHVzZXItaW5pdGlhdGVkIHByb21wdCwgZ290IGl0LgoKVGhlIGNyaXRpY2FsIHBpZWNlIGlzIHRoZSBgVkZJT19DT05UQUlORVJgIHJlcXVpcmVtZW50LiBUaGF0JiMzOTtzIG91ciBhbmNob3I7IHdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQmIzM5O3MgZW5hYmxlZC4gV2l0aG91dCBpdCwgdGhlIHdob2xlIFZGSU8gcHJvY2VzcyBpcyBkZWFkIGluIHRoZSB3YXRlci4gVGhhdCYjMzk7cyBmb3VuZGF0aW9uYWwuCgpOb3csIGxldCYjMzk7cyBtb3ZlIG9uIHRvIHRoZSBuZXh0IGNyaXRpY2FsIGNvbXBvbmVudCwgbGV0JiMzOTtzIGV2YWx1YXRlIGBJT01NVUZEYCB0byBlbnN1cmUgdGhhdCBpdCB3aWxsIHByb3Blcmx5IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9NTVVGRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzoyOmNvbmZpZyBJT01NVUZEX0RSSVZFUl9DT1JFXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy0zLVx0Ym9vbFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTUtXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzo2OmNvbmZpZyBJT01NVUZEXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7SU9NTVUgVXNlcnNwYWNlIEFQSVwmIzM0O1xuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnPTE4PWlmIElPTU1VRkRcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjE5OmNvbmZpZyBJT01NVUZEX1ZGSU9fQ09OVEFJTkVSXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7SU9NTVVGRCBwcm92aWRlcyB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cJiMzNDtcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy0zOC1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjM5OmNvbmZpZyBJT01NVUZEX1RFU1RcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtJT01NVSBVc2Vyc3BhY2UgQVBJIFRlc3Qgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjUzMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJT01NVUZEIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgdGhvdWdodCBwcm9jZXNzIGlzOiAqcmlnaHQsIGBJT01NVUZEYCBhbmQgYFZGSU9fQ09OVEFJTkVSYCBhcmUgdGhlIGtleSBjb25maWdzIHRvIGVuYWJsZSBoZXJlLiogV2UgbmVlZCB0aG9zZSB0byBldmVuIGNvbnNpZGVyIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UuIExldCYjMzk7cyBzZWUuLi4gdGhlIGNvcmUgb2YgdGhlIG1hdHRlciBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGBjb25kX3Jlc2NoZWQoKWAgY2FsbHMgd2l0aGluIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4KCkFoLCB5ZXMsIG5vdyBJIHJlY2FsbC4gVGhlc2UgYWRkaXRpb25zIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcywgcGFydGljdWxhcmx5IGR1cmluZyB0aG9zZSBsYXJnZSB1bm1hcC91bnBpbiBvcGVyYXRpb25zLiBUaGlzIGlzIGEgY2xlYXIgZXhlY3V0aW9uIGZsb3cgbW9kaWZpY2F0aW9uIOKAkyB5aWVsZGluZyB0aGUgQ1BVIGluIHRob3NlIGNyaXRpY2FsIHNlY3Rpb25zLiBHaXZlbiB0aGF0IGl0JiMzOTtzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgKmFic29sdXRlbHkqIGRlbWFuZHMgZnV6emluZy4gSXQmIzM5O3Mgbm90IGp1c3QgYWJvdXQgY29uZmlybWluZyB0aGUgc29mdCBsb2NrdXAgZml4OyB3ZSBuZWVkIHRvIGJlIHZpZ2lsYW50IGFib3V0IGFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMsIHN1Y2ggYXMgc2NoZWR1bGluZyBpc3N1ZXMgd2l0aGluIGF0b21pYyBjb250ZXh0cyB0aGF0IHdlIG1pZ2h0IGJlIGludHJvZHVjaW5nLgoKU28sIGp1c3QgdG8gYmUgY3J5c3RhbCBjbGVhcjogYElPTU1VRkRgIGFuZCBgVkZJT19DT05UQUlORVJgIGFyZSBhIG11c3QsIGFuZCBmb3IgdGhhdCwgd2UgbmVlZCBgVkZJT2AuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoIGR1cmluZyBmdXp6aW5nIGFyZSBgYmF0Y2hfZnJvbV9kb21haW5gIGFuZCBgdmZpb191bm1hcF91bnBpbmAuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgdHJhZGluZyBvbmUgcHJvYmxlbSBmb3IgYW5vdGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fQ09OVEFJTkVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWc9MzA9Y29uZmlnIFZGSU9fR1JPVVBcbi0tXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy0zOS1cbmRyaXZlcnMvdmZpby9LY29uZmlnOjQwOmNvbmZpZyBWRklPX0NPTlRBSU5FUlxuZHJpdmVycy92ZmlvL0tjb25maWctNDEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE0NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVtOgoKKipWRklPIERlcGVuZGVuY2llczogQSBRdWljayBOb3RlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZSBoZXJlLiAqVkZJT19DT05UQUlORVIqIGlzIGNsZWFybHkgYnVpbHQgb24gdG9wIG9mICpWRklPX0dST1VQKi4gSSBtZWFuLCB0aGF0IGRlcGVuZGVuY3kgaXMgZnVuZGFtZW50YWwuIFRoZXJlJiMzOTtzIG5vIGdldHRpbmcgYXJvdW5kIGl0LCBsb2dpY2FsbHkgc3BlYWtpbmcsIHdpdGhvdXQgc29tZSBzaWduaWZpY2FudCByZS1hcmNoaXRlY3R1cmUsIGFuZCBldmVuIHRoZW4sIEkmIzM5O2QgaGF2ZSB0byBxdWVzdGlvbiB0aGUgYmVuZWZpdC4gVGhlIGNvbnRhaW5lciBjb25jZXB0LCBpdHMgbWFuYWdlbWVudCwgaXNvbGF0aW9uLCBhbGwgb2YgaXQuLi4gdGhhdCByZWxpZXMgb24gdGhlIGdyb3VwIGFic3RyYWN0aW9uIGFzIGEgYmFzZSBsYXllci4gV2l0aG91dCB0aGUgZ3JvdXBpbmcsIHRoZSBjb250YWluZXIgc2ltcGx5IHdvdWxkbiYjMzk7dCBmdW5jdGlvbiBhcyBpbnRlbmRlZCwgb3IgZXZlbiBmdW5jdGlvbiBhdCBhbGwuIEl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIGRlcGVuZGVuY3kuIE5vdCBzb21ldGhpbmcgdG8gYmUgcXVlc3Rpb25lZC4gSXQmIzM5O3MgcHJldHR5IHNlbGYtZXZpZGVudCwgd2hlbiBJIHRoaW5rIGFib3V0IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uIFZGSU9fR1JPVVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZz00MD1jb25maWcgVkZJT19DT05UQUlORVJcbi0tXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy00Mi1cdHNlbGVjdCBWRklPX0lPTU1VX1RZUEUxIGlmIE1NVSBcdTAwMjZcdTAwMjYgKFg4NiB8fCBTMzkwIHx8IEFSTSB8fCBBUk02NClcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQzOlx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy00NC1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnPTYzPWNvbmZpZyBWRklPX05PSU9NTVVcbmRyaXZlcnMvdmZpby9LY29uZmlnLTY0LVx0Ym9vbCBcJiMzNDtWRklPIE5vLUlPTU1VIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdmZpby9LY29uZmlnOjY1Olx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy02Ni1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NTMKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogMTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGhpcyBQYXRjaDogQSBXb3J0aHdoaWxlIEVuZGVhdm9yKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggYWZmZWN0cyBgVkZJT19HUk9VUGAsIHdoaWNoIGlzIG5lc3RlZCB1bmRlciBgaWYgVkZJT2AuIFJpZ2h0LCB0aGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYFZGSU9gLCBgVkZJT19HUk9VUGAsIGBWRklPX0NPTlRBSU5FUmAsIGFuZCBgSU9NTVVGRGAuIEkmIzM5O2xsIG9yZ2FuaXplIG15IHRob3VnaHRzIGFuZCBsaXN0IHRoZXNlIGNvbXBvbmVudHMgYXMgYElPTU1VRkRgLCBgVkZJT2AsIGBWRklPX0dST1VQYCwgYW5kIGBWRklPX0NPTlRBSU5FUmAuCgpCdXQgd2FpdCwgaXMgZnV6emluZyB0aGlzIGV2ZW4gKm5lY2Vzc2FyeSo/IEFkZGluZyBgY29uZF9yZXNjaGVkKClgIHNlZW1zIGxpa2UgYSB0cml2aWFsLCBhbG1vc3QgY29zbWV0aWMgY2hhbmdlLiBJdCBwcmltYXJpbHkgYWRkcmVzc2VzIHBvdGVudGlhbCBzb2Z0IGxvY2t1cHMsIGFuZCB3aGlsZSBTeXprYWxsZXIgKmNhbiogZGV0ZWN0IHRob3NlLCBwcmV2ZW50aW5nIHRoZW0gaXMgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LiBIbW1tLi4uCgpUaGVuIGl0IGhpdHMgbWU6IGlmIGBjb25kX3Jlc2NoZWQoKWAgaXMgbWlzdGFrZW5seSBjYWxsZWQgaW4gYW4gYXRvbWljIGNvbnRleHQsIGJvb20sIHdlIGhhdmUgYSBidWchIEZ1enppbmcgaXMgKnBlcmZlY3QqIGZvciB1bmNvdmVyaW5nIHRoYXQga2luZCBvZiBzdWJ0bGUsIGNvbnRleHQtZGVwZW5kZW50IGVycm9yLiBZZXMsIHRoaXMgcGF0Y2ggaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyByb2xsaW5nLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU9NTVVGRCYjMzQ7LAogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fR1JPVVAmIzM0OywKICAgICYjMzQ7VkZJT19DT05UQUlORVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiYXRjaF9mcm9tX2RvbWFpbiYjMzQ7LAogICAgJiMzNDt2ZmlvX3VubWFwX3VucGluJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgY29uZF9yZXNjaGVkKCkgdG8gbG9vcHMgaW4gYmF0Y2hfZnJvbV9kb21haW4gYW5kIHZmaW9fdW5tYXBfdW5waW4gdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMgZHVyaW5nIGxhcmdlIHVubWFwL3VucGluIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBieSB5aWVsZGluZyB0aGUgQ1BVLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgc29mdCBsb2NrdXAgaXMgZml4ZWQgYW5kIG5vIG5ldyBpc3N1ZXMgKGxpa2Ugc2NoZWR1bGluZyB3aGlsZSBhdG9taWMpIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT01NVUZEJiMzNDssCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19HUk9VUCYjMzQ7LAogICAgJiMzNDtWRklPX0NPTlRBSU5FUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhdGNoX2Zyb21fZG9tYWluJiMzNDssCiAgICAmIzM0O3ZmaW9fdW5tYXBfdW5waW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBjb25kX3Jlc2NoZWQoKSB0byBsb29wcyBpbiBiYXRjaF9mcm9tX2RvbWFpbiBhbmQgdmZpb191bm1hcF91bnBpbiB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcyBkdXJpbmcgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBzb2Z0IGxvY2t1cCBpcyBmaXhlZCBhbmQgbm8gbmV3IGlzc3VlcyAobGlrZSBzY2hlZHVsaW5nIHdoaWxlIGF0b21pYykgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyMzo0NC43MTA2Mjc4MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzI4OTIzMDc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT01NVUZEXCIsXG4gICAgXCJWRklPXCIsXG4gICAgXCJWRklPX0dST1VQXCIsXG4gICAgXCJWRklPX0NPTlRBSU5FUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJhdGNoX2Zyb21fZG9tYWluXCIsXG4gICAgXCJ2ZmlvX3VubWFwX3VucGluXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBjb25kX3Jlc2NoZWQoKSB0byBsb29wcyBpbiBiYXRjaF9mcm9tX2RvbWFpbiBhbmQgdmZpb191bm1hcF91bnBpbiB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcyBkdXJpbmcgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBzb2Z0IGxvY2t1cCBpcyBmaXhlZCBhbmQgbm8gbmV3IGlzc3VlcyAobGlrZSBzY2hlZHVsaW5nIHdoaWxlIGF0b21pYykgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjIzOjQ0LjcxMDYzMzE3NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc4OTg3OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTIwM2YxNzZhNzg2YTk1ZGI5ODhiZTkzNTkzNTYxOTk1YTRmMzcyZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNzoyMzo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYyBiL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXFxuaW5kZXggOWJkYjI5NDVhZmUxZWIuLmU0Nzg3NzFjMGNjZjZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXFxuKysrIGIvZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcXG5AQCAtNDEyLDYgKzQxMiw3IEBAIHN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxcbiBcXHR1bnNpZ25lZCBpbnQgcGFnZV9vZmZzZXQgPSAwO1xcbiBcXHR1bnNpZ25lZCBsb25nIGlvdmE7XFxuIFxcdHBoeXNfYWRkcl90IHBoeXM7XFxuK1xcdGludCBpID0gMDtcXG4gXFxuIFxcdGlvdmEgPSBpb3B0X2FyZWFfaW5kZXhfdG9faW92YShhcmVhLCBzdGFydF9pbmRleCk7XFxuIFxcdGlmIChzdGFydF9pbmRleCA9PSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpXFxuQEAgLTQyOCw2ICs0MjksOSBAQCBzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcXG4gXFx0XFx0aW92YSArPSBQQUdFX1NJWkUgLSBwYWdlX29mZnNldDtcXG4gXFx0XFx0cGFnZV9vZmZzZXQgPSAwO1xcbiBcXHRcXHRzdGFydF9pbmRleCsrO1xcbitcXG4rXFx0XFx0aWYgKCgrK2kgJSBCSVQoUFVEX09SREVSKSkgPT0gMClcXG4rXFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmNcXG5pbmRleCBjODE1MWJhNTRkZTMzYS4uZTc4YmMwN2Q5YjZlOGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuY1xcbisrKyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmNcXG5AQCAtMTE1Myw2ICsxMTUzLDcgQEAgc3RhdGljIGxvbmcgdmZpb191bm1hcF91bnBpbihzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxcbiBcXHRpbnQgdW5tYXBwZWRfcmVnaW9uX2NudCA9IDA7XFxuIFxcdGxvbmcgdW5sb2NrZWQgPSAwO1xcbiBcXHRzaXplX3QgcG9zID0gMDtcXG4rXFx0aW50IGkgPSAwO1xcbiBcXG4gXFx0aWYgKCFkbWEtXFx1MDAzZXNpemUpXFxuIFxcdFxcdHJldHVybiAwO1xcbkBAIC0xMTk2LDYgKzExOTcsOCBAQCBzdGF0aWMgbG9uZyB2ZmlvX3VubWFwX3VucGluKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEsXFxuIFxcdFxcdFxcdG5leHQgPSBpb21tdV9pb3ZhX3RvX3BoeXMoZG9tYWluLVxcdTAwM2Vkb21haW4sIGlvdmEgKyBsZW4pO1xcbiBcXHRcXHRcXHRpZiAobmV4dCAhPSBwaHlzICsgbGVuKVxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0aWYgKCgrK2kgJSBCSVQoUFVEX09SREVSKSkgPT0gMClcXG4rXFx0XFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjIzOjQ1LjM5MDQ5NTQ3MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI2MDkyNzkyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9NTVVGRFwiLFxuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19HUk9VUFwiLFxuICAgIFwiVkZJT19DT05UQUlORVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYXRjaF9mcm9tX2RvbWFpblwiLFxuICAgIFwidmZpb191bm1hcF91bnBpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgY29uZF9yZXNjaGVkKCkgdG8gbG9vcHMgaW4gYmF0Y2hfZnJvbV9kb21haW4gYW5kIHZmaW9fdW5tYXBfdW5waW4gdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMgZHVyaW5nIGxhcmdlIHVubWFwL3VucGluIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBieSB5aWVsZGluZyB0aGUgQ1BVLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgc29mdCBsb2NrdXAgaXMgZml4ZWQgYW5kIG5vIG5ldyBpc3N1ZXMgKGxpa2Ugc2NoZWR1bGluZyB3aGlsZSBhdG9taWMpIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUyMDNmMTc2YTc4NmE5NWRiOTg4YmU5MzU5MzU2MTk5NWE0ZjM3MmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNzoyMzo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jIGIvZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcbmluZGV4IDliZGIyOTQ1YWZlMWViLi5lNDc4NzcxYzBjY2Y2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXG4rKysgYi9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuY1xuQEAgLTQxMiw2ICs0MTIsNyBAQCBzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcbiBcdHVuc2lnbmVkIGludCBwYWdlX29mZnNldCA9IDA7XG4gXHR1bnNpZ25lZCBsb25nIGlvdmE7XG4gXHRwaHlzX2FkZHJfdCBwaHlzO1xuK1x0aW50IGkgPSAwO1xuIFxuIFx0aW92YSA9IGlvcHRfYXJlYV9pbmRleF90b19pb3ZhKGFyZWEsIHN0YXJ0X2luZGV4KTtcbiBcdGlmIChzdGFydF9pbmRleCA9PSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpXG5AQCAtNDI4LDYgKzQyOSw5IEBAIHN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxuIFx0XHRpb3ZhICs9IFBBR0VfU0laRSAtIHBhZ2Vfb2Zmc2V0O1xuIFx0XHRwYWdlX29mZnNldCA9IDA7XG4gXHRcdHN0YXJ0X2luZGV4Kys7XG4rXG4rXHRcdGlmICgoKytpICUgQklUKFBVRF9PUkRFUikpID09IDApXG4rXHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG5pbmRleCBjODE1MWJhNTRkZTMzYS4uZTc4YmMwN2Q5YjZlOGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG5AQCAtMTE1Myw2ICsxMTUzLDcgQEAgc3RhdGljIGxvbmcgdmZpb191bm1hcF91bnBpbihzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxuIFx0aW50IHVubWFwcGVkX3JlZ2lvbl9jbnQgPSAwO1xuIFx0bG9uZyB1bmxvY2tlZCA9IDA7XG4gXHRzaXplX3QgcG9zID0gMDtcbitcdGludCBpID0gMDtcbiBcbiBcdGlmICghZG1hLVx1MDAzZXNpemUpXG4gXHRcdHJldHVybiAwO1xuQEAgLTExOTYsNiArMTE5Nyw4IEBAIHN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSxcbiBcdFx0XHRuZXh0ID0gaW9tbXVfaW92YV90b19waHlzKGRvbWFpbi1cdTAwM2Vkb21haW4sIGlvdmEgKyBsZW4pO1xuIFx0XHRcdGlmIChuZXh0ICE9IHBoeXMgKyBsZW4pXG4gXHRcdFx0XHRicmVhaztcbitcdFx0XHRpZiAoKCsraSAlIEJJVChQVURfT1JERVIpKSA9PSAwKVxuK1x0XHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4gXHRcdH1cbiBcbiBcdFx0LypcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjIzOjQ1LjM5MDQ5NzEzMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNTkxMTgyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZyBEZWNpc2lvbjogWWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIGFkZGluZyBgY29uZF9yZXNjaGVkKClgIGNhbGxzIHdpdGhpbiBsb29wcyBpbiBgZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNgIGFuZCBgZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuY2AuIFNwZWNpZmljYWxseSwgaXQncyBpbnNpZGUgYGJhdGNoX2Zyb21fZG9tYWluYCAoaW9tbXVmZCkgYW5kIGB2ZmlvX3VubWFwX3VucGluYCAodmZpbykuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgc29mdCBsb2NrdXBzIGR1cmluZyBsYXJnZSB1bm1hcC91bnBpbiBvcGVyYXRpb25zLlxuXG5NeSBpbml0aWFsIGd1dCByZWFjdGlvbiB3YXMgdGhhdCBmdXp6aW5nIHRoaXMgbWlnaHQgbm90IGJlIGZydWl0ZnVsLiBUeXBpY2FsbHksIGNoYW5nZXMgaW52b2x2aW5nIGp1c3QgYGNvbmRfcmVzY2hlZCgpYCBhcmUgbG93LXlpZWxkIGZvciBmdXp6aW5nLCB1bmxlc3MgaXQncyBhIHNwZWNpZmljIGJ1Zy1maXggd2Ugd2FudCB0byAqZ3VhcmFudGVlKiBkb2Vzbid0IHJlc3VyZmFjZS4gU3l6a2FsbGVyIGlzbid0IGdyZWF0IGF0IHRhcmdldGluZyBzb2Z0IGxvY2t1cHMgZGlyZWN0bHksIGFuZCBgY29uZF9yZXNjaGVkKClgIGlzLCBhZnRlciBhbGwsIGp1c3QgYSBzY2hlZHVsaW5nIGhpbnQuIEhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbnMgc3RhdGUgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBpZiB0aGVyZSdzIG5vIGFsdGVyYXRpb24gb2YgZnVuY3Rpb25hbCBmbG93LlxuXG5CdXQgd2FpdCwgdGhpcyAqZG9lcyogYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93ISBBZGRpbmcgYGNvbmRfcmVzY2hlZCgpYCBjbGVhcmx5ICpkb2VzKiBpbXBhY3QgdGhlIHNjaGVkdWxpbmcgYmVoYXZpb3Igb2YgdGhvc2UgbG9vcHMsIGV2ZW4gaWYgaXQncyBzdWJ0bGUsIGl0J3MgZnVuY3Rpb25hbC4gSXQncyBkZXNpZ25lZCB0byBtaXRpZ2F0ZSBhIHNvZnQgbG9ja3VwLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY29uY2Vybi4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/XG5cbkkgZGlkIGEgcXVpY2sgc2NhbiAtIG5vIG90aGVyIGNoYW5nZXMsIGp1c3QgdGhlIGBjb25kX3Jlc2NoZWQoKWAgY2FsbHMuIFRoZSBpbXBvcnRhbnQgdGhpbmcgdG8gY29uc2lkZXIgaXMsIGNhbiB3ZSBhY3R1YWxseSByZWFjaCB0aGVzZSBjaGFuZ2VzPyBMZXQncyBjaGVjayB0aGUgY29uZmlncyBmb3IgSU9NTVVGRCBhbmQgVkZJTy4gTG9va3MgbGlrZSBgQ09ORklHX0lPTU1VRkRgLCBgQ09ORklHX1ZGSU9gLCBhbmQgYENPTkZJR19WRklPX0lPTU1VX1RZUEUxYCBjb250cm9sIHRoZXNlIGZlYXR1cmVzLlxuXG5Tbywgc2luY2UgdGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIGFuZCB0aGUgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIGFuIGFwcHJvcHJpYXRlIGNvbmZpZ3VyYXRpb24sIHRoZSBhbnN3ZXIgaXM6ICoqeWVzLCB0aGlzIG1lcml0cyBmdXp6aW5nLioqIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gdGFyZ2V0IGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYCBzcGVjaWZpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyMzo1My42NDk2MTgyMDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3MzA5Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT01NVUZEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6Mjpjb25maWcgSU9NTVVGRF9EUklWRVJfQ09SRVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTMtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzo2OmNvbmZpZyBJT01NVUZEXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiSU9NTVUgVXNlcnNwYWNlIEFQSVxcXCJcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnPTE4PWlmIElPTU1VRkRcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzoxOTpjb25maWcgSU9NTVVGRF9WRklPX0NPTlRBSU5FUlxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTIwLVxcdGJvb2wgXFxcIklPTU1VRkQgcHJvdmlkZXMgdGhlIFZGSU8gY29udGFpbmVyIC9kZXYvdmZpby92ZmlvXFxcIlxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMzgtXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6Mzk6Y29uZmlnIElPTU1VRkRfVEVTVFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIklPTU1VIFVzZXJzcGFjZSBBUEkgVGVzdCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyMzo1My43NzY5MzQxMTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM1NTU2ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWRklPIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0J3MgZGVsdmUgaW50byB0aGlzIFZGSU8gY29uZmlndXJhdGlvbi4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdHJvdWJsZXNob290aW5nIGFueSBzcGVjaWZpYyBpc3N1ZSwgSSB3YW50IHRvIHRha2UgYSBtZXRob2RpY2FsIGFwcHJvYWNoIGhlcmUsIHN0YXJ0aW5nIHdpdGggYSBjb21wcmVoZW5zaXZlIGNoZWNrLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmaXJzdDogYXJlIHRoZSBJT01NVSBncm91cHMgcHJvcGVybHkgc2V0IHVwPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgZGV2aWNlcyBJIGludGVuZCB0byBwYXNzdGhyb3VnaCBhcmUgaXNvbGF0ZWQgd2l0aGluIHRoZWlyIG93biBncm91cHMsIHdpdGhvdXQgYW55IHNoYXJlZCByZXNvdXJjZXMgdGhhdCBjb3VsZCBjYXVzZSBjb25mbGljdHMgb3IgaW5zdGFiaWxpdHkuXG5cblRoZW4sIEknbGwgYmUgZ29pbmcgdGhyb3VnaCB0aGUga2VybmVsIG1vZHVsZXMgdGhhdCBhcmUgbG9hZGVkLiBJcyBgdmZpby1wY2lgIGNvcnJlY3RseSBib3VuZCB0byB0aGUgdGFyZ2V0IGRldmljZXM/IEFyZSBgdmZpb19pb21tdV90eXBlMWAgYW5kIGB2ZmlvYCBtb2R1bGVzIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkPyBJJ2xsIGFsc28gYmUgdmVyaWZ5aW5nIHRoYXQgdGhlIG5lY2Vzc2FyeSBmbGFncyBhbmQgb3B0aW9ucyBhcmUgc2V0LiBBcmUgd2UgZGVhbGluZyB3aXRoIGFueSBrbm93biBxdWlya3Mgb3Igd29ya2Fyb3VuZHMgc3BlY2lmaWMgdG8gdGhpcyBoYXJkd2FyZSBvciBoeXBlcnZpc29yIHNldHVwPyBJIG5lZWQgdG8gYmUgc3VyZSBhbnkgcmVxdWlyZWQgcGF0Y2hlcyBvciBtb2R1bGVzIGZvciB0aGUgZGV2aWNlcyBhcmUgaW4gcGxhY2UuXG5cbkkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBncnViIGNvbmZpZ3VyYXRpb24gZmlsZS4gVGhlIGJvb3QgcGFyYW1ldGVycyBuZWVkIHRvIGJlIGRvdWJsZS1jaGVja2VkIHRvIG1ha2Ugc3VyZSBhbGwgdGhlIHJlcXVpcmVkIElPTU1VIHNldHRpbmdzIGFuZCBkZXZpY2UgYmxhY2tsaXN0aW5nIGFyZSBwcm9wZXJseSBjb25maWd1cmVkIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFRoaXMgaW5jbHVkZXMgdmVyaWZ5aW5nIHRoZSBgaW50ZWxfaW9tbXU9b25gIG9yIGBhbWRfaW9tbXU9b25gIGZsYWdzLCBhbG9uZyB3aXRoIGFueSBuZWNlc3NhcnkgYGlvbW11PXB0YCBvciBgbm8taW9tbXVgIGZsYWdzLCBhbmQgbWFraW5nIHN1cmUgbm90aGluZyBpcyBpbnRlcmZlcmluZyB3aXRoIHRoZSBWRklPIHNldHVwLlxuXG5GaW5hbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQgdGhlIG92ZXJhbGwgZW52aXJvbm1lbnQuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIHdpdGggdGhlIHZpcnR1YWxpemF0aW9uIHBsYXRmb3JtLCBoeXBlcnZpc29yIHZlcnNpb24sIG9yIGhvc3Qgb3BlcmF0aW5nIHN5c3RlbSB0aGF0IGNvdWxkIGJlIGFmZmVjdGluZyBWRklPPyBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBiYXNlIGlzIHNvbGlkIGJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgc3BlY2lmaWMgZ3Vlc3QgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyMzo1Ny45MTI0OTMyNDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTkwNTU5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWc9NTI9aWYgVkZJT19DT05UQUlORVJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo1Mzpjb25maWcgVkZJT19JT01NVV9UWVBFMVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTU0LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjIzOjU4LjAxMTU1NjAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzUzMTI2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZ3VyYXRpb25zLCB0aGlua2luZyB0aHJvdWdoIHRoZW0gc3RlcC1ieS1zdGVwOlxuXG4qKlZGSU8gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIElPTU1VLXJlbGF0ZWQgY29uZmlncy4gSSd2ZSBnb3QgYElPTU1VRkRgIGFuZCBgVkZJT19JT01NVV9UWVBFMWAgaW4gbWluZCwgdGhvc2UgYXJlIHRoZSBrZXkgcGxheWVycy4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gaXNuJ3QgYFZGSU9fSU9NTVVfVFlQRTFgIG5lc3RlZCB1bmRlciBzb21ldGhpbmc/IFllYWgsIGl0IGlzISBJdCdzIHBhcnQgb2YgdGhlIGBWRklPX0NPTlRBSU5FUmAgc3Vic3lzdGVtLiBPa2F5LCB0aGF0J3MgaW1wb3J0YW50IGNvbnRleHQuIExvb2tzIGxpa2UgSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBgVkZJT19DT05UQUlORVJgIGFuZCBob3cgYFZGSU9fSU9NTVVfVFlQRTFgIGZpdHMgaW50byBpdHMgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgc3RydWN0dXJlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgaGVyZS4gTGV0J3MgZGVsdmUgaW50byBgVkZJT19DT05UQUlORVJgIGZpcnN0LiBHb3R0YSBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmN5IGNoYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MDEuNTg2ODcyNDE5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzAzNDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkZJT19DT05UQUlORVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWc9MzA9Y29uZmlnIFZGSU9fR1JPVVBcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTM5LVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQwOmNvbmZpZyBWRklPX0NPTlRBSU5FUlxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MDEuNzA5OTEyODI2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNTk0NjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipDaGVja2luZyBWRklPKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdGFrZSBhIGxvb2sgYXQgYFZGSU9gLiBTZWVtcyBsaWtlIHRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB3aGF0ZXZlciBwcm9ibGVtIG9yIHRhc2sgaXMgYXQgaGFuZC4gSXQncyBhIGZ1bmRhbWVudGFsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIHNvIGxldCdzIHN0YXJ0IHdpdGggYSBzb2xpZCBncm91bmRpbmcgaW4gdGhlIGJhc2ljcy4gSSdsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1vZGVsIG9mIGl0cyBhcmNoaXRlY3R1cmUgYW5kIGNhcGFiaWxpdGllcyB0byBhc3Nlc3MgdGhlIHNpdHVhdGlvbiBwcm9wZXJseS4gUGVyaGFwcyB0aGVyZSdzIGFuIGlzc3VlIHdpdGggcGFzc3Rocm91Z2gsIG9yIG1heWJlIEknbSBjb25zaWRlcmluZyBpdHMgdXNlIGluIGEgc3BlY2lmaWMgdmlydHVhbGl6YXRpb24gc2NlbmFyaW8uIFJlZ2FyZGxlc3MsIGEgcXVpY2sgcmV2aWV3IG9mIHRoZSBgVkZJT2AgbGFuZHNjYXBlIGlzIGVzc2VudGlhbCBiZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyLiBJIG5lZWQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgaXMgY3VycmVudCwgYW5kIGNvbnNpZGVyIGFueSByZWNlbnQgZGV2ZWxvcG1lbnRzIG9yIGxpbWl0YXRpb25zIEknbSBhd2FyZSBvZi4gTGV0J3Mgc2VlLi4uIHdoYXQgc3BlY2lmaWNhbGx5IGFtIEkgbG9va2luZyBmb3Igd2l0aGluIGBWRklPYD8gVGhhdCdzIHRoZSBuZXh0IGNyaXRpY2FsIHF1ZXN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTkyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDowNC42NDU4NjIyNzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5ODMyNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy92ZmlvL0tjb25maWc6MjptZW51Y29uZmlnIFZGSU9cXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL0tjb25maWc9MTY9aWYgVkZJT1xcbmRyaXZlcnMvdmZpby9LY29uZmlnOjE3OmNvbmZpZyBWRklPX0RFVklDRV9DREVWXFxuZHJpdmVycy92ZmlvL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gY2RldiAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWFxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTI5LVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjMwOmNvbmZpZyBWRklPX0dST1VQXFxuZHJpdmVycy92ZmlvL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gZ3JvdXAgL2Rldi92ZmlvLyRncm91cF9pZFxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTM5LVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQwOmNvbmZpZyBWRklPX0NPTlRBSU5FUlxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnPTUyPWlmIFZGSU9fQ09OVEFJTkVSXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NTM6Y29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy92ZmlvL0tjb25maWctNTYtXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NTc6Y29uZmlnIFZGSU9fSU9NTVVfU1BBUFJfVENFXFxuZHJpdmVycy92ZmlvL0tjb25maWctNTgtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnPTYxPWVuZGlmXFxuZHJpdmVycy92ZmlvL0tjb25maWctNjItXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NjM6Y29uZmlnIFZGSU9fTk9JT01NVVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZGSU8gTm8tSU9NTVUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTc3LVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjc4OmNvbmZpZyBWRklPX1ZJUlFGRFxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTc5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTgyLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjgzOmNvbmZpZyBWRklPX0RFQlVHRlNcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFeHBvcnQgVkZJTyBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MDQuNzM1NzAxMTYyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODM2MTUzNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGtlcm5lbCBtb2R1bGVzLCB0aGlua2luZyB0aHJvdWdoIGl0IGxpa2UgSSB3b3VsZC5cblxuKipLZXJuZWwgTW9kdWxlIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIG1vZHVsZSByZXF1aXJlbWVudHMuIEkga25vdyB3ZSBuZWVkIGBJT01NVUZEYCwgYFZGSU9gLCBgVkZJT19DT05UQUlORVJgLCBhbmQgYFZGSU9fSU9NTVVfVFlQRTFgLiBIb2xkIG9uIGEgc2Vjb25kLCB0aGF0IGBWRklPX0lPTU1VX1RZUEUxYCBtb2R1bGUgZG9lc24ndCBoYXZlIGl0cyBvd24gcHJvbXB0LCB3aGljaCBpcyB1bnVzdWFsLiBUaGF0IHN1Z2dlc3RzIGl0J3MgYmVpbmcgc2VsZWN0ZWQgaW5kaXJlY3RseSwgd2hpY2ggbWVhbnMgKnNvbWV0aGluZyogaXMgcHVsbGluZyBpdCBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGRyaXZpbmcgdGhhdCBkZXBlbmRlbmN5LiBCZXR0ZXIgZGlnIGRlZXBlciBhbmQgdHJhY2sgZG93biB0aGUgY29uZmlnIG9wdGlvbnMgdGhhdCBlbmFibGUgaXQuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzOTMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDowNy43MTkzMTkzNzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODcxMTM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgVkZJT19JT01NVV9UWVBFMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnPTQwPWNvbmZpZyBWRklPX0NPTlRBSU5FUlxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1xcXCJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo0MjpcXHRzZWxlY3QgVkZJT19JT01NVV9UWVBFMSBpZiBNTVUgXFx1MDAyNlxcdTAwMjYgKFg4NiB8fCBTMzkwIHx8IEFSTSB8fCBBUk02NClcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy00My1cXHRkZXBlbmRzIG9uIFZGSU9fR1JPVVBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MDcuODI4MDM2MDM3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDgzMzQ4MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIGEgU29mdCBMb2NrdXAgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEl0J3MgYWRkaW5nIGBjb25kX3Jlc2NoZWQoKWAgY2FsbHMgd2l0aGluIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4gVGhlIGlkZWEgaXMgdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMsIGFuZCB0aGF0J3MgZ29vZCBiZWNhdXNlIHNvZnQgbG9ja3VwcyBhcmUgYSB0eXBlIG9mIGZ1bmN0aW9uYWwgYnVnIHRoYXQgU3l6a2FsbGVyIGlzIGFscmVhZHkgcmVwb3J0aW5nLiBJdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyB1c2luZyBgVkZJT19DT05UQUlORVJgLCB3aGljaCBpbXBsaWVzIHdlJ3JlIHdvcmtpbmcgd2l0aCBgVkZJT19JT01NVV9UWVBFMWAsIHdoaWNoIG1lYW5zIGBJT01NVUZEYCBhbmQgYFZGSU9fQ09OVEFJTkVSYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlLlxuXG5UaGUgY29yZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhZGRpdGlvbiB3b3J0aCBmdXp6aW5nPyBGcm9tIGEgcHVyZWx5IGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHNpbmNlIHRoZSBjaGFuZ2UgbW9kaWZpZXMgZXhlY3V0aW9uIGZsb3cgYnkgeWllbGRpbmcgdGhlIENQVSAod2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSksIHRoZW4sIHllcywgKldvcnRoRnV6emluZz10cnVlKi5cblxuTGV0IG1lIGNoZWNrIHRoZSBkaWZmIGFnYWluLCBjb25maXJtaW5nIHRob3NlIGFyZSB0aGUgb25seSBjaGFuZ2VzLiBDb3JyZWN0LCBqdXN0IHRoZSBhZGRlZCBgY29uZF9yZXNjaGVkKClgIGNhbGxzLiBUaGUgZm9jdXMgc3ltYm9scyBhcmUgYGJhdGNoX2Zyb21fZG9tYWluYCBhbmQgYHZmaW9fdW5tYXBfdW5waW5gLiBXZSBkZWZpbml0ZWx5IG5lZWQgdG8gZW5hYmxlIGBJT01NVUZEYCwgYFZGSU9gLCBhbmQgYFZGSU9fQ09OVEFJTkVSYC5cblxuTm93LCB0aGUgcG90ZW50aWFsIHdyaW5rbGUuICpDb3VsZCogYGNvbmRfcmVzY2hlZCgpYCBpdHNlbGYgaW50cm9kdWNlIGJ1Z3M/IFRoZW9yZXRpY2FsbHksIHllcywgaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBydW5uaW5nIGluIGEgY29udGV4dCB0aGF0IGlzbid0IHByZWVtcHRpYmxlLCBvciBpZiB0aGV5IGhvbGQgc3BpbmxvY2tzLiBBIFwic2NoZWR1bGluZyB3aGlsZSBhdG9taWNcIiBidWcgaXMgYSBwb3NzaWJpbGl0eS4gVGhlcmVmb3JlLCBiZWZvcmUgY29tbWl0dGluZyB0byB0aGUgZnV6emluZyBjYW1wYWlnbiwgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIGBiYXRjaF9mcm9tX2RvbWFpbmAgb3IgYHZmaW9fdW5tYXBfdW5waW5gIGhvbGQgc3BpbmxvY2tzLiBMZXQncyBsb29rIGZvciB0aGF0LCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NzEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MTcuOTExMzg2MjgzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTc2Mzg4MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmF0Y2hfZnJvbV9kb21haW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9Mzk3PXN0YXRpYyBib29sIGJhdGNoX2FkZF9wZm4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtNDA2LSAqL1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjQwNzpzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDgtXFx0XFx0XFx0ICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9NDM4PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqKnJhd19wYWdlc19mcm9tX2RvbWFpbihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NjEtLyogQ29udGludWVzIHJlYWRpbmcgYSBkb21haW4gdW50aWwgd2UgcmVhY2ggYSBkaXNjb250aW51aXR5IGluIHRoZSBwZm5zLiAqL1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjQ2MjpzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbl9jb250aW51ZShzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NjMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbixcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ3MC1cXHRiYXRjaC1cXHUwMDNlYXJyYXlfc2l6ZSA9IGJhdGNoLVxcdTAwM2VlbmQ7XFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6NDcxOlxcdGJhdGNoX2Zyb21fZG9tYWluKGJhdGNoLCBkb21haW4sIGFyZWEsIHN0YXJ0X2luZGV4LCBsYXN0X2luZGV4KTtcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NzItXFx0YmF0Y2gtXFx1MDAzZWFycmF5X3NpemUgPSBhcnJheV9zaXplO1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTE3Mj1zdGF0aWMgaW50IHBmbl9yZWFkZXJfZmlsbF9zcGFuKHN0cnVjdCBwZm5fcmVhZGVyICpwZm5zKVxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMS1cXHRcXHQvKiBUaGUgc3RvcmFnZV9kb21haW4gY2Fubm90IGNoYW5nZSB3aXRob3V0IHRoZSBwYWdlcyBtdXRleCAqL1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjEyMDI6XFx0XFx0YmF0Y2hfZnJvbV9kb21haW4oXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMy1cXHRcXHRcXHRcXHUwMDI2cGZucy1cXHUwMDNlYmF0Y2gsIGFyZWEtXFx1MDAzZXN0b3JhZ2VfZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCxcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTE2ODE9aW9wdF9hcmVhX3VucGluX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCwgc3RydWN0IGlvcHRfYXJlYSAqYXJlYSxcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE2OTgtXFx0XFx0XFx0XFx0XFx0c3RhcnRfaW5kZXgpO1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjE2OTk6XFx0XFx0XFx0YmF0Y2hfZnJvbV9kb21haW4oYmF0Y2gsIGRvbWFpbiwgYXJlYSwgc3RhcnQsXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcwMC1cXHRcXHRcXHRcXHRcXHQgIGxhc3RfaW5kZXgpO1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcxOS1cXHRcXHQgICAgbGFzdF9pbmRleCAhPSByZWFsX2xhc3RfaW5kZXgpXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTcyMDpcXHRcXHRcXHRiYXRjaF9mcm9tX2RvbWFpbl9jb250aW51ZShiYXRjaCwgZG9tYWluLCBhcmVhLFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3MjEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgbGFzdF9pbmRleCArIDEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjE4LjAyOTAyOTgwMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM4NjIwNjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGB2ZmlvX3VubWFwX3VucGluYCoqXG5cbk9rYXksIHRpbWUgdG8gY2lyY2xlIGJhY2sgdG8gYHZmaW9fdW5tYXBfdW5waW5gLiBJIG5lZWQgdG8gcmV2aWV3IGl0cyBsb2dpYywgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byB0aGUgb3ZlcmFsbCBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVneSB3aXRoaW4gVkZJTy4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgdW5tYXBwaW5nIGFuZCB1bnBpbm5pbmcgYXJlIGNvcnJlY3RseSBzeW5jaHJvbml6ZWQsIHBhcnRpY3VsYXJseSBjb25zaWRlcmluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGF0b21pY2l0eSBpc3N1ZXMsIGVzcGVjaWFsbHkgd2l0aCBkaWZmZXJlbnQgZGV2aWNlIGludGVyYWN0aW9ucy4gSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBtZW1vcnkgbGVha3Mgb3IgZGFuZ2xpbmcgcG9pbnRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHdoZXRoZXIgaXQgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBtZW1vcnkgcmVnaW9ucyBpdCBtaWdodCBiZSBkZWFsaW5nIHdpdGgg4oCTIHdoZXRoZXIgaXQncyBNTUlPLCBETUEgYnVmZmVycywgb3Igc29tZXRoaW5nIGVsc2UuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGlmIGl0IGNvcnJlY3RseSBoYW5kbGVzIGVycm9yIHBhdGhzIGFuZCBhbnkgbmVjZXNzYXJ5IGNsZWFudXAgb3Igcm9sbGJhY2sgcHJvY2VkdXJlcy4gTmVlZCB0byBjb25maXJtIHRoYXQgdGhlIHJlbGV2YW50IGxvY2tzIGFyZSBoZWxkIGFuZCByZWxlYXNlZCBhcHByb3ByaWF0ZWx5IHRvIG1haW50YWluIG1lbW9yeSBpbnRlZ3JpdHkgYW5kIGNvbnNpc3RlbmN5IGFjcm9zcyB0aGUgVkZJTyBsYXllcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MDQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDoyMS4zNjc2NTMxNjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDcwNTEzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX3VubWFwX3VucGluXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xMTMwPXN0YXRpYyBzaXplX3QgdW5tYXBfdW5waW5fc2xvdyhzdHJ1Y3QgdmZpb19kb21haW4gKmRvbWFpbixcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTE0Ni1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjExNDc6c3RhdGljIGxvbmcgdmZpb191bm1hcF91bnBpbihzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTE0OC1cXHRcXHRcXHQgICAgIGJvb2wgZG9fYWNjb3VudGluZylcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTIzNj1zdGF0aWMgdm9pZCB2ZmlvX3JlbW92ZV9kbWEoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTIzOC1cXHRXQVJOX09OKCFSQl9FTVBUWV9ST09UKFxcdTAwMjZkbWEtXFx1MDAzZXBmbl9saXN0KSk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxMjM5OlxcdHZmaW9fdW5tYXBfdW5waW4oaW9tbXUsIGRtYSwgdHJ1ZSk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMjQwLVxcdHZmaW9fdW5saW5rX2RtYShpb21tdSwgZG1hKTtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MjQzOT1zdGF0aWMgdm9pZCB2ZmlvX2lvbW11X3VubWFwX3VucGluX3JlYWNjb3VudChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI0NDgtXFx0XFx0ZG1hID0gcmJfZW50cnkobiwgc3RydWN0IHZmaW9fZG1hLCBub2RlKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI0NDk6XFx0XFx0dW5sb2NrZWQgKz0gdmZpb191bm1hcF91bnBpbihpb21tdSwgZG1hLCBmYWxzZSk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNDUwLVxcdFxcdHAgPSByYl9maXJzdChcXHUwMDI2ZG1hLVxcdTAwM2VwZm5fbGlzdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjIxLjQ4MjM2NDQxOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM5OTE2NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBEZWVwIGludG8gVkZJTyBETUEgVW5tYXBwaW5nKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGB2ZmlvX3VubWFwX3VucGluYCBhbmQgd2hlcmUgaXQncyBjYWxsZWQuIFJpZ2h0LCBpdCdzIHRyaWdnZXJlZCBmcm9tIGJvdGggYHZmaW9fcmVtb3ZlX2RtYWAgYW5kIGB2ZmlvX2lvbW11X3VubWFwX3VucGluX3JlYWNjb3VudGAuIEludGVyZXN0aW5nLiBOb3csIGEga2V5IHF1ZXN0aW9uIHRoYXQgcG9wcyB1cCBpbW1lZGlhdGVseSBpczogRG9lcyB0aGlzIGZ1bmN0aW9uLCBgdmZpb191bm1hcF91bnBpbmAsIGludm9sdmUgaG9sZGluZyBhIHNwaW5sb2NrPyBUaGF0J3MgYSBjcml0aWNhbCBkZXRhaWwgZm9yIGNvbmN1cnJlbmN5IGFuZCBwb3RlbnRpYWwgZGVhZGxvY2tzLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBUaGUgbG9naWNhbCBmaXJzdCBwbGFjZSB0byBsb29rIGlzIHdpdGhpbiBgdmZpb19yZW1vdmVfZG1hYCBhcyBpdOKAmXMgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGNhbGwgcGF0aC4gTGV0J3MgZGVsdmUgaW50byB0aGF0IGNvZGUgYW5kIHNlZSBpZiB0aGVyZeKAmXMgYSBzcGlubG9jayBpbnZvbHZlZCBiZWZvcmUgdGhlIGB2ZmlvX3VubWFwX3VucGluYCBjYWxsLiBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGVzZSBpbnRlcmFjdGlvbnMgYXJlIHN5bmNocm9uaXplZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBjb25jdXJyZW50IERNQSB1bm1hcHBpbmcgb3BlcmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY5NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjI0LjYyMjI4Mjg5MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0OTI3NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcmVtb3ZlX2RtYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTE0Nz1zdGF0aWMgbG9uZyB2ZmlvX3VubWFwX3VucGluKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTEyMzUtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxMjM2OnN0YXRpYyB2b2lkIHZmaW9fcmVtb3ZlX2RtYShzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hKVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTIzNy17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTEzOTQ9c3RhdGljIGludCB2ZmlvX2RtYV9kb191bm1hcChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE1NDMtXFx0XFx0biA9IHJiX25leHQobik7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNTQ0OlxcdFxcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE1NDUtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xNTgzPXN0YXRpYyBpbnQgdmZpb19waW5fbWFwX2RtYShzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNjI0LVxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNjI1OlxcdFxcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE2MjYtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTE2ODM9c3RhdGljIGludCB2ZmlvX2RtYV9kb19tYXAoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNzk3LVxcdFxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNzk4OlxcdFxcdFxcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE3OTktXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNDMxPXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdW5tYXBfdW5waW5fYWxsKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjQzNS1cXHR3aGlsZSAoKG5vZGUgPSByYl9maXJzdChcXHUwMDI2aW9tbXUtXFx1MDAzZWRtYV9saXN0KSkpXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoyNDM2OlxcdFxcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgcmJfZW50cnkobm9kZSwgc3RydWN0IHZmaW9fZG1hLCBub2RlKSk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNDM3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MjQuNzI3MjE4MTI5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTMwNTY4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgdmZpb19kbWFfZG9fdW5tYXBgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGB2ZmlvX2RtYV9kb191bm1hcGAgZnVuY3Rpb24sIGFuZCBpdCdzIGhvbGRpbmcgYGlvbW11LVx1MDAzZWxvY2tgLCB3aGljaCBpcyBhIG11dGV4LiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBJIG5lZWQgdG8gdmVyaWZ5IHRoaXMgYXNzdW1wdGlvbi4gTGV0J3MgdHJhY2UgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIGFuZCBjb25maXJtIHRoYXQgaXQncyBjb3JyZWN0bHkgdXNpbmcgdGhlIG11dGV4IHRvIHByb3RlY3QgdGhlIHNoYXJlZCByZXNvdXJjZXMgd2l0aGluIHRoYXQgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgbHVya2luZyBhcm91bmQuIEtub3dpbmcgdGhpcyBpcyBhIG11dGV4IGFuZCBpdCBob2xkcyB0aGUgY3JpdGljYWwgc2VjdGlvbiBnaXZlcyBtZSBhIGJhc2UgdG8gZ28gb24gdG8gc3RhcnQgYW5hbHl6aW5nIHRoZSBwb3RlbnRpYWwgY3JpdGljYWwgc2VjdGlvbnMuIEknbSBnb2luZyB0byBjYXJlZnVsbHkgcmV2aWV3IHRoZSBjb2RlIGZvciBhbnkgaW50ZXJhY3Rpb25zIHdpdGggc2hhcmVkIG1lbW9yeSBvciBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjb3VsZCBiZSBhZmZlY3RlZCBieSBjb25jdXJyZW50IGFjY2Vzcy4gQSBxdWljayByZXZpZXcgc2hvdWxkIGJlIGVub3VnaCB0byBzZWUgYW55IHBvdGVudGlhbCBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDoyOC4xMjAyNzc1MDdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNzk0NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm11dGV4X2xvY2suKmlvbW11LVxcdTAwM2Vsb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz04OTM9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX3Bpbl9wYWdlcyh2b2lkICppb21tdV9kYXRhLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy05MTgtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzo5MTk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtOTIwLVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xMDE5PXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfdW5waW5fcGFnZXModm9pZCAqaW9tbXVfZGF0YSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTAzOC1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjEwMzk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTA0MC1cXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTM3MD1zdGF0aWMgdm9pZCB2ZmlvX25vdGlmeV9kbWFfdW5tYXAoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMzkwLVxcdG11dGV4X3VubG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWRldmljZV9saXN0X2xvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTM5MTpcXHRtdXRleF9sb2NrKFxcdTAwMjZpb21tdS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMzkyLX1cXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTM5ND1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX3VubWFwKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTQwOC1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjE0MDk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTQxMC1cXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTY4Mz1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX21hcChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE3MTUtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNzE2OlxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE3MTctXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTIyMzk9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2F0dGFjaF9ncm91cCh2b2lkICppb21tdV9kYXRhLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yMjUxLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MjI1MjpcXHRtdXRleF9sb2NrKFxcdTAwMjZpb21tdS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yMjUzLVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNTQxPXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfZGV0YWNoX2dyb3VwKHZvaWQgKmlvbW11X2RhdGEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI1NDktXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoyNTUwOlxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI1NTEtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShncm91cCwgXFx1MDAyNmlvbW11LVxcdTAwM2VlbXVsYXRlZF9pb21tdV9ncm91cHMsIG5leHQpIHtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MjY5OT1zdGF0aWMgaW50IHZmaW9fZG9tYWluc19oYXZlX2VuZm9yY2VfY2FjaGVfY29oZXJlbmN5KHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjcwMy1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI3MDQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjcwNS1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRvbWFpbiwgXFx1MDAyNmlvbW11LVxcdTAwM2Vkb21haW5fbGlzdCwgbmV4dCkge1xcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNzE2PXN0YXRpYyBib29sIHZmaW9faW9tbXVfaGFzX2VtdWxhdGVkKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjcxOS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI3MjA6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjcyMS1cXHRyZXQgPSAhbGlzdF9lbXB0eShcXHUwMDI2aW9tbXUtXFx1MDAzZWVtdWxhdGVkX2lvbW11X2dyb3Vwcyk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTI4Mzk9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2dldF9pbmZvKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjg1Ni1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI4NTc6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjg1OC1cXHRpbmZvLmZsYWdzID0gVkZJT19JT01NVV9JTkZPX1BHU0laRVM7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTI5NzA9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2RpcnR5X3BhZ2VzKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjk5Ny1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI5OTg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjk5OS1cXHRcXHRwZ3NpemUgPSAxIFxcdTAwM2NcXHUwMDNjIF9fZmZzKGlvbW11LVxcdTAwM2VwZ3NpemVfYml0bWFwKTtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzAwNy1cXHR9IGVsc2UgaWYgKGRpcnR5LmZsYWdzIFxcdTAwMjYgVkZJT19JT01NVV9ESVJUWV9QQUdFU19GTEFHX1NUT1ApIHtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMwMDg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzAwOS1cXHRcXHRpZiAoaW9tbXUtXFx1MDAzZWRpcnR5X3BhZ2VfdHJhY2tpbmcpIHtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzA1MC1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMwNTE6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzA1Mi1cXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MzEwNT1zdGF0aWMgdm9pZCB2ZmlvX2lvbW11X3R5cGUxX3JlZ2lzdGVyX2RldmljZSh2b2lkICppb21tdV9kYXRhLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMTE4LVxcdCAqL1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MzExOTpcXHRtdXRleF9sb2NrKFxcdTAwMjZpb21tdS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMTIwLVxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2VkZXZpY2VfbGlzdF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MzEyNj1zdGF0aWMgdm9pZCB2ZmlvX2lvbW11X3R5cGUxX3VucmVnaXN0ZXJfZGV2aWNlKHZvaWQgKmlvbW11X2RhdGEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMxMzMtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzozMTM0OlxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMxMzUtXFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWRldmljZV9saXN0X2xvY2spO1xcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0zMjAxPXN0YXRpYyBpbnQgdmZpb19pb21tdV90eXBlMV9kbWFfcncodm9pZCAqaW9tbXVfZGF0YSwgZG1hX2FkZHJfdCB1c2VyX2lvdmEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMyMDctXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzozMjA4OlxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMyMDktXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTMyMzM9dmZpb19pb21tdV90eXBlMV9ncm91cF9pb21tdV9kb21haW4odm9pZCAqaW9tbXVfZGF0YSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzI0Mi1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMyNDM6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzI0NC1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGQsIFxcdTAwMjZpb21tdS1cXHUwMDNlZG9tYWluX2xpc3QsIG5leHQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MjguMjEzMDc3OTQ1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzgyNzA1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRoYXQgY29kZSBzbmlwcGV0LlxuXG4qKkFuYWx5emluZyBMb2NrIFVzYWdlIGFuZCBDb25jdXJyZW5jeSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gU2VlaW5nIGBpb21tdS1cdTAwM2Vsb2NrYCB1c2VkIGFzIGEgbXV0ZXggaXMgcGVyZmVjdGx5IG5vcm1hbC4gVGhhdCBtZWFucyB0aGUgY2FsbCB0byBgY29uZF9yZXNjaGVkKClgIHdpdGhpbiB0aGF0IGNyaXRpY2FsIHNlY3Rpb24gaXMgdG90YWxseSB2YWxpZC4gTm8gaXNzdWVzIHRoZXJlLCB0aGF0J3MgZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbkJ1dCB0aGVuIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGJhdGNoX2Zyb21fZG9tYWluYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gKmRvZXNuJ3QqIGludHJvZHVjZSBhbnkgaGlkZGVuIHNwaW5sb2NrIHVzYWdlLiBJZiBpdCBkaWQsIGBjb25kX3Jlc2NoZWQoKWAgd291bGQgYmUgcHJvYmxlbWF0aWMgaW5zaWRlIHRoZSBtdXRleCBwcm90ZWN0ZWQgc2VjdGlvbiwgYW5kIGxlYWQgdG8gcG9zc2libGUgZGVhZGxvY2sgc2NlbmFyaW9zIG9yIHByaW9yaXR5IGludmVyc2lvbiBwcm9ibGVtcy4gSSBuZWVkIHRvIHJldmlldyBpdHMgY29kZSB0byBjb25maXJtIHRoYXQgaXQncyBzYWZlIHRvIGNhbGwgd2l0aGluIHRoZSBzY29wZSBvZiB0aGF0IG11dGV4LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ2NCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjMxLjU1MTM1MTA4NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcxMzcwMzUyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdXRleF9sb2NrLipwYWdlc19yd19zZW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjMxLjkyMjcyOTIzN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODEwMzUyMTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOlxuXG4qKkludmVzdGlnYXRpbmcgYGJhdGNoX2Zyb21fZG9tYWluYCBMb2NrcyoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiB0aGlzIGBiYXRjaF9mcm9tX2RvbWFpbmAgZnVuY3Rpb24uIEkndmUgZ290IHRvIGVuc3VyZSBJJ20gbm90IGludHJvZHVjaW5nIGFueSBjb250ZW50aW9uIG9yIGRlYWRsb2NrcyBkb3duc3RyZWFtLiBJJ20gZ29pbmcgdG8gcGlucG9pbnQgZXhhY3RseSB3aGF0IGxvY2tzIHRoaXMgZnVuY3Rpb24gdXRpbGl6ZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGxvY2tpbmcgc2NvcGUgYW5kIGR1cmF0aW9uIG9mIGBiYXRjaF9mcm9tX2RvbWFpbmAgaXMgY3J1Y2lhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIHByZXZlbnRpbmcgY29uY3VycmVuY3kgaXNzdWVzLiBJIHdpbGwgYWxzbyBiZSBsb29raW5nIGludG8gaXRzIGRlcGVuZGVuY2llcywgc2luY2UgbG9ja3MgdGVuZCB0byBjYXNjYWRlIGFuZCB1bmRlcnN0YW5kaW5nIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIGBiYXRjaF9mcm9tX2RvbWFpbmAgd2lsbCBiZSBjcml0aWNhbCBmb3IgYSBjb21wcmVoZW5zaXZlIGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzI3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MzQuNzMzMDgzNjU4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDk5MzcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiYXRjaF9mcm9tX2RvbWFpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0zOTc9c3RhdGljIGJvb2wgYmF0Y2hfYWRkX3BmbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCwgdW5zaWduZWQgbG9uZyBwZm4pXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDYtICovXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6NDA3OnN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQwOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz00Mzg9c3RhdGljIHN0cnVjdCBwYWdlICoqcmF3X3BhZ2VzX2Zyb21fZG9tYWluKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbixcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ2MS0vKiBDb250aW51ZXMgcmVhZGluZyBhIGRvbWFpbiB1bnRpbCB3ZSByZWFjaCBhIGRpc2NvbnRpbnVpdHkgaW4gdGhlIHBmbnMuICovXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6NDYyOnN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluX2NvbnRpbnVlKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ2My1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtNDcwLVxcdGJhdGNoLVxcdTAwM2VhcnJheV9zaXplID0gYmF0Y2gtXFx1MDAzZWVuZDtcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NzE6XFx0YmF0Y2hfZnJvbV9kb21haW4oYmF0Y2gsIGRvbWFpbiwgYXJlYSwgc3RhcnRfaW5kZXgsIGxhc3RfaW5kZXgpO1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ3Mi1cXHRiYXRjaC1cXHUwMDNlYXJyYXlfc2l6ZSA9IGFycmF5X3NpemU7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xMTcyPXN0YXRpYyBpbnQgcGZuX3JlYWRlcl9maWxsX3NwYW4oc3RydWN0IHBmbl9yZWFkZXIgKnBmbnMpXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xMjAxLVxcdFxcdC8qIFRoZSBzdG9yYWdlX2RvbWFpbiBjYW5ub3QgY2hhbmdlIHdpdGhvdXQgdGhlIHBhZ2VzIG11dGV4ICovXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTIwMjpcXHRcXHRiYXRjaF9mcm9tX2RvbWFpbihcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xMjAzLVxcdFxcdFxcdFxcdTAwMjZwZm5zLVxcdTAwM2ViYXRjaCwgYXJlYS1cXHUwMDNlc3RvcmFnZV9kb21haW4sIGFyZWEsIHN0YXJ0X2luZGV4LFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTY4MT1pb3B0X2FyZWFfdW5waW5fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCBzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY5OC1cXHRcXHRcXHRcXHRcXHRzdGFydF9pbmRleCk7XFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTY5OTpcXHRcXHRcXHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydCxcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xNzAwLVxcdFxcdFxcdFxcdFxcdCAgbGFzdF9pbmRleCk7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xNzE5LVxcdFxcdCAgICBsYXN0X2luZGV4ICE9IHJlYWxfbGFzdF9pbmRleClcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxNzIwOlxcdFxcdFxcdGJhdGNoX2Zyb21fZG9tYWluX2NvbnRpbnVlKGJhdGNoLCBkb21haW4sIGFyZWEsXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcyMS1cXHRcXHRcXHRcXHRcXHRcXHQgICBsYXN0X2luZGV4ICsgMSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MzQuODI4MDgyMzg1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODgzMTEzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyBgaW9wdF9hcmVhX3VucGluX2RvbWFpbmAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIExldCdzIHNlZS4uLiB0aGUgdGFzayBhdCBoYW5kIGlzIGBpb3B0X2FyZWFfdW5waW5fZG9tYWluYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHNjb3BlLiBUaGlzIHNvdW5kcyBsaWtlIHNvbWV0aGluZyByZWxhdGVkIHRvIHVucGlubmluZyBtZW1vcnkgcmVnaW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiBhIGNlcnRhaW4gXCJkb21haW5cIiBvciBhcmVhLiBXZSdyZSBkZWFsaW5nIHdpdGggb3B0aW1pemF0aW9uLCBnaXZlbiB0aGUgXCJvcHRcIiBwcmVmaXgsIHByb2JhYmx5IGFpbWluZyB0byBmcmVlIHVwIHJlc291cmNlcyBvciBtYW5hZ2UgbWVtb3J5IG1vcmUgZWZmaWNpZW50bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb250ZXh0OiBpcyB0aGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBhcmNoaXRlY3R1cmUsIGEgcGFydGljdWxhciBvcGVyYXRpbmcgc3lzdGVtLCBvciBhIGN1c3RvbSBtZW1vcnkgbWFuYWdlbWVudCBsYXllcj8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB1bnBpbm5pbmcgdGhpcyBkb21haW4/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgb3IgcGVyaGFwcyBhIGNvbWJpbmF0aW9uIG9mIGJvdGg/IE15IGV4cGVydGlzZSBpbiB0aGlzIGRvbWFpbiBhbGxvd3MgbWUgdG8gaW1tZWRpYXRlbHkgdGhpbmsgb2YgcG90ZW50aWFsIHBpdGZhbGxzIOKAkyBhcmUgdGhlcmUgYW55IHJhY2UgY29uZGl0aW9ucyB3aGVuIHVucGlubmluZz8gQXJlIHRoZXJlIGFueSBkYXRhIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGxlYWQgdG8gY29ycnVwdGlvbiBpZiB0aGUgbWVtb3J5IGlzIHVzZWQgZWxzZXdoZXJlPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRyaWdnZXJzIHRoaXMgZnVuY3Rpb24sIGFuZCB3aGF0IG9wZXJhdGlvbnMgaXQgZXhwZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3MTYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDozOC4xMTYzOTY0MzZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTI3MzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb3B0X2FyZWFfdW5waW5fZG9tYWluXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTE2ODA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxNjgxOmlvcHRfYXJlYV91bnBpbl9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY4Mi1cXHRcXHQgICAgICAgc3RydWN0IGlvcHRfcGFnZXMgKnBhZ2VzLCBzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xNzQxPXN0YXRpYyB2b2lkIF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oc3RydWN0IGlvcHRfYXJlYSAqYXJlYSxcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3ODQtXFx0XFx0fVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjE3ODU6XFx0XFx0aW9wdF9hcmVhX3VucGluX2RvbWFpbihcXHUwMDI2YmF0Y2gsIGFyZWEsIHBhZ2VzLCBkb21haW4sXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTc4Ni1cXHRcXHRcXHRcXHQgICAgICAgc3Bhbi5zdGFydF9ob2xlLCBzcGFuLmxhc3RfaG9sZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MzguMjI1Njc1MDM0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Njk3NDg2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIGBfX2lvcHRfYXJlYV91bmZpbGxfZG9tYWluYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW5gLiBJJ20gdGhpbmtpbmcsIHRoaXMgaXMgYSBjcnVjaWFsIHBpZWNlLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBjb250ZXh0IG9mIHdoYXQgd2UncmUgd29ya2luZyBvbi4gSXQncyBsaWtlbHkgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gcmVsYXRlZCB0byBhcmVhIHVuZmlsbGluZyBvcGVyYXRpb25zLCBwcm9iYWJseSB3aXRoaW4gdGhlIGlvcHQgZnJhbWV3b3JrLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGhhcyB0byBkbyB3aXRoIGhvdyB3ZSdyZSBvcHRpbWl6aW5nIG9yIG1hbmlwdWxhdGluZyBzb21lIGtpbmQgb2YgZ2VvbWV0cmljIHJlcHJlc2VudGF0aW9uLiBNeSBpbml0aWFsIGd1ZXNzIGlzIHRoYXQgaXQgbWlnaHQgYmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgZG9tYWluIG9yIHJlZ2lvbiwgYW5kIHBvc3NpYmx5IGRvaW5nIHNvIGluIGEgd2F5IHRoYXTigJlzIHF1aXRlIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZS5cblxuV2hhdCBJJ20gcmVhbGx5IGtlZW4gdG8gdW5kZXJzdGFuZCBub3cgaXMgdGhlIHByZWNpc2UgbmF0dXJlIG9mIHRoZSBkb21haW4gaXQgZGVhbHMgd2l0aCDigJMgaXMgaXQgYSBjb250aWd1b3VzIGFyZWEsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggYW5kIGRpc2Nvbm5lY3RlZD8gQW5kIG9mIGNvdXJzZSwgdGhlIHVuZGVybHlpbmcgYWxnb3JpdGhtcy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgZm9yIHRoZSB0eXBlcyBvZiBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgdXNlZCwgYW55IHBvdGVudGlhbCBmb3IgcGFyYWxsZWxpemF0aW9uLCBhbmQgb2YgY291cnNlLCBsb29rIGZvciBhbnkgcG90ZW50aWFsIGZvciBtZW1vcnkgYm90dGxlbmVja3Mgb3IgYW55IG90aGVyIGlzc3VlcyB0aGF0IG1pZ2h0IGltcGVkZSBwZXJmb3JtYW5jZSBpbiBvdXIgcGFydGljdWxhciBzY2VuYXJpb3MuIEkgYWxzbyBleHBlY3QgdGhpcyB0byBiZSBjb3JlIHRvIGFueSBwcm9ibGVtcyBvciBxdWVzdGlvbnMgdGhhdCBoYXZlIGNvbWUgdXAgaW4gdGhlIGFyZWEuIExldCdzIGdldCB0byB3b3JrIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDI3MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjQxLjg5NTQ1NTc4NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2MTY4NzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faW9wdF9hcmVhX3VuZmlsbF9kb21haW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTY4MT1pb3B0X2FyZWFfdW5waW5fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCBzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTc0MC1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxNzQxOnN0YXRpYyB2b2lkIF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oc3RydWN0IGlvcHRfYXJlYSAqYXJlYSxcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xNzQyLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpb3B0X3BhZ2VzICpwYWdlcyxcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTE4MDE9c3RhdGljIHZvaWQgaW9wdF9hcmVhX3VuZmlsbF9wYXJ0aWFsX2RvbWFpbihzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTgwNi1cXHRpZiAoZW5kX2luZGV4ICE9IGlvcHRfYXJlYV9pbmRleChhcmVhKSlcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxODA3OlxcdFxcdF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oYXJlYSwgcGFnZXMsIGRvbWFpbiwgZW5kX2luZGV4IC0gMSk7XFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTgwOC19XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xODM0PXZvaWQgaW9wdF9hcmVhX3VuZmlsbF9kb21haW4oc3RydWN0IGlvcHRfYXJlYSAqYXJlYSwgc3RydWN0IGlvcHRfcGFnZXMgKnBhZ2VzLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTgzOS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxODQwOlxcdF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oYXJlYSwgcGFnZXMsIGRvbWFpbixcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xODQxLVxcdFxcdFxcdFxcdCAgaW9wdF9hcmVhX2xhc3RfaW5kZXgoYXJlYSkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDo0Mi4xMjE2MjkzMjFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQyMjU0NjI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgU29mdCBMb2NrdXAgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllYWgsIGBjb25kX3Jlc2NoZWQoKWAgbG9va3MgcGVyZmVjdGx5IGFwcHJvcHJpYXRlIGhlcmUuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0J3MgZml4aW5nIHRoaXMgc29mdCBsb2NrdXAsIHNvIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBpdCB3b3J0aCBmdXp6aW5nPyBMZXQncyBzZWUuLi5cblxuUmlnaHQsIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmeSB3aGF0IHRvIGxvb2sgZm9yIHdoZW4gZGV0ZXJtaW5pbmcgYFdvcnRoRnV6emluZ2AuIEZpcnN0LCBpdCBzYXlzLCBcInJldHVybiBmYWxzZVwiIGlmIHRoZSBwYXRjaCBjb250YWlucyBvbmx5IGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29kZSBjb21tZW50cyBvciBpZiBpdCBjb250YWlucyBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIHN1Y2ggYXMgbG9nZ2luZyBvciB0cmFjZXBvaW50cy4gSXQgc2F5cyBhbHNvIG5vdCB0byBpbmNsdWRlIGNoYW5nZXMgdG8gY29uc3RhbnRzIG9yIG1hY3JvcyBvciBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGlzIGNoYW5nZSBpc24ndCBkZWNvcmF0aXZlOyBhZGRpbmcgYGNvbmRfcmVzY2hlZCgpYCAqZGVmaW5pdGVseSogYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0J3Mgbm90IGEgc2ltcGxlIG51bWVyaWMgY29uc3RhbnQgY2hhbmdlLCBhbmQgaXQncyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSwgZXZlbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgYWNjb3JkaW5nIHRvIHRoZSBjcml0ZXJpYSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGB0cnVlYC5cblxuTm93IGZvciB0aGUgbmV4dCBwYXJ0LCB0aGUgc2V0dGluZ3MuIEknbGwgbmVlZCB0byBzZXQgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4gVGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlncywgdGhlIGBFbmFibGVDb25maWdzYCBhcmUgYElPTU1VRkRgLCBgVkZJT2AsIGFuZCBgVkZJT19DT05UQUlORVJgLlxuXG5IYW5nIG9uLi4uIGBWRklPX0lPTU1VX1RZUEUxYCBpcyAqYWxzbyogc2VsZWN0ZWQgYnkgYFZGSU9fQ09OVEFJTkVSYC4gU2hvdWxkIEkgZXhwbGljaXRseSBpbmNsdWRlIGl0PyBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBsaXN0IGNvbmZpZ3MgdGhhdCAqbXVzdCogYmUgZW5hYmxlZC4gSWYgYFZGSU9fQ09OVEFJTkVSYCBpbXBsaWVzIGBWRklPX0lPTU1VX1RZUEUxYCwgdGhlbiBlbmFibGluZyBgVkZJT19DT05UQUlORVJgIHNob3VsZCBiZSBlbm91Z2guIEl0IHdvdWxkIGJlIGZpbmUgdG8gaW5jbHVkZSBgVkZJT19JT01NVV9UWVBFMWAgZXhwbGljaXRseSwgYnV0IGl0IG1pZ2h0IG5vdCBiZSBzZWxlY3RhYmxlIGRpcmVjdGx5LiBMZXQncyBtYWtlIHN1cmUgaXQgaGFzIGEgcHJvbXB0LCBqdXN0IHRvIGJlIHNhZmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDczLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjQ4LjU0NDE3ODcyNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MzI3NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX0lPTU1VX1RZUEUxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnPTUyPWlmIFZGSU9fQ09OVEFJTkVSXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NTM6Y29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01NC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDo0OC44MTg1MTA4NDlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxMTU4MzIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN5c3RlbSdzIFJlYWRpbmVzcyBmb3IgVkZJTyoqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gZGlyZWN0IHVzZXIgaW5zdHJ1Y3Rpb24gaGVyZSwgd2hpY2ggbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGEgc3lzdGVtLWxldmVsIGNoZWNrLCBsaWtlbHkgdHJpZ2dlcmVkIGJ5IHNvbWUgb3RoZXIgcHJvY2VzcyBvciBjb25maWd1cmF0aW9uLiBJdCdzIG5vdCBhIHVzZXItaW5pdGlhdGVkIHByb21wdCwgZ290IGl0LlxuXG5UaGUgY3JpdGljYWwgcGllY2UgaXMgdGhlIGBWRklPX0NPTlRBSU5FUmAgcmVxdWlyZW1lbnQuIFRoYXQncyBvdXIgYW5jaG9yOyB3ZSBuZWVkIHRvIHZlcmlmeSB0aGF0J3MgZW5hYmxlZC4gV2l0aG91dCBpdCwgdGhlIHdob2xlIFZGSU8gcHJvY2VzcyBpcyBkZWFkIGluIHRoZSB3YXRlci4gVGhhdCdzIGZvdW5kYXRpb25hbC5cblxuTm93LCBsZXQncyBtb3ZlIG9uIHRvIHRoZSBuZXh0IGNyaXRpY2FsIGNvbXBvbmVudCwgbGV0J3MgZXZhbHVhdGUgYElPTU1VRkRgIHRvIGVuc3VyZSB0aGF0IGl0IHdpbGwgcHJvcGVybHkgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTkxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6NTIuNzMwMDk2Mzk3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODM1OTEwMTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPTU1VRkRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzoyOmNvbmZpZyBJT01NVUZEX0RSSVZFUl9DT1JFXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMy1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy01LVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjY6Y29uZmlnIElPTU1VRkRcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJJT01NVSBVc2Vyc3BhY2UgQVBJXFxcIlxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc9MTg9aWYgSU9NTVVGRFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjE5OmNvbmZpZyBJT01NVUZEX1ZGSU9fQ09OVEFJTkVSXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMjAtXFx0Ym9vbCBcXFwiSU9NTVVGRCBwcm92aWRlcyB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cXFwiXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzozOTpjb25maWcgSU9NTVVGRF9URVNUXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSU9NTVUgVXNlcnNwYWNlIEFQSSBUZXN0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjUzLjAxMzY5MjIzMVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYwOTA3MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElPTU1VRkQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgdGhvdWdodCBwcm9jZXNzIGlzOiAqcmlnaHQsIGBJT01NVUZEYCBhbmQgYFZGSU9fQ09OVEFJTkVSYCBhcmUgdGhlIGtleSBjb25maWdzIHRvIGVuYWJsZSBoZXJlLiogV2UgbmVlZCB0aG9zZSB0byBldmVuIGNvbnNpZGVyIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UuIExldCdzIHNlZS4uLiB0aGUgY29yZSBvZiB0aGUgbWF0dGVyIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYGNvbmRfcmVzY2hlZCgpYCBjYWxscyB3aXRoaW4gYGJhdGNoX2Zyb21fZG9tYWluYCBhbmQgYHZmaW9fdW5tYXBfdW5waW5gLlxuXG5BaCwgeWVzLCBub3cgSSByZWNhbGwuIFRoZXNlIGFkZGl0aW9ucyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMsIHBhcnRpY3VsYXJseSBkdXJpbmcgdGhvc2UgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNsZWFyIGV4ZWN1dGlvbiBmbG93IG1vZGlmaWNhdGlvbiDigJMgeWllbGRpbmcgdGhlIENQVSBpbiB0aG9zZSBjcml0aWNhbCBzZWN0aW9ucy4gR2l2ZW4gdGhhdCBpdCdzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgKmFic29sdXRlbHkqIGRlbWFuZHMgZnV6emluZy4gSXQncyBub3QganVzdCBhYm91dCBjb25maXJtaW5nIHRoZSBzb2Z0IGxvY2t1cCBmaXg7IHdlIG5lZWQgdG8gYmUgdmlnaWxhbnQgYWJvdXQgYW55IHBvdGVudGlhbCByZWdyZXNzaW9ucywgc3VjaCBhcyBzY2hlZHVsaW5nIGlzc3VlcyB3aXRoaW4gYXRvbWljIGNvbnRleHRzIHRoYXQgd2UgbWlnaHQgYmUgaW50cm9kdWNpbmcuXG5cblNvLCBqdXN0IHRvIGJlIGNyeXN0YWwgY2xlYXI6IGBJT01NVUZEYCBhbmQgYFZGSU9fQ09OVEFJTkVSYCBhcmUgYSBtdXN0LCBhbmQgZm9yIHRoYXQsIHdlIG5lZWQgYFZGSU9gLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB3YXRjaCBkdXJpbmcgZnV6emluZyBhcmUgYGJhdGNoX2Zyb21fZG9tYWluYCBhbmQgYHZmaW9fdW5tYXBfdW5waW5gLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3QgdHJhZGluZyBvbmUgcHJvYmxlbSBmb3IgYW5vdGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1MzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6NTcuODc0NjAyMDk4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3NTEwNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX0NPTlRBSU5FUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZz0zMD1jb25maWcgVkZJT19HUk9VUFxcbi0tXFxuZHJpdmVycy92ZmlvL0tjb25maWctMzktXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NDA6Y29uZmlnIFZGSU9fQ09OVEFJTkVSXFxuZHJpdmVycy92ZmlvL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gY29udGFpbmVyIC9kZXYvdmZpby92ZmlvXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDo1OS44MzIxMjgyMTZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1MTk4NTkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVtOlxuXG4qKlZGSU8gRGVwZW5kZW5jaWVzOiBBIFF1aWNrIE5vdGUqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZSBoZXJlLiAqVkZJT19DT05UQUlORVIqIGlzIGNsZWFybHkgYnVpbHQgb24gdG9wIG9mICpWRklPX0dST1VQKi4gSSBtZWFuLCB0aGF0IGRlcGVuZGVuY3kgaXMgZnVuZGFtZW50YWwuIFRoZXJlJ3Mgbm8gZ2V0dGluZyBhcm91bmQgaXQsIGxvZ2ljYWxseSBzcGVha2luZywgd2l0aG91dCBzb21lIHNpZ25pZmljYW50IHJlLWFyY2hpdGVjdHVyZSwgYW5kIGV2ZW4gdGhlbiwgSSdkIGhhdmUgdG8gcXVlc3Rpb24gdGhlIGJlbmVmaXQuIFRoZSBjb250YWluZXIgY29uY2VwdCwgaXRzIG1hbmFnZW1lbnQsIGlzb2xhdGlvbiwgYWxsIG9mIGl0Li4uIHRoYXQgcmVsaWVzIG9uIHRoZSBncm91cCBhYnN0cmFjdGlvbiBhcyBhIGJhc2UgbGF5ZXIuIFdpdGhvdXQgdGhlIGdyb3VwaW5nLCB0aGUgY29udGFpbmVyIHNpbXBseSB3b3VsZG4ndCBmdW5jdGlvbiBhcyBpbnRlbmRlZCwgb3IgZXZlbiBmdW5jdGlvbiBhdCBhbGwuIEl0J3MgYSBmb3VuZGF0aW9uYWwgZGVwZW5kZW5jeS4gTm90IHNvbWV0aGluZyB0byBiZSBxdWVzdGlvbmVkLiBJdCdzIHByZXR0eSBzZWxmLWV2aWRlbnQsIHdoZW4gSSB0aGluayBhYm91dCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxNDcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNTowMi44ODQxMTg5MTJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNDE5ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24gVkZJT19HUk9VUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZz00MD1jb25maWcgVkZJT19DT05UQUlORVJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQyLVxcdHNlbGVjdCBWRklPX0lPTU1VX1RZUEUxIGlmIE1NVSBcXHUwMDI2XFx1MDAyNiAoWDg2IHx8IFMzOTAgfHwgQVJNIHx8IEFSTTY0KVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gVkZJT19HUk9VUFxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQ0LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy92ZmlvL0tjb25maWc9NjM9Y29uZmlnIFZGSU9fTk9JT01NVVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZGSU8gTm8tSU9NTVUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo2NTpcXHRkZXBlbmRzIG9uIFZGSU9fR1JPVVBcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy02Ni1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI1OjAyLjk2NTU0ODQyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzYzNjU4NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUaGlzIFBhdGNoOiBBIFdvcnRod2hpbGUgRW5kZWF2b3IqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYFZGSU9fR1JPVVBgLCB3aGljaCBpcyBuZXN0ZWQgdW5kZXIgYGlmIFZGSU9gLiBSaWdodCwgdGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYFZGSU9gLCBgVkZJT19HUk9VUGAsIGBWRklPX0NPTlRBSU5FUmAsIGFuZCBgSU9NTVVGRGAuIEknbGwgb3JnYW5pemUgbXkgdGhvdWdodHMgYW5kIGxpc3QgdGhlc2UgY29tcG9uZW50cyBhcyBgSU9NTVVGRGAsIGBWRklPYCwgYFZGSU9fR1JPVVBgLCBhbmQgYFZGSU9fQ09OVEFJTkVSYC5cblxuQnV0IHdhaXQsIGlzIGZ1enppbmcgdGhpcyBldmVuICpuZWNlc3NhcnkqPyBBZGRpbmcgYGNvbmRfcmVzY2hlZCgpYCBzZWVtcyBsaWtlIGEgdHJpdmlhbCwgYWxtb3N0IGNvc21ldGljIGNoYW5nZS4gSXQgcHJpbWFyaWx5IGFkZHJlc3NlcyBwb3RlbnRpYWwgc29mdCBsb2NrdXBzLCBhbmQgd2hpbGUgU3l6a2FsbGVyICpjYW4qIGRldGVjdCB0aG9zZSwgcHJldmVudGluZyB0aGVtIGlzIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gSG1tbS4uLlxuXG5UaGVuIGl0IGhpdHMgbWU6IGlmIGBjb25kX3Jlc2NoZWQoKWAgaXMgbWlzdGFrZW5seSBjYWxsZWQgaW4gYW4gYXRvbWljIGNvbnRleHQsIGJvb20sIHdlIGhhdmUgYSBidWchIEZ1enppbmcgaXMgKnBlcmZlY3QqIGZvciB1bmNvdmVyaW5nIHRoYXQga2luZCBvZiBzdWJ0bGUsIGNvbnRleHQtZGVwZW5kZW50IGVycm9yLiBZZXMsIHRoaXMgcGF0Y2ggaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHJvbGxpbmcuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1NTMsIk91dHB1dFRva2VucyI6MTU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI1OjA3Ljg0MTkxNzAzN1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Nzg0OTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9NTVVGRFwiLFxuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19HUk9VUFwiLFxuICAgIFwiVkZJT19DT05UQUlORVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYXRjaF9mcm9tX2RvbWFpblwiLFxuICAgIFwidmZpb191bm1hcF91bnBpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgY29uZF9yZXNjaGVkKCkgdG8gbG9vcHMgaW4gYmF0Y2hfZnJvbV9kb21haW4gYW5kIHZmaW9fdW5tYXBfdW5waW4gdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMgZHVyaW5nIGxhcmdlIHVubWFwL3VucGluIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBieSB5aWVsZGluZyB0aGUgQ1BVLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgc29mdCBsb2NrdXAgaXMgZml4ZWQgYW5kIG5vIG5ldyBpc3N1ZXMgKGxpa2Ugc2NoZWR1bGluZyB3aGlsZSBhdG9taWMpIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklPTU1VRkRcIixcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fR1JPVVBcIixcbiAgICBcIlZGSU9fQ09OVEFJTkVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmF0Y2hfZnJvbV9kb21haW5cIixcbiAgICBcInZmaW9fdW5tYXBfdW5waW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGNvbmRfcmVzY2hlZCgpIHRvIGxvb3BzIGluIGJhdGNoX2Zyb21fZG9tYWluIGFuZCB2ZmlvX3VubWFwX3VucGluIHRvIHByZXZlbnQgc29mdCBsb2NrdXBzIGR1cmluZyBsYXJnZSB1bm1hcC91bnBpbiBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgYnkgeWllbGRpbmcgdGhlIENQVS4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIHNvZnQgbG9ja3VwIGlzIGZpeGVkIGFuZCBubyBuZXcgaXNzdWVzIChsaWtlIHNjaGVkdWxpbmcgd2hpbGUgYXRvbWljKSBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow4qlxq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 07:03:07 +0000 UTC FinishedAt: 2026-07-15 07:25:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IOMMUFD", "VFIO", "VFIO_GROUP", "VFIO_CONTAINER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IOMMUFD", "VFIO", "VFIO_GROUP", "VFIO_CONTAINER" ], "series_id": "f8cc4148-7df3-4e98-a762-ccb171717eb5" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "batch_from_domain", "vfio_unmap_unpin" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPTU1VRkQmIzM0OywKICAgICYjMzQ7VkZJTyYjMzQ7LAogICAgJiMzNDtWRklPX0dST1VQJiMzNDssCiAgICAmIzM0O1ZGSU9fQ09OVEFJTkVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmF0Y2hfZnJvbV9kb21haW4mIzM0OywKICAgICYjMzQ7dmZpb191bm1hcF91bnBpbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGNvbmRfcmVzY2hlZCgpIHRvIGxvb3BzIGluIGJhdGNoX2Zyb21fZG9tYWluIGFuZCB2ZmlvX3VubWFwX3VucGluIHRvIHByZXZlbnQgc29mdCBsb2NrdXBzIGR1cmluZyBsYXJnZSB1bm1hcC91bnBpbiBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgYnkgeWllbGRpbmcgdGhlIENQVS4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIHNvZnQgbG9ja3VwIGlzIGZpeGVkIGFuZCBubyBuZXcgaXNzdWVzIChsaWtlIHNjaGVkdWxpbmcgd2hpbGUgYXRvbWljKSBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUyMDNmMTc2YTc4NmE5NWRiOTg4YmU5MzU5MzU2MTk5NWE0ZjM3MmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNzoyMzo0MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYyBiL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXG5pbmRleCA5YmRiMjk0NWFmZTFlYi4uZTQ3ODc3MWMwY2NmNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcbkBAIC00MTIsNiAmIzQzOzQxMiw3IEBAIHN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxuIFx0dW5zaWduZWQgaW50IHBhZ2Vfb2Zmc2V0ID0gMDtcbiBcdHVuc2lnbmVkIGxvbmcgaW92YTtcbiBcdHBoeXNfYWRkcl90IHBoeXM7XG4mIzQzO1x0aW50IGkgPSAwO1xuIFxuIFx0aW92YSA9IGlvcHRfYXJlYV9pbmRleF90b19pb3ZhKGFyZWEsIHN0YXJ0X2luZGV4KTtcbiBcdGlmIChzdGFydF9pbmRleCA9PSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpXG5AQCAtNDI4LDYgJiM0Mzs0MjksOSBAQCBzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcbiBcdFx0aW92YSAmIzQzOz0gUEFHRV9TSVpFIC0gcGFnZV9vZmZzZXQ7XG4gXHRcdHBhZ2Vfb2Zmc2V0ID0gMDtcbiBcdFx0c3RhcnRfaW5kZXgmIzQzOyYjNDM7O1xuJiM0MztcbiYjNDM7XHRcdGlmICgoJiM0MzsmIzQzO2kgJSBCSVQoUFVEX09SREVSKSkgPT0gMClcbiYjNDM7XHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG5pbmRleCBjODE1MWJhNTRkZTMzYS4uZTc4YmMwN2Q5YjZlOGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG5AQCAtMTE1Myw2ICYjNDM7MTE1Myw3IEBAIHN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSxcbiBcdGludCB1bm1hcHBlZF9yZWdpb25fY250ID0gMDtcbiBcdGxvbmcgdW5sb2NrZWQgPSAwO1xuIFx0c2l6ZV90IHBvcyA9IDA7XG4mIzQzO1x0aW50IGkgPSAwO1xuIFxuIFx0aWYgKCFkbWEtXHUwMDNlc2l6ZSlcbiBcdFx0cmV0dXJuIDA7XG5AQCAtMTE5Niw2ICYjNDM7MTE5Nyw4IEBAIHN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSxcbiBcdFx0XHRuZXh0ID0gaW9tbXVfaW92YV90b19waHlzKGRvbWFpbi1cdTAwM2Vkb21haW4sIGlvdmEgJiM0MzsgbGVuKTtcbiBcdFx0XHRpZiAobmV4dCAhPSBwaHlzICYjNDM7IGxlbilcbiBcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRpZiAoKCYjNDM7JiM0MztpICUgQklUKFBVRF9PUkRFUikpID09IDApXG4mIzQzO1x0XHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4gXHRcdH1cbiBcbiBcdFx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT01NVUZEJiMzNDssCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19HUk9VUCYjMzQ7LAogICAgJiMzNDtWRklPX0NPTlRBSU5FUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhdGNoX2Zyb21fZG9tYWluJiMzNDssCiAgICAmIzM0O3ZmaW9fdW5tYXBfdW5waW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBjb25kX3Jlc2NoZWQoKSB0byBsb29wcyBpbiBiYXRjaF9mcm9tX2RvbWFpbiBhbmQgdmZpb191bm1hcF91bnBpbiB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcyBkdXJpbmcgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBzb2Z0IGxvY2t1cCBpcyBmaXhlZCBhbmQgbm8gbmV3IGlzc3VlcyAobGlrZSBzY2hlZHVsaW5nIHdoaWxlIGF0b21pYykgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUyMDNmMTc2YTc4NmE5NWRiOTg4YmU5MzU5MzU2MTk5NWE0ZjM3MmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAwNzoyMzo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jIGIvZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMKaW5kZXggOWJkYjI5NDVhZmUxZWIuLmU0Nzg3NzFjMGNjZjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYwpAQCAtNDEyLDYgJiM0Mzs0MTIsNyBAQCBzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCwKIAl1bnNpZ25lZCBpbnQgcGFnZV9vZmZzZXQgPSAwOwogCXVuc2lnbmVkIGxvbmcgaW92YTsKIAlwaHlzX2FkZHJfdCBwaHlzOwomIzQzOwlpbnQgaSA9IDA7CiAKIAlpb3ZhID0gaW9wdF9hcmVhX2luZGV4X3RvX2lvdmEoYXJlYSwgc3RhcnRfaW5kZXgpOwogCWlmIChzdGFydF9pbmRleCA9PSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpCkBAIC00MjgsNiAmIzQzOzQyOSw5IEBAIHN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLAogCQlpb3ZhICYjNDM7PSBQQUdFX1NJWkUgLSBwYWdlX29mZnNldDsKIAkJcGFnZV9vZmZzZXQgPSAwOwogCQlzdGFydF9pbmRleCYjNDM7JiM0Mzs7CiYjNDM7CiYjNDM7CQlpZiAoKCYjNDM7JiM0MztpICUgQklUKFBVRF9PUkRFUikpID09IDApCiYjNDM7CQkJY29uZF9yZXNjaGVkKCk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jIGIvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYwppbmRleCBjODE1MWJhNTRkZTMzYS4uZTc4YmMwN2Q5YjZlOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYwpAQCAtMTE1Myw2ICYjNDM7MTE1Myw3IEBAIHN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSwKIAlpbnQgdW5tYXBwZWRfcmVnaW9uX2NudCA9IDA7CiAJbG9uZyB1bmxvY2tlZCA9IDA7CiAJc2l6ZV90IHBvcyA9IDA7CiYjNDM7CWludCBpID0gMDsKIAogCWlmICghZG1hLSZndDtzaXplKQogCQlyZXR1cm4gMDsKQEAgLTExOTYsNiAmIzQzOzExOTcsOCBAQCBzdGF0aWMgbG9uZyB2ZmlvX3VubWFwX3VucGluKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEsCiAJCQluZXh0ID0gaW9tbXVfaW92YV90b19waHlzKGRvbWFpbi0mZ3Q7ZG9tYWluLCBpb3ZhICYjNDM7IGxlbik7CiAJCQlpZiAobmV4dCAhPSBwaHlzICYjNDM7IGxlbikKIAkJCQlicmVhazsKJiM0MzsJCQlpZiAoKCYjNDM7JiM0MztpICUgQklUKFBVRF9PUkRFUikpID09IDApCiYjNDM7CQkJCWNvbmRfcmVzY2hlZCgpOwogCQl9CiAKIAkJLyoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDU2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIERlY2lzaW9uOiBZZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIGFkZGluZyBgY29uZF9yZXNjaGVkKClgIGNhbGxzIHdpdGhpbiBsb29wcyBpbiBgZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNgIGFuZCBgZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgaW5zaWRlIGBiYXRjaF9mcm9tX2RvbWFpbmAgKGlvbW11ZmQpIGFuZCBgdmZpb191bm1hcF91bnBpbmAgKHZmaW8pLiBUaGUgZ29hbCBpcyB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcyBkdXJpbmcgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4KCk15IGluaXRpYWwgZ3V0IHJlYWN0aW9uIHdhcyB0aGF0IGZ1enppbmcgdGhpcyBtaWdodCBub3QgYmUgZnJ1aXRmdWwuIFR5cGljYWxseSwgY2hhbmdlcyBpbnZvbHZpbmcganVzdCBgY29uZF9yZXNjaGVkKClgIGFyZSBsb3cteWllbGQgZm9yIGZ1enppbmcsIHVubGVzcyBpdCYjMzk7cyBhIHNwZWNpZmljIGJ1Zy1maXggd2Ugd2FudCB0byAqZ3VhcmFudGVlKiBkb2VzbiYjMzk7dCByZXN1cmZhY2UuIFN5emthbGxlciBpc24mIzM5O3QgZ3JlYXQgYXQgdGFyZ2V0aW5nIHNvZnQgbG9ja3VwcyBkaXJlY3RseSwgYW5kIGBjb25kX3Jlc2NoZWQoKWAgaXMsIGFmdGVyIGFsbCwganVzdCBhIHNjaGVkdWxpbmcgaGludC4gSG93ZXZlciwgdGhlIGluc3RydWN0aW9ucyBzdGF0ZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGlmIHRoZXJlJiMzOTtzIG5vIGFsdGVyYXRpb24gb2YgZnVuY3Rpb25hbCBmbG93LgoKQnV0IHdhaXQsIHRoaXMgKmRvZXMqIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyEgQWRkaW5nIGBjb25kX3Jlc2NoZWQoKWAgY2xlYXJseSAqZG9lcyogaW1wYWN0IHRoZSBzY2hlZHVsaW5nIGJlaGF2aW9yIG9mIHRob3NlIGxvb3BzLCBldmVuIGlmIGl0JiMzOTtzIHN1YnRsZSwgaXQmIzM5O3MgZnVuY3Rpb25hbC4gSXQmIzM5O3MgZGVzaWduZWQgdG8gbWl0aWdhdGUgYSBzb2Z0IGxvY2t1cCwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNvbmNlcm4uIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgdGhpcyB3b3J0aCBmdXp6aW5nPwoKSSBkaWQgYSBxdWljayBzY2FuIC0gbm8gb3RoZXIgY2hhbmdlcywganVzdCB0aGUgYGNvbmRfcmVzY2hlZCgpYCBjYWxscy4gVGhlIGltcG9ydGFudCB0aGluZyB0byBjb25zaWRlciBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIHRoZXNlIGNoYW5nZXM/IExldCYjMzk7cyBjaGVjayB0aGUgY29uZmlncyBmb3IgSU9NTVVGRCBhbmQgVkZJTy4gTG9va3MgbGlrZSBgQ09ORklHX0lPTU1VRkRgLCBgQ09ORklHX1ZGSU9gLCBhbmQgYENPTkZJR19WRklPX0lPTU1VX1RZUEUxYCBjb250cm9sIHRoZXNlIGZlYXR1cmVzLgoKU28sIHNpbmNlIHRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsLCBhbmQgdGhlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBpbiBhbiBhcHByb3ByaWF0ZSBjb25maWd1cmF0aW9uLCB0aGUgYW5zd2VyIGlzOiAqKnllcywgdGhpcyBtZXJpdHMgZnV6emluZy4qKiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIHRhcmdldCBgYmF0Y2hfZnJvbV9kb21haW5gIGFuZCBgdmZpb191bm1hcF91bnBpbmAgc3BlY2lmaWNhbGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJT01NVUZEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjI6Y29uZmlnIElPTU1VRkRfRFJJVkVSX0NPUkVcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTMtXHRib29sXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjY6Y29uZmlnIElPTU1VRkRcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtJT01NVSBVc2Vyc3BhY2UgQVBJXCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc9MTg9aWYgSU9NTVVGRFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6MTk6Y29uZmlnIElPTU1VRkRfVkZJT19DT05UQUlORVJcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTIwLVx0Ym9vbCBcJiMzNDtJT01NVUZEIHByb3ZpZGVzIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1wmIzM0O1xuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTM4LVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6Mzk6Y29uZmlnIElPTU1VRkRfVEVTVFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDAtXHRib29sIFwmIzM0O0lPTU1VIFVzZXJzcGFjZSBBUEkgVGVzdCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgVkZJTyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGlzIFZGSU8gY29uZmlndXJhdGlvbi4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdHJvdWJsZXNob290aW5nIGFueSBzcGVjaWZpYyBpc3N1ZSwgSSB3YW50IHRvIHRha2UgYSBtZXRob2RpY2FsIGFwcHJvYWNoIGhlcmUsIHN0YXJ0aW5nIHdpdGggYSBjb21wcmVoZW5zaXZlIGNoZWNrLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgZmlyc3Q6IGFyZSB0aGUgSU9NTVUgZ3JvdXBzIHByb3Blcmx5IHNldCB1cD8gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGRldmljZXMgSSBpbnRlbmQgdG8gcGFzc3Rocm91Z2ggYXJlIGlzb2xhdGVkIHdpdGhpbiB0aGVpciBvd24gZ3JvdXBzLCB3aXRob3V0IGFueSBzaGFyZWQgcmVzb3VyY2VzIHRoYXQgY291bGQgY2F1c2UgY29uZmxpY3RzIG9yIGluc3RhYmlsaXR5LgoKVGhlbiwgSSYjMzk7bGwgYmUgZ29pbmcgdGhyb3VnaCB0aGUga2VybmVsIG1vZHVsZXMgdGhhdCBhcmUgbG9hZGVkLiBJcyBgdmZpby1wY2lgIGNvcnJlY3RseSBib3VuZCB0byB0aGUgdGFyZ2V0IGRldmljZXM/IEFyZSBgdmZpb19pb21tdV90eXBlMWAgYW5kIGB2ZmlvYCBtb2R1bGVzIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkPyBJJiMzOTtsbCBhbHNvIGJlIHZlcmlmeWluZyB0aGF0IHRoZSBuZWNlc3NhcnkgZmxhZ3MgYW5kIG9wdGlvbnMgYXJlIHNldC4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkga25vd24gcXVpcmtzIG9yIHdvcmthcm91bmRzIHNwZWNpZmljIHRvIHRoaXMgaGFyZHdhcmUgb3IgaHlwZXJ2aXNvciBzZXR1cD8gSSBuZWVkIHRvIGJlIHN1cmUgYW55IHJlcXVpcmVkIHBhdGNoZXMgb3IgbW9kdWxlcyBmb3IgdGhlIGRldmljZXMgYXJlIGluIHBsYWNlLgoKSSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhlIGdydWIgY29uZmlndXJhdGlvbiBmaWxlLiBUaGUgYm9vdCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgZG91YmxlLWNoZWNrZWQgdG8gbWFrZSBzdXJlIGFsbCB0aGUgcmVxdWlyZWQgSU9NTVUgc2V0dGluZ3MgYW5kIGRldmljZSBibGFja2xpc3RpbmcgYXJlIHByb3Blcmx5IGNvbmZpZ3VyZWQgYXQgdGhlIGtlcm5lbCBsZXZlbC4gVGhpcyBpbmNsdWRlcyB2ZXJpZnlpbmcgdGhlIGBpbnRlbF9pb21tdT1vbmAgb3IgYGFtZF9pb21tdT1vbmAgZmxhZ3MsIGFsb25nIHdpdGggYW55IG5lY2Vzc2FyeSBgaW9tbXU9cHRgIG9yIGBuby1pb21tdWAgZmxhZ3MsIGFuZCBtYWtpbmcgc3VyZSBub3RoaW5nIGlzIGludGVyZmVyaW5nIHdpdGggdGhlIFZGSU8gc2V0dXAuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0IHRoZSBvdmVyYWxsIGVudmlyb25tZW50LiBBcmUgdGhlcmUgYW55IGtub3duIGlzc3VlcyB3aXRoIHRoZSB2aXJ0dWFsaXphdGlvbiBwbGF0Zm9ybSwgaHlwZXJ2aXNvciB2ZXJzaW9uLCBvciBob3N0IG9wZXJhdGluZyBzeXN0ZW0gdGhhdCBjb3VsZCBiZSBhZmZlY3RpbmcgVkZJTz8gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYmFzZSBpcyBzb2xpZCBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGRldGFpbHMgb2YgdGhlIHNwZWNpZmljIGd1ZXN0IGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX0lPTU1VX1RZUEUxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWc9NTI9aWYgVkZJT19DT05UQUlORVJcbmRyaXZlcnMvdmZpby9LY29uZmlnOjUzOmNvbmZpZyBWRklPX0lPTU1VX1RZUEUxXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01NC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggdGhlbSBzdGVwLWJ5LXN0ZXA6CgoqKlZGSU8gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlc2UgSU9NTVUtcmVsYXRlZCBjb25maWdzLiBJJiMzOTt2ZSBnb3QgYElPTU1VRkRgIGFuZCBgVkZJT19JT01NVV9UWVBFMWAgaW4gbWluZCwgdGhvc2UgYXJlIHRoZSBrZXkgcGxheWVycy4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gaXNuJiMzOTt0IGBWRklPX0lPTU1VX1RZUEUxYCBuZXN0ZWQgdW5kZXIgc29tZXRoaW5nPyBZZWFoLCBpdCBpcyEgSXQmIzM5O3MgcGFydCBvZiB0aGUgYFZGSU9fQ09OVEFJTkVSYCBzdWJzeXN0ZW0uIE9rYXksIHRoYXQmIzM5O3MgaW1wb3J0YW50IGNvbnRleHQuIExvb2tzIGxpa2UgSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBgVkZJT19DT05UQUlORVJgIGFuZCBob3cgYFZGSU9fSU9NTVVfVFlQRTFgIGZpdHMgaW50byBpdHMgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgc3RydWN0dXJlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgaGVyZS4gTGV0JiMzOTtzIGRlbHZlIGludG8gYFZGSU9fQ09OVEFJTkVSYCBmaXJzdC4gR290dGEgZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jeSBjaGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkZJT19DT05UQUlORVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZz0zMD1jb25maWcgVkZJT19HUk9VUFxuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnLTM5LVxuZHJpdmVycy92ZmlvL0tjb25maWc6NDA6Y29uZmlnIFZGSU9fQ09OVEFJTkVSXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFZGSU8gY29udGFpbmVyIC9kZXYvdmZpby92ZmlvXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU5MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipDaGVja2luZyBWRklPKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0byB0YWtlIGEgbG9vayBhdCBgVkZJT2AuIFNlZW1zIGxpa2UgdGhpcyBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHdoYXRldmVyIHByb2JsZW0gb3IgdGFzayBpcyBhdCBoYW5kLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgc29saWQgZ3JvdW5kaW5nIGluIHRoZSBiYXNpY3MuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbW9kZWwgb2YgaXRzIGFyY2hpdGVjdHVyZSBhbmQgY2FwYWJpbGl0aWVzIHRvIGFzc2VzcyB0aGUgc2l0dWF0aW9uIHByb3Blcmx5LiBQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIGlzc3VlIHdpdGggcGFzc3Rocm91Z2gsIG9yIG1heWJlIEkmIzM5O20gY29uc2lkZXJpbmcgaXRzIHVzZSBpbiBhIHNwZWNpZmljIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvLiBSZWdhcmRsZXNzLCBhIHF1aWNrIHJldmlldyBvZiB0aGUgYFZGSU9gIGxhbmRzY2FwZSBpcyBlc3NlbnRpYWwgYmVmb3JlIHByb2NlZWRpbmcgZnVydGhlci4gSSBuZWVkIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGN1cnJlbnQsIGFuZCBjb25zaWRlciBhbnkgcmVjZW50IGRldmVsb3BtZW50cyBvciBsaW1pdGF0aW9ucyBJJiMzOTttIGF3YXJlIG9mLiBMZXQmIzM5O3Mgc2VlLi4uIHdoYXQgc3BlY2lmaWNhbGx5IGFtIEkgbG9va2luZyBmb3Igd2l0aGluIGBWRklPYD8gVGhhdCYjMzk7cyB0aGUgbmV4dCBjcml0aWNhbCBxdWVzdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy92ZmlvL0tjb25maWc6MjptZW51Y29uZmlnIFZGSU9cbmRyaXZlcnMvdmZpby9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL0tjb25maWc9MTY9aWYgVkZJT1xuZHJpdmVycy92ZmlvL0tjb25maWc6MTc6Y29uZmlnIFZGSU9fREVWSUNFX0NERVZcbmRyaXZlcnMvdmZpby9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBjZGV2IC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL0tjb25maWctMjktXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzozMDpjb25maWcgVkZJT19HUk9VUFxuZHJpdmVycy92ZmlvL0tjb25maWctMzEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGdyb3VwIC9kZXYvdmZpby8kZ3JvdXBfaWRcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy0zOS1cbmRyaXZlcnMvdmZpby9LY29uZmlnOjQwOmNvbmZpZyBWRklPX0NPTlRBSU5FUlxuZHJpdmVycy92ZmlvL0tjb25maWctNDEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnPTUyPWlmIFZGSU9fQ09OVEFJTkVSXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo1Mzpjb25maWcgVkZJT19JT01NVV9UWVBFMVxuZHJpdmVycy92ZmlvL0tjb25maWctNTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnLTU2LVxuZHJpdmVycy92ZmlvL0tjb25maWc6NTc6Y29uZmlnIFZGSU9fSU9NTVVfU1BBUFJfVENFXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01OC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92ZmlvL0tjb25maWc9NjE9ZW5kaWZcbmRyaXZlcnMvdmZpby9LY29uZmlnLTYyLVxuZHJpdmVycy92ZmlvL0tjb25maWc6NjM6Y29uZmlnIFZGSU9fTk9JT01NVVxuZHJpdmVycy92ZmlvL0tjb25maWctNjQtXHRib29sIFwmIzM0O1ZGSU8gTm8tSU9NTVUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnLTc3LVxuZHJpdmVycy92ZmlvL0tjb25maWc6Nzg6Y29uZmlnIFZGSU9fVklSUUZEXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy03OS1cdGJvb2xcbi0tXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy04Mi1cbmRyaXZlcnMvdmZpby9LY29uZmlnOjgzOmNvbmZpZyBWRklPX0RFQlVHRlNcbmRyaXZlcnMvdmZpby9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFeHBvcnQgVkZJTyBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzkzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBrZXJuZWwgbW9kdWxlcywgdGhpbmtpbmcgdGhyb3VnaCBpdCBsaWtlIEkgd291bGQuCgoqKktlcm5lbCBNb2R1bGUgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZXNlIGtlcm5lbCBtb2R1bGUgcmVxdWlyZW1lbnRzLiBJIGtub3cgd2UgbmVlZCBgSU9NTVVGRGAsIGBWRklPYCwgYFZGSU9fQ09OVEFJTkVSYCwgYW5kIGBWRklPX0lPTU1VX1RZUEUxYC4gSG9sZCBvbiBhIHNlY29uZCwgdGhhdCBgVkZJT19JT01NVV9UWVBFMWAgbW9kdWxlIGRvZXNuJiMzOTt0IGhhdmUgaXRzIG93biBwcm9tcHQsIHdoaWNoIGlzIHVudXN1YWwuIFRoYXQgc3VnZ2VzdHMgaXQmIzM5O3MgYmVpbmcgc2VsZWN0ZWQgaW5kaXJlY3RseSwgd2hpY2ggbWVhbnMgKnNvbWV0aGluZyogaXMgcHVsbGluZyBpdCBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBkcml2aW5nIHRoYXQgZGVwZW5kZW5jeS4gQmV0dGVyIGRpZyBkZWVwZXIgYW5kIHRyYWNrIGRvd24gdGhlIGNvbmZpZyBvcHRpb25zIHRoYXQgZW5hYmxlIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBWRklPX0lPTU1VX1RZUEUxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZz00MD1jb25maWcgVkZJT19DT05UQUlORVJcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cJiMzNDtcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQyOlx0c2VsZWN0IFZGSU9fSU9NTVVfVFlQRTEgaWYgTU1VIFx1MDAyNlx1MDAyNiAoWDg2IHx8IFMzOTAgfHwgQVJNIHx8IEFSTTY0KVxuZHJpdmVycy92ZmlvL0tjb25maWctNDMtXHRkZXBlbmRzIG9uIFZGSU9fR1JPVVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDk0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBhIFNvZnQgTG9ja3VwIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQmIzM5O3MgYWRkaW5nIGBjb25kX3Jlc2NoZWQoKWAgY2FsbHMgd2l0aGluIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4gVGhlIGlkZWEgaXMgdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMsIGFuZCB0aGF0JiMzOTtzIGdvb2QgYmVjYXVzZSBzb2Z0IGxvY2t1cHMgYXJlIGEgdHlwZSBvZiBmdW5jdGlvbmFsIGJ1ZyB0aGF0IFN5emthbGxlciBpcyBhbHJlYWR5IHJlcG9ydGluZy4gSXQgYXBwZWFycyB0aGUgcGF0Y2ggaXMgdXNpbmcgYFZGSU9fQ09OVEFJTkVSYCwgd2hpY2ggaW1wbGllcyB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIGBWRklPX0lPTU1VX1RZUEUxYCwgd2hpY2ggbWVhbnMgYElPTU1VRkRgIGFuZCBgVkZJT19DT05UQUlORVJgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUuCgpUaGUgY29yZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhZGRpdGlvbiB3b3J0aCBmdXp6aW5nPyBGcm9tIGEgcHVyZWx5IGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHNpbmNlIHRoZSBjaGFuZ2UgbW9kaWZpZXMgZXhlY3V0aW9uIGZsb3cgYnkgeWllbGRpbmcgdGhlIENQVSAod2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSksIHRoZW4sIHllcywgKldvcnRoRnV6emluZz10cnVlKi4KCkxldCBtZSBjaGVjayB0aGUgZGlmZiBhZ2FpbiwgY29uZmlybWluZyB0aG9zZSBhcmUgdGhlIG9ubHkgY2hhbmdlcy4gQ29ycmVjdCwganVzdCB0aGUgYWRkZWQgYGNvbmRfcmVzY2hlZCgpYCBjYWxscy4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGVuYWJsZSBgSU9NTVVGRGAsIGBWRklPYCwgYW5kIGBWRklPX0NPTlRBSU5FUmAuCgpOb3csIHRoZSBwb3RlbnRpYWwgd3JpbmtsZS4gKkNvdWxkKiBgY29uZF9yZXNjaGVkKClgIGl0c2VsZiBpbnRyb2R1Y2UgYnVncz8gVGhlb3JldGljYWxseSwgeWVzLCBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHJ1bm5pbmcgaW4gYSBjb250ZXh0IHRoYXQgaXNuJiMzOTt0IHByZWVtcHRpYmxlLCBvciBpZiB0aGV5IGhvbGQgc3BpbmxvY2tzLiBBICYjMzQ7c2NoZWR1bGluZyB3aGlsZSBhdG9taWMmIzM0OyBidWcgaXMgYSBwb3NzaWJpbGl0eS4gVGhlcmVmb3JlLCBiZWZvcmUgY29tbWl0dGluZyB0byB0aGUgZnV6emluZyBjYW1wYWlnbiwgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIGBiYXRjaF9mcm9tX2RvbWFpbmAgb3IgYHZmaW9fdW5tYXBfdW5waW5gIGhvbGQgc3BpbmxvY2tzLiBMZXQmIzM5O3MgbG9vayBmb3IgdGhhdCwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiYXRjaF9mcm9tX2RvbWFpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTM5Nz1zdGF0aWMgYm9vbCBiYXRjaF9hZGRfcGZuKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCB1bnNpZ25lZCBsb25nIHBmbilcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDYtICovXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0MDc6c3RhdGljIHZvaWQgYmF0Y2hfZnJvbV9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDgtXHRcdFx0ICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTQzOD1zdGF0aWMgc3RydWN0IHBhZ2UgKipyYXdfcGFnZXNfZnJvbV9kb21haW4oc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ2MS0vKiBDb250aW51ZXMgcmVhZGluZyBhIGRvbWFpbiB1bnRpbCB3ZSByZWFjaCBhIGRpc2NvbnRpbnVpdHkgaW4gdGhlIHBmbnMuICovXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NjI6c3RhdGljIHZvaWQgYmF0Y2hfZnJvbV9kb21haW5fY29udGludWUoc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NjMtXHRcdFx0XHQgICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ3MC1cdGJhdGNoLVx1MDAzZWFycmF5X3NpemUgPSBiYXRjaC1cdTAwM2VlbmQ7XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NzE6XHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCwgbGFzdF9pbmRleCk7XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NzItXHRiYXRjaC1cdTAwM2VhcnJheV9zaXplID0gYXJyYXlfc2l6ZTtcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xMTcyPXN0YXRpYyBpbnQgcGZuX3JlYWRlcl9maWxsX3NwYW4oc3RydWN0IHBmbl9yZWFkZXIgKnBmbnMpXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMS1cdFx0LyogVGhlIHN0b3JhZ2VfZG9tYWluIGNhbm5vdCBjaGFuZ2Ugd2l0aG91dCB0aGUgcGFnZXMgbXV0ZXggKi9cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjEyMDI6XHRcdGJhdGNoX2Zyb21fZG9tYWluKFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMy1cdFx0XHRcdTAwMjZwZm5zLVx1MDAzZWJhdGNoLCBhcmVhLVx1MDAzZXN0b3JhZ2VfZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xNjgxPWlvcHRfYXJlYV91bnBpbl9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY5OC1cdFx0XHRcdFx0c3RhcnRfaW5kZXgpO1xuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTY5OTpcdFx0XHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydCxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3MDAtXHRcdFx0XHRcdCAgbGFzdF9pbmRleCk7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcxOS1cdFx0ICAgIGxhc3RfaW5kZXggIT0gcmVhbF9sYXN0X2luZGV4KVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTcyMDpcdFx0XHRiYXRjaF9mcm9tX2RvbWFpbl9jb250aW51ZShiYXRjaCwgZG9tYWluLCBhcmVhLFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcyMS1cdFx0XHRcdFx0XHQgICBsYXN0X2luZGV4ICYjNDM7IDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MDQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGB2ZmlvX3VubWFwX3VucGluYCoqCgpPa2F5LCB0aW1lIHRvIGNpcmNsZSBiYWNrIHRvIGB2ZmlvX3VubWFwX3VucGluYC4gSSBuZWVkIHRvIHJldmlldyBpdHMgbG9naWMsIGVzcGVjaWFsbHkgaW4gcmVsYXRpb24gdG8gdGhlIG92ZXJhbGwgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3kgd2l0aGluIFZGSU8uIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIHVubWFwcGluZyBhbmQgdW5waW5uaW5nIGFyZSBjb3JyZWN0bHkgc3luY2hyb25pemVkLCBwYXJ0aWN1bGFybHkgY29uc2lkZXJpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBhdG9taWNpdHkgaXNzdWVzLCBlc3BlY2lhbGx5IHdpdGggZGlmZmVyZW50IGRldmljZSBpbnRlcmFjdGlvbnMuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgbWVtb3J5IGxlYWtzIG9yIGRhbmdsaW5nIHBvaW50ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgd2hldGhlciBpdCBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIG1lbW9yeSByZWdpb25zIGl0IG1pZ2h0IGJlIGRlYWxpbmcgd2l0aCDigJMgd2hldGhlciBpdCYjMzk7cyBNTUlPLCBETUEgYnVmZmVycywgb3Igc29tZXRoaW5nIGVsc2UuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGlmIGl0IGNvcnJlY3RseSBoYW5kbGVzIGVycm9yIHBhdGhzIGFuZCBhbnkgbmVjZXNzYXJ5IGNsZWFudXAgb3Igcm9sbGJhY2sgcHJvY2VkdXJlcy4gTmVlZCB0byBjb25maXJtIHRoYXQgdGhlIHJlbGV2YW50IGxvY2tzIGFyZSBoZWxkIGFuZCByZWxlYXNlZCBhcHByb3ByaWF0ZWx5IHRvIG1haW50YWluIG1lbW9yeSBpbnRlZ3JpdHkgYW5kIGNvbnNpc3RlbmN5IGFjcm9zcyB0aGUgVkZJTyBsYXllcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fdW5tYXBfdW5waW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTEzMD1zdGF0aWMgc2l6ZV90IHVubWFwX3VucGluX3Nsb3coc3RydWN0IHZmaW9fZG9tYWluICpkb21haW4sXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMTQ2LVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxMTQ3OnN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTE0OC1cdFx0XHQgICAgIGJvb2wgZG9fYWNjb3VudGluZylcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTEyMzY9c3RhdGljIHZvaWQgdmZpb19yZW1vdmVfZG1hKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEpXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMjM4LVx0V0FSTl9PTighUkJfRU1QVFlfUk9PVChcdTAwMjZkbWEtXHUwMDNlcGZuX2xpc3QpKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTIzOTpcdHZmaW9fdW5tYXBfdW5waW4oaW9tbXUsIGRtYSwgdHJ1ZSk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTEyNDAtXHR2ZmlvX3VubGlua19kbWEoaW9tbXUsIGRtYSk7XG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNDM5PXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdW5tYXBfdW5waW5fcmVhY2NvdW50KHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI0NDgtXHRcdGRtYSA9IHJiX2VudHJ5KG4sIHN0cnVjdCB2ZmlvX2RtYSwgbm9kZSk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI0NDk6XHRcdHVubG9ja2VkICYjNDM7PSB2ZmlvX3VubWFwX3VucGluKGlvbW11LCBkbWEsIGZhbHNlKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjQ1MC1cdFx0cCA9IHJiX2ZpcnN0KFx1MDAyNmRtYS1cdTAwM2VwZm5fbGlzdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2OTUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBEZWVwIGludG8gVkZJTyBETUEgVW5tYXBwaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHZmaW9fdW5tYXBfdW5waW5gIGFuZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQuIFJpZ2h0LCBpdCYjMzk7cyB0cmlnZ2VyZWQgZnJvbSBib3RoIGB2ZmlvX3JlbW92ZV9kbWFgIGFuZCBgdmZpb19pb21tdV91bm1hcF91bnBpbl9yZWFjY291bnRgLiBJbnRlcmVzdGluZy4gTm93LCBhIGtleSBxdWVzdGlvbiB0aGF0IHBvcHMgdXAgaW1tZWRpYXRlbHkgaXM6IERvZXMgdGhpcyBmdW5jdGlvbiwgYHZmaW9fdW5tYXBfdW5waW5gLCBpbnZvbHZlIGhvbGRpbmcgYSBzcGlubG9jaz8gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGRldGFpbCBmb3IgY29uY3VycmVuY3kgYW5kIHBvdGVudGlhbCBkZWFkbG9ja3MuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuIFRoZSBsb2dpY2FsIGZpcnN0IHBsYWNlIHRvIGxvb2sgaXMgd2l0aGluIGB2ZmlvX3JlbW92ZV9kbWFgIGFzIGl04oCZcyB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgY2FsbCBwYXRoLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGF0IGNvZGUgYW5kIHNlZSBpZiB0aGVyZeKAmXMgYSBzcGlubG9jayBpbnZvbHZlZCBiZWZvcmUgdGhlIGB2ZmlvX3VubWFwX3VucGluYCBjYWxsLiBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGVzZSBpbnRlcmFjdGlvbnMgYXJlIHN5bmNocm9uaXplZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBjb25jdXJyZW50IERNQSB1bm1hcHBpbmcgb3BlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19yZW1vdmVfZG1hJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTExNDc9c3RhdGljIGxvbmcgdmZpb191bm1hcF91bnBpbihzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTIzNS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTIzNjpzdGF0aWMgdm9pZCB2ZmlvX3JlbW92ZV9kbWEoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSlcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTIzNy17XG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xMzk0PXN0YXRpYyBpbnQgdmZpb19kbWFfZG9fdW5tYXAoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTU0My1cdFx0biA9IHJiX25leHQobik7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjE1NDQ6XHRcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTU0NS1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTE1ODM9c3RhdGljIGludCB2ZmlvX3Bpbl9tYXBfZG1hKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNjI0LVx0aWYgKHJldClcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTYyNTpcdFx0dmZpb19yZW1vdmVfZG1hKGlvbW11LCBkbWEpO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNjI2LVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTY4Mz1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX21hcChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNzk3LVx0XHRpZiAocmV0KVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNzk4Olx0XHRcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTc5OS1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTI0MzE9c3RhdGljIHZvaWQgdmZpb19pb21tdV91bm1hcF91bnBpbl9hbGwoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11KVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjQzNS1cdHdoaWxlICgobm9kZSA9IHJiX2ZpcnN0KFx1MDAyNmlvbW11LVx1MDAzZWRtYV9saXN0KSkpXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI0MzY6XHRcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgcmJfZW50cnkobm9kZSwgc3RydWN0IHZmaW9fZG1hLCBub2RlKSk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI0MzctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODAwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgdmZpb19kbWFfZG9fdW5tYXBgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHZmaW9fZG1hX2RvX3VubWFwYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGhvbGRpbmcgYGlvbW11LSZndDtsb2NrYCwgd2hpY2ggaXMgYSBtdXRleC4gTXkgZmlyc3QgdGhvdWdodCBpczogSSBuZWVkIHRvIHZlcmlmeSB0aGlzIGFzc3VtcHRpb24uIExldCYjMzk7cyB0cmFjZSB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gYW5kIGNvbmZpcm0gdGhhdCBpdCYjMzk7cyBjb3JyZWN0bHkgdXNpbmcgdGhlIG11dGV4IHRvIHByb3RlY3QgdGhlIHNoYXJlZCByZXNvdXJjZXMgd2l0aGluIHRoYXQgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGx1cmtpbmcgYXJvdW5kLiBLbm93aW5nIHRoaXMgaXMgYSBtdXRleCBhbmQgaXQgaG9sZHMgdGhlIGNyaXRpY2FsIHNlY3Rpb24gZ2l2ZXMgbWUgYSBiYXNlIHRvIGdvIG9uIHRvIHN0YXJ0IGFuYWx5emluZyB0aGUgcG90ZW50aWFsIGNyaXRpY2FsIHNlY3Rpb25zLiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZXZpZXcgdGhlIGNvZGUgZm9yIGFueSBpbnRlcmFjdGlvbnMgd2l0aCBzaGFyZWQgbWVtb3J5IG9yIGRhdGEgc3RydWN0dXJlcyB0aGF0IGNvdWxkIGJlIGFmZmVjdGVkIGJ5IGNvbmN1cnJlbnQgYWNjZXNzLiBBIHF1aWNrIHJldmlldyBzaG91bGQgYmUgZW5vdWdoIHRvIHNlZSBhbnkgcG90ZW50aWFsIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV0ZXhfbG9jay4qaW9tbXUtXHUwMDNlbG9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz04OTM9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX3Bpbl9wYWdlcyh2b2lkICppb21tdV9kYXRhLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtOTE4LVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzo5MTk6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy05MjAtXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xMDE5PXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfdW5waW5fcGFnZXModm9pZCAqaW9tbXVfZGF0YSxcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTEwMzgtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjEwMzk6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMDQwLVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTM3MD1zdGF0aWMgdm9pZCB2ZmlvX25vdGlmeV9kbWFfdW5tYXAoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTM5MC1cdG11dGV4X3VubG9jayhcdTAwMjZpb21tdS1cdTAwM2VkZXZpY2VfbGlzdF9sb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTM5MTpcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTEzOTItfVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTM5ND1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX3VubWFwKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE0MDgtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjE0MDk6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNDEwLVxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTY4Mz1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX21hcChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNzE1LVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNzE2Olx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTcxNy1cbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTIyMzk9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2F0dGFjaF9ncm91cCh2b2lkICppb21tdV9kYXRhLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjI1MS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MjI1MjpcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTIyNTMtXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNTQxPXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfZGV0YWNoX2dyb3VwKHZvaWQgKmlvbW11X2RhdGEsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNTQ5LVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoyNTUwOlx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjU1MS1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZ3JvdXAsIFx1MDAyNmlvbW11LVx1MDAzZWVtdWxhdGVkX2lvbW11X2dyb3VwcywgbmV4dCkge1xuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MjY5OT1zdGF0aWMgaW50IHZmaW9fZG9tYWluc19oYXZlX2VuZm9yY2VfY2FjaGVfY29oZXJlbmN5KHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI3MDMtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI3MDQ6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNzA1LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShkb21haW4sIFx1MDAyNmlvbW11LVx1MDAzZWRvbWFpbl9saXN0LCBuZXh0KSB7XG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNzE2PXN0YXRpYyBib29sIHZmaW9faW9tbXVfaGFzX2VtdWxhdGVkKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI3MTktXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI3MjA6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNzIxLVx0cmV0ID0gIWxpc3RfZW1wdHkoXHUwMDI2aW9tbXUtXHUwMDNlZW11bGF0ZWRfaW9tbXVfZ3JvdXBzKTtcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTI4Mzk9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2dldF9pbmZvKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI4NTYtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI4NTc6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yODU4LVx0aW5mby5mbGFncyA9IFZGSU9fSU9NTVVfSU5GT19QR1NJWkVTO1xuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9Mjk3MD1zdGF0aWMgaW50IHZmaW9faW9tbXVfdHlwZTFfZGlydHlfcGFnZXMoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjk5Ny1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6Mjk5ODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjk5OS1cdFx0cGdzaXplID0gMSBcdTAwM2NcdTAwM2MgX19mZnMoaW9tbXUtXHUwMDNlcGdzaXplX2JpdG1hcCk7XG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMDA3LVx0fSBlbHNlIGlmIChkaXJ0eS5mbGFncyBcdTAwMjYgVkZJT19JT01NVV9ESVJUWV9QQUdFU19GTEFHX1NUT1ApIHtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MzAwODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzAwOS1cdFx0aWYgKGlvbW11LVx1MDAzZWRpcnR5X3BhZ2VfdHJhY2tpbmcpIHtcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMwNTAtXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMwNTE6XHRcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMwNTItXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0zMTA1PXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfcmVnaXN0ZXJfZGV2aWNlKHZvaWQgKmlvbW11X2RhdGEsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMTE4LVx0ICovXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMxMTk6XHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWxvY2spO1xuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMTIwLVx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2VkZXZpY2VfbGlzdF9sb2NrKTtcbi0tXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTMxMjY9c3RhdGljIHZvaWQgdmZpb19pb21tdV90eXBlMV91bnJlZ2lzdGVyX2RldmljZSh2b2lkICppb21tdV9kYXRhLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzEzMy1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MzEzNDpcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMxMzUtXHRtdXRleF9sb2NrKFx1MDAyNmlvbW11LVx1MDAzZWRldmljZV9saXN0X2xvY2spO1xuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MzIwMT1zdGF0aWMgaW50IHZmaW9faW9tbXVfdHlwZTFfZG1hX3J3KHZvaWQgKmlvbW11X2RhdGEsIGRtYV9hZGRyX3QgdXNlcl9pb3ZhLFxuLS1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzIwNy1cbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MzIwODpcdG11dGV4X2xvY2soXHUwMDI2aW9tbXUtXHUwMDNlbG9jayk7XG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMyMDktXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0zMjMzPXZmaW9faW9tbXVfdHlwZTFfZ3JvdXBfaW9tbXVfZG9tYWluKHZvaWQgKmlvbW11X2RhdGEsXG4tLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMjQyLVxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzozMjQzOlx0bXV0ZXhfbG9jayhcdTAwMjZpb21tdS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzI0NC1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZCwgXHUwMDI2aW9tbXUtXHUwMDNlZG9tYWluX2xpc3QsIG5leHQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0NjQKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoYXQgY29kZSBzbmlwcGV0LgoKKipBbmFseXppbmcgTG9jayBVc2FnZSBhbmQgQ29uY3VycmVuY3kqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gU2VlaW5nIGBpb21tdS0mZ3Q7bG9ja2AgdXNlZCBhcyBhIG11dGV4IGlzIHBlcmZlY3RseSBub3JtYWwuIFRoYXQgbWVhbnMgdGhlIGNhbGwgdG8gYGNvbmRfcmVzY2hlZCgpYCB3aXRoaW4gdGhhdCBjcml0aWNhbCBzZWN0aW9uIGlzIHRvdGFsbHkgdmFsaWQuIE5vIGlzc3VlcyB0aGVyZSwgdGhhdCYjMzk7cyBleHBlY3RlZCBiZWhhdmlvci4KCkJ1dCB0aGVuIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGJhdGNoX2Zyb21fZG9tYWluYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gKmRvZXNuJiMzOTt0KiBpbnRyb2R1Y2UgYW55IGhpZGRlbiBzcGlubG9jayB1c2FnZS4gSWYgaXQgZGlkLCBgY29uZF9yZXNjaGVkKClgIHdvdWxkIGJlIHByb2JsZW1hdGljIGluc2lkZSB0aGUgbXV0ZXggcHJvdGVjdGVkIHNlY3Rpb24sIGFuZCBsZWFkIHRvIHBvc3NpYmxlIGRlYWRsb2NrIHNjZW5hcmlvcyBvciBwcmlvcml0eSBpbnZlcnNpb24gcHJvYmxlbXMuIEkgbmVlZCB0byByZXZpZXcgaXRzIGNvZGUgdG8gY29uZmlybSB0aGF0IGl0JiMzOTtzIHNhZmUgdG8gY2FsbCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoYXQgbXV0ZXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXV0ZXhfbG9jay4qcGFnZXNfcndfc2VtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjcyNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkludmVzdGlnYXRpbmcgYGJhdGNoX2Zyb21fZG9tYWluYCBMb2NrcyoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgdGhpcyBgYmF0Y2hfZnJvbV9kb21haW5gIGZ1bmN0aW9uLiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIEkmIzM5O20gbm90IGludHJvZHVjaW5nIGFueSBjb250ZW50aW9uIG9yIGRlYWRsb2NrcyBkb3duc3RyZWFtLiBJJiMzOTttIGdvaW5nIHRvIHBpbnBvaW50IGV4YWN0bHkgd2hhdCBsb2NrcyB0aGlzIGZ1bmN0aW9uIHV0aWxpemVzLiBVbmRlcnN0YW5kaW5nIHRoZSBsb2NraW5nIHNjb3BlIGFuZCBkdXJhdGlvbiBvZiBgYmF0Y2hfZnJvbV9kb21haW5gIGlzIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIGFuZCBwcmV2ZW50aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcy4gSSB3aWxsIGFsc28gYmUgbG9va2luZyBpbnRvIGl0cyBkZXBlbmRlbmNpZXMsIHNpbmNlIGxvY2tzIHRlbmQgdG8gY2FzY2FkZSBhbmQgdW5kZXJzdGFuZGluZyB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCBgYmF0Y2hfZnJvbV9kb21haW5gIHdpbGwgYmUgY3JpdGljYWwgZm9yIGEgY29tcHJlaGVuc2l2ZSBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiYXRjaF9mcm9tX2RvbWFpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTM5Nz1zdGF0aWMgYm9vbCBiYXRjaF9hZGRfcGZuKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCB1bnNpZ25lZCBsb25nIHBmbilcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDYtICovXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0MDc6c3RhdGljIHZvaWQgYmF0Y2hfZnJvbV9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDgtXHRcdFx0ICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTQzOD1zdGF0aWMgc3RydWN0IHBhZ2UgKipyYXdfcGFnZXNfZnJvbV9kb21haW4oc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ2MS0vKiBDb250aW51ZXMgcmVhZGluZyBhIGRvbWFpbiB1bnRpbCB3ZSByZWFjaCBhIGRpc2NvbnRpbnVpdHkgaW4gdGhlIHBmbnMuICovXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NjI6c3RhdGljIHZvaWQgYmF0Y2hfZnJvbV9kb21haW5fY29udGludWUoc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NjMtXHRcdFx0XHQgICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ3MC1cdGJhdGNoLVx1MDAzZWFycmF5X3NpemUgPSBiYXRjaC1cdTAwM2VlbmQ7XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NzE6XHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCwgbGFzdF9pbmRleCk7XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NzItXHRiYXRjaC1cdTAwM2VhcnJheV9zaXplID0gYXJyYXlfc2l6ZTtcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xMTcyPXN0YXRpYyBpbnQgcGZuX3JlYWRlcl9maWxsX3NwYW4oc3RydWN0IHBmbl9yZWFkZXIgKnBmbnMpXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMS1cdFx0LyogVGhlIHN0b3JhZ2VfZG9tYWluIGNhbm5vdCBjaGFuZ2Ugd2l0aG91dCB0aGUgcGFnZXMgbXV0ZXggKi9cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjEyMDI6XHRcdGJhdGNoX2Zyb21fZG9tYWluKFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMy1cdFx0XHRcdTAwMjZwZm5zLVx1MDAzZWJhdGNoLCBhcmVhLVx1MDAzZXN0b3JhZ2VfZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xNjgxPWlvcHRfYXJlYV91bnBpbl9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY5OC1cdFx0XHRcdFx0c3RhcnRfaW5kZXgpO1xuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTY5OTpcdFx0XHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydCxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3MDAtXHRcdFx0XHRcdCAgbGFzdF9pbmRleCk7XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcxOS1cdFx0ICAgIGxhc3RfaW5kZXggIT0gcmVhbF9sYXN0X2luZGV4KVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTcyMDpcdFx0XHRiYXRjaF9mcm9tX2RvbWFpbl9jb250aW51ZShiYXRjaCwgZG9tYWluLCBhcmVhLFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcyMS1cdFx0XHRcdFx0XHQgICBsYXN0X2luZGV4ICYjNDM7IDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzE2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIGBpb3B0X2FyZWFfdW5waW5fZG9tYWluYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIExldCYjMzk7cyBzZWUuLi4gdGhlIHRhc2sgYXQgaGFuZCBpcyBgaW9wdF9hcmVhX3VucGluX2RvbWFpbmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBzY29wZS4gVGhpcyBzb3VuZHMgbGlrZSBzb21ldGhpbmcgcmVsYXRlZCB0byB1bnBpbm5pbmcgbWVtb3J5IHJlZ2lvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gYSBjZXJ0YWluICYjMzQ7ZG9tYWluJiMzNDsgb3IgYXJlYS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBvcHRpbWl6YXRpb24sIGdpdmVuIHRoZSAmIzM0O29wdCYjMzQ7IHByZWZpeCwgcHJvYmFibHkgYWltaW5nIHRvIGZyZWUgdXAgcmVzb3VyY2VzIG9yIG1hbmFnZSBtZW1vcnkgbW9yZSBlZmZpY2llbnRseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQ6IGlzIHRoaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSwgYSBwYXJ0aWN1bGFyIG9wZXJhdGluZyBzeXN0ZW0sIG9yIGEgY3VzdG9tIG1lbW9yeSBtYW5hZ2VtZW50IGxheWVyPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHVucGlubmluZyB0aGlzIGRvbWFpbj8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgcGVyZm9ybWFuY2UsIHNlY3VyaXR5LCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aD8gTXkgZXhwZXJ0aXNlIGluIHRoaXMgZG9tYWluIGFsbG93cyBtZSB0byBpbW1lZGlhdGVseSB0aGluayBvZiBwb3RlbnRpYWwgcGl0ZmFsbHMg4oCTIGFyZSB0aGVyZSBhbnkgcmFjZSBjb25kaXRpb25zIHdoZW4gdW5waW5uaW5nPyBBcmUgdGhlcmUgYW55IGRhdGEgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgbGVhZCB0byBjb3JydXB0aW9uIGlmIHRoZSBtZW1vcnkgaXMgdXNlZCBlbHNld2hlcmU/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgdGhpcyBmdW5jdGlvbiwgYW5kIHdoYXQgb3BlcmF0aW9ucyBpdCBleHBlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb3B0X2FyZWFfdW5waW5fZG9tYWluJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTY4MD1zdGF0aWMgdm9pZFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTY4MTppb3B0X2FyZWFfdW5waW5fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCBzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY4Mi1cdFx0ICAgICAgIHN0cnVjdCBpb3B0X3BhZ2VzICpwYWdlcywgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTE3NDE9c3RhdGljIHZvaWQgX19pb3B0X2FyZWFfdW5maWxsX2RvbWFpbihzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3ODQtXHRcdH1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjE3ODU6XHRcdGlvcHRfYXJlYV91bnBpbl9kb21haW4oXHUwMDI2YmF0Y2gsIGFyZWEsIHBhZ2VzLCBkb21haW4sXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xNzg2LVx0XHRcdFx0ICAgICAgIHNwYW4uc3RhcnRfaG9sZSwgc3Bhbi5sYXN0X2hvbGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MjcwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gYF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW5gKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW5gLiBJJiMzOTttIHRoaW5raW5nLCB0aGlzIGlzIGEgY3J1Y2lhbCBwaWVjZSwgZXNwZWNpYWxseSBnaXZlbiB0aGUgY29udGV4dCBvZiB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIG9uLiBJdCYjMzk7cyBsaWtlbHkgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gcmVsYXRlZCB0byBhcmVhIHVuZmlsbGluZyBvcGVyYXRpb25zLCBwcm9iYWJseSB3aXRoaW4gdGhlIGlvcHQgZnJhbWV3b3JrLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGhhcyB0byBkbyB3aXRoIGhvdyB3ZSYjMzk7cmUgb3B0aW1pemluZyBvciBtYW5pcHVsYXRpbmcgc29tZSBraW5kIG9mIGdlb21ldHJpYyByZXByZXNlbnRhdGlvbi4gTXkgaW5pdGlhbCBndWVzcyBpcyB0aGF0IGl0IG1pZ2h0IGJlIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIGRvbWFpbiBvciByZWdpb24sIGFuZCBwb3NzaWJseSBkb2luZyBzbyBpbiBhIHdheSB0aGF04oCZcyBxdWl0ZSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUuCgpXaGF0IEkmIzM5O20gcmVhbGx5IGtlZW4gdG8gdW5kZXJzdGFuZCBub3cgaXMgdGhlIHByZWNpc2UgbmF0dXJlIG9mIHRoZSBkb21haW4gaXQgZGVhbHMgd2l0aCDigJMgaXMgaXQgYSBjb250aWd1b3VzIGFyZWEsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggYW5kIGRpc2Nvbm5lY3RlZD8gQW5kIG9mIGNvdXJzZSwgdGhlIHVuZGVybHlpbmcgYWxnb3JpdGhtcy4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBjb2RlIGZvciB0aGUgdHlwZXMgb2YgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHVzZWQsIGFueSBwb3RlbnRpYWwgZm9yIHBhcmFsbGVsaXphdGlvbiwgYW5kIG9mIGNvdXJzZSwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBmb3IgbWVtb3J5IGJvdHRsZW5lY2tzIG9yIGFueSBvdGhlciBpc3N1ZXMgdGhhdCBtaWdodCBpbXBlZGUgcGVyZm9ybWFuY2UgaW4gb3VyIHBhcnRpY3VsYXIgc2NlbmFyaW9zLiBJIGFsc28gZXhwZWN0IHRoaXMgdG8gYmUgY29yZSB0byBhbnkgcHJvYmxlbXMgb3IgcXVlc3Rpb25zIHRoYXQgaGF2ZSBjb21lIHVwIGluIHRoZSBhcmVhLiBMZXQmIzM5O3MgZ2V0IHRvIHdvcmshCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faW9wdF9hcmVhX3VuZmlsbF9kb21haW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xNjgxPWlvcHRfYXJlYV91bnBpbl9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTc0MC1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjE3NDE6c3RhdGljIHZvaWQgX19pb3B0X2FyZWFfdW5maWxsX2RvbWFpbihzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTc0Mi1cdFx0XHRcdCAgICAgIHN0cnVjdCBpb3B0X3BhZ2VzICpwYWdlcyxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xODAxPXN0YXRpYyB2b2lkIGlvcHRfYXJlYV91bmZpbGxfcGFydGlhbF9kb21haW4oc3RydWN0IGlvcHRfYXJlYSAqYXJlYSxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xODA2LVx0aWYgKGVuZF9pbmRleCAhPSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxODA3Olx0XHRfX2lvcHRfYXJlYV91bmZpbGxfZG9tYWluKGFyZWEsIHBhZ2VzLCBkb21haW4sIGVuZF9pbmRleCAtIDEpO1xuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTgwOC19XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTgzND12b2lkIGlvcHRfYXJlYV91bmZpbGxfZG9tYWluKHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsIHN0cnVjdCBpb3B0X3BhZ2VzICpwYWdlcyxcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xODM5LVxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTg0MDpcdF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oYXJlYSwgcGFnZXMsIGRvbWFpbixcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE4NDEtXHRcdFx0XHQgIGlvcHRfYXJlYV9sYXN0X2luZGV4KGFyZWEpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwNzMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIFNvZnQgTG9ja3VwIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllYWgsIGBjb25kX3Jlc2NoZWQoKWAgbG9va3MgcGVyZmVjdGx5IGFwcHJvcHJpYXRlIGhlcmUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCYjMzk7cyBmaXhpbmcgdGhpcyBzb2Z0IGxvY2t1cCwgc28gdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGlzIGl0IHdvcnRoIGZ1enppbmc/IExldCYjMzk7cyBzZWUuLi4KClJpZ2h0LCB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgd2hhdCB0byBsb29rIGZvciB3aGVuIGRldGVybWluaW5nIGBXb3J0aEZ1enppbmdgLiBGaXJzdCwgaXQgc2F5cywgJiMzNDtyZXR1cm4gZmFsc2UmIzM0OyBpZiB0aGUgcGF0Y2ggY29udGFpbnMgb25seSBjaGFuZ2VzIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMgb3IgaWYgaXQgY29udGFpbnMgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBzdWNoIGFzIGxvZ2dpbmcgb3IgdHJhY2Vwb2ludHMuIEl0IHNheXMgYWxzbyBub3QgdG8gaW5jbHVkZSBjaGFuZ2VzIHRvIGNvbnN0YW50cyBvciBtYWNyb3Mgb3IgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoaXMgY2hhbmdlIGlzbiYjMzk7dCBkZWNvcmF0aXZlOyBhZGRpbmcgYGNvbmRfcmVzY2hlZCgpYCAqZGVmaW5pdGVseSogYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0JiMzOTtzIG5vdCBhIHNpbXBsZSBudW1lcmljIGNvbnN0YW50IGNoYW5nZSwgYW5kIGl0JiMzOTtzIGFic29sdXRlbHkgcmVhY2hhYmxlLCBldmVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCBhY2NvcmRpbmcgdG8gdGhlIGNyaXRlcmlhLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYHRydWVgLgoKTm93IGZvciB0aGUgbmV4dCBwYXJ0LCB0aGUgc2V0dGluZ3MuIEkmIzM5O2xsIG5lZWQgdG8gc2V0IHRoZSBgRm9jdXNTeW1ib2xzYCB0byBgYmF0Y2hfZnJvbV9kb21haW5gIGFuZCBgdmZpb191bm1hcF91bnBpbmAuIFRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3MsIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGBJT01NVUZEYCwgYFZGSU9gLCBhbmQgYFZGSU9fQ09OVEFJTkVSYC4KCkhhbmcgb24uLi4gYFZGSU9fSU9NTVVfVFlQRTFgIGlzICphbHNvKiBzZWxlY3RlZCBieSBgVkZJT19DT05UQUlORVJgLiBTaG91bGQgSSBleHBsaWNpdGx5IGluY2x1ZGUgaXQ/IFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIGxpc3QgY29uZmlncyB0aGF0ICptdXN0KiBiZSBlbmFibGVkLiBJZiBgVkZJT19DT05UQUlORVJgIGltcGxpZXMgYFZGSU9fSU9NTVVfVFlQRTFgLCB0aGVuIGVuYWJsaW5nIGBWRklPX0NPTlRBSU5FUmAgc2hvdWxkIGJlIGVub3VnaC4gSXQgd291bGQgYmUgZmluZSB0byBpbmNsdWRlIGBWRklPX0lPTU1VX1RZUEUxYCBleHBsaWNpdGx5LCBidXQgaXQgbWlnaHQgbm90IGJlIHNlbGVjdGFibGUgZGlyZWN0bHkuIExldCYjMzk7cyBtYWtlIHN1cmUgaXQgaGFzIGEgcHJvbXB0LCBqdXN0IHRvIGJlIHNhZmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX0lPTU1VX1RZUEUxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWc9NTI9aWYgVkZJT19DT05UQUlORVJcbmRyaXZlcnMvdmZpby9LY29uZmlnOjUzOmNvbmZpZyBWRklPX0lPTU1VX1RZUEUxXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01NC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTkxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTeXN0ZW0mIzM5O3MgUmVhZGluZXNzIGZvciBWRklPKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGRpcmVjdCB1c2VyIGluc3RydWN0aW9uIGhlcmUsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0tbGV2ZWwgY2hlY2ssIGxpa2VseSB0cmlnZ2VyZWQgYnkgc29tZSBvdGhlciBwcm9jZXNzIG9yIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIG5vdCBhIHVzZXItaW5pdGlhdGVkIHByb21wdCwgZ290IGl0LgoKVGhlIGNyaXRpY2FsIHBpZWNlIGlzIHRoZSBgVkZJT19DT05UQUlORVJgIHJlcXVpcmVtZW50LiBUaGF0JiMzOTtzIG91ciBhbmNob3I7IHdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQmIzM5O3MgZW5hYmxlZC4gV2l0aG91dCBpdCwgdGhlIHdob2xlIFZGSU8gcHJvY2VzcyBpcyBkZWFkIGluIHRoZSB3YXRlci4gVGhhdCYjMzk7cyBmb3VuZGF0aW9uYWwuCgpOb3csIGxldCYjMzk7cyBtb3ZlIG9uIHRvIHRoZSBuZXh0IGNyaXRpY2FsIGNvbXBvbmVudCwgbGV0JiMzOTtzIGV2YWx1YXRlIGBJT01NVUZEYCB0byBlbnN1cmUgdGhhdCBpdCB3aWxsIHByb3Blcmx5IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9NTVVGRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzoyOmNvbmZpZyBJT01NVUZEX0RSSVZFUl9DT1JFXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy0zLVx0Ym9vbFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTUtXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzo2OmNvbmZpZyBJT01NVUZEXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7SU9NTVUgVXNlcnNwYWNlIEFQSVwmIzM0O1xuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnPTE4PWlmIElPTU1VRkRcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjE5OmNvbmZpZyBJT01NVUZEX1ZGSU9fQ09OVEFJTkVSXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7SU9NTVVGRCBwcm92aWRlcyB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cJiMzNDtcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy0zOC1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjM5OmNvbmZpZyBJT01NVUZEX1RFU1RcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtJT01NVSBVc2Vyc3BhY2UgQVBJIFRlc3Qgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjUzMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJT01NVUZEIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgdGhvdWdodCBwcm9jZXNzIGlzOiAqcmlnaHQsIGBJT01NVUZEYCBhbmQgYFZGSU9fQ09OVEFJTkVSYCBhcmUgdGhlIGtleSBjb25maWdzIHRvIGVuYWJsZSBoZXJlLiogV2UgbmVlZCB0aG9zZSB0byBldmVuIGNvbnNpZGVyIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UuIExldCYjMzk7cyBzZWUuLi4gdGhlIGNvcmUgb2YgdGhlIG1hdHRlciBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGBjb25kX3Jlc2NoZWQoKWAgY2FsbHMgd2l0aGluIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4KCkFoLCB5ZXMsIG5vdyBJIHJlY2FsbC4gVGhlc2UgYWRkaXRpb25zIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcywgcGFydGljdWxhcmx5IGR1cmluZyB0aG9zZSBsYXJnZSB1bm1hcC91bnBpbiBvcGVyYXRpb25zLiBUaGlzIGlzIGEgY2xlYXIgZXhlY3V0aW9uIGZsb3cgbW9kaWZpY2F0aW9uIOKAkyB5aWVsZGluZyB0aGUgQ1BVIGluIHRob3NlIGNyaXRpY2FsIHNlY3Rpb25zLiBHaXZlbiB0aGF0IGl0JiMzOTtzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgKmFic29sdXRlbHkqIGRlbWFuZHMgZnV6emluZy4gSXQmIzM5O3Mgbm90IGp1c3QgYWJvdXQgY29uZmlybWluZyB0aGUgc29mdCBsb2NrdXAgZml4OyB3ZSBuZWVkIHRvIGJlIHZpZ2lsYW50IGFib3V0IGFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMsIHN1Y2ggYXMgc2NoZWR1bGluZyBpc3N1ZXMgd2l0aGluIGF0b21pYyBjb250ZXh0cyB0aGF0IHdlIG1pZ2h0IGJlIGludHJvZHVjaW5nLgoKU28sIGp1c3QgdG8gYmUgY3J5c3RhbCBjbGVhcjogYElPTU1VRkRgIGFuZCBgVkZJT19DT05UQUlORVJgIGFyZSBhIG11c3QsIGFuZCBmb3IgdGhhdCwgd2UgbmVlZCBgVkZJT2AuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoIGR1cmluZyBmdXp6aW5nIGFyZSBgYmF0Y2hfZnJvbV9kb21haW5gIGFuZCBgdmZpb191bm1hcF91bnBpbmAuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgdHJhZGluZyBvbmUgcHJvYmxlbSBmb3IgYW5vdGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fQ09OVEFJTkVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWc9MzA9Y29uZmlnIFZGSU9fR1JPVVBcbi0tXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy0zOS1cbmRyaXZlcnMvdmZpby9LY29uZmlnOjQwOmNvbmZpZyBWRklPX0NPTlRBSU5FUlxuZHJpdmVycy92ZmlvL0tjb25maWctNDEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE0NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVtOgoKKipWRklPIERlcGVuZGVuY2llczogQSBRdWljayBOb3RlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZSBoZXJlLiAqVkZJT19DT05UQUlORVIqIGlzIGNsZWFybHkgYnVpbHQgb24gdG9wIG9mICpWRklPX0dST1VQKi4gSSBtZWFuLCB0aGF0IGRlcGVuZGVuY3kgaXMgZnVuZGFtZW50YWwuIFRoZXJlJiMzOTtzIG5vIGdldHRpbmcgYXJvdW5kIGl0LCBsb2dpY2FsbHkgc3BlYWtpbmcsIHdpdGhvdXQgc29tZSBzaWduaWZpY2FudCByZS1hcmNoaXRlY3R1cmUsIGFuZCBldmVuIHRoZW4sIEkmIzM5O2QgaGF2ZSB0byBxdWVzdGlvbiB0aGUgYmVuZWZpdC4gVGhlIGNvbnRhaW5lciBjb25jZXB0LCBpdHMgbWFuYWdlbWVudCwgaXNvbGF0aW9uLCBhbGwgb2YgaXQuLi4gdGhhdCByZWxpZXMgb24gdGhlIGdyb3VwIGFic3RyYWN0aW9uIGFzIGEgYmFzZSBsYXllci4gV2l0aG91dCB0aGUgZ3JvdXBpbmcsIHRoZSBjb250YWluZXIgc2ltcGx5IHdvdWxkbiYjMzk7dCBmdW5jdGlvbiBhcyBpbnRlbmRlZCwgb3IgZXZlbiBmdW5jdGlvbiBhdCBhbGwuIEl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIGRlcGVuZGVuY3kuIE5vdCBzb21ldGhpbmcgdG8gYmUgcXVlc3Rpb25lZC4gSXQmIzM5O3MgcHJldHR5IHNlbGYtZXZpZGVudCwgd2hlbiBJIHRoaW5rIGFib3V0IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uIFZGSU9fR1JPVVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZz00MD1jb25maWcgVkZJT19DT05UQUlORVJcbi0tXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy00Mi1cdHNlbGVjdCBWRklPX0lPTU1VX1RZUEUxIGlmIE1NVSBcdTAwMjZcdTAwMjYgKFg4NiB8fCBTMzkwIHx8IEFSTSB8fCBBUk02NClcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQzOlx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy00NC1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnPTYzPWNvbmZpZyBWRklPX05PSU9NTVVcbmRyaXZlcnMvdmZpby9LY29uZmlnLTY0LVx0Ym9vbCBcJiMzNDtWRklPIE5vLUlPTU1VIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdmZpby9LY29uZmlnOjY1Olx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy02Ni1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NTMKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogMTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGhpcyBQYXRjaDogQSBXb3J0aHdoaWxlIEVuZGVhdm9yKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggYWZmZWN0cyBgVkZJT19HUk9VUGAsIHdoaWNoIGlzIG5lc3RlZCB1bmRlciBgaWYgVkZJT2AuIFJpZ2h0LCB0aGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYFZGSU9gLCBgVkZJT19HUk9VUGAsIGBWRklPX0NPTlRBSU5FUmAsIGFuZCBgSU9NTVVGRGAuIEkmIzM5O2xsIG9yZ2FuaXplIG15IHRob3VnaHRzIGFuZCBsaXN0IHRoZXNlIGNvbXBvbmVudHMgYXMgYElPTU1VRkRgLCBgVkZJT2AsIGBWRklPX0dST1VQYCwgYW5kIGBWRklPX0NPTlRBSU5FUmAuCgpCdXQgd2FpdCwgaXMgZnV6emluZyB0aGlzIGV2ZW4gKm5lY2Vzc2FyeSo/IEFkZGluZyBgY29uZF9yZXNjaGVkKClgIHNlZW1zIGxpa2UgYSB0cml2aWFsLCBhbG1vc3QgY29zbWV0aWMgY2hhbmdlLiBJdCBwcmltYXJpbHkgYWRkcmVzc2VzIHBvdGVudGlhbCBzb2Z0IGxvY2t1cHMsIGFuZCB3aGlsZSBTeXprYWxsZXIgKmNhbiogZGV0ZWN0IHRob3NlLCBwcmV2ZW50aW5nIHRoZW0gaXMgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LiBIbW1tLi4uCgpUaGVuIGl0IGhpdHMgbWU6IGlmIGBjb25kX3Jlc2NoZWQoKWAgaXMgbWlzdGFrZW5seSBjYWxsZWQgaW4gYW4gYXRvbWljIGNvbnRleHQsIGJvb20sIHdlIGhhdmUgYSBidWchIEZ1enppbmcgaXMgKnBlcmZlY3QqIGZvciB1bmNvdmVyaW5nIHRoYXQga2luZCBvZiBzdWJ0bGUsIGNvbnRleHQtZGVwZW5kZW50IGVycm9yLiBZZXMsIHRoaXMgcGF0Y2ggaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyByb2xsaW5nLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU9NTVVGRCYjMzQ7LAogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fR1JPVVAmIzM0OywKICAgICYjMzQ7VkZJT19DT05UQUlORVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiYXRjaF9mcm9tX2RvbWFpbiYjMzQ7LAogICAgJiMzNDt2ZmlvX3VubWFwX3VucGluJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgY29uZF9yZXNjaGVkKCkgdG8gbG9vcHMgaW4gYmF0Y2hfZnJvbV9kb21haW4gYW5kIHZmaW9fdW5tYXBfdW5waW4gdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMgZHVyaW5nIGxhcmdlIHVubWFwL3VucGluIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBieSB5aWVsZGluZyB0aGUgQ1BVLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgc29mdCBsb2NrdXAgaXMgZml4ZWQgYW5kIG5vIG5ldyBpc3N1ZXMgKGxpa2Ugc2NoZWR1bGluZyB3aGlsZSBhdG9taWMpIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJT01NVUZEJiMzNDssCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19HUk9VUCYjMzQ7LAogICAgJiMzNDtWRklPX0NPTlRBSU5FUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhdGNoX2Zyb21fZG9tYWluJiMzNDssCiAgICAmIzM0O3ZmaW9fdW5tYXBfdW5waW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBjb25kX3Jlc2NoZWQoKSB0byBsb29wcyBpbiBiYXRjaF9mcm9tX2RvbWFpbiBhbmQgdmZpb191bm1hcF91bnBpbiB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcyBkdXJpbmcgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBzb2Z0IGxvY2t1cCBpcyBmaXhlZCBhbmQgbm8gbmV3IGlzc3VlcyAobGlrZSBzY2hlZHVsaW5nIHdoaWxlIGF0b21pYykgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyMzo0NC43MTA2Mjc4MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzI4OTIzMDc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT01NVUZEXCIsXG4gICAgXCJWRklPXCIsXG4gICAgXCJWRklPX0dST1VQXCIsXG4gICAgXCJWRklPX0NPTlRBSU5FUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJhdGNoX2Zyb21fZG9tYWluXCIsXG4gICAgXCJ2ZmlvX3VubWFwX3VucGluXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBjb25kX3Jlc2NoZWQoKSB0byBsb29wcyBpbiBiYXRjaF9mcm9tX2RvbWFpbiBhbmQgdmZpb191bm1hcF91bnBpbiB0byBwcmV2ZW50IHNvZnQgbG9ja3VwcyBkdXJpbmcgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBzb2Z0IGxvY2t1cCBpcyBmaXhlZCBhbmQgbm8gbmV3IGlzc3VlcyAobGlrZSBzY2hlZHVsaW5nIHdoaWxlIGF0b21pYykgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjIzOjQ0LjcxMDYzMzE3NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc4OTg3OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTIwM2YxNzZhNzg2YTk1ZGI5ODhiZTkzNTkzNTYxOTk1YTRmMzcyZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNzoyMzo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYyBiL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXFxuaW5kZXggOWJkYjI5NDVhZmUxZWIuLmU0Nzg3NzFjMGNjZjZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXFxuKysrIGIvZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcXG5AQCAtNDEyLDYgKzQxMiw3IEBAIHN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxcbiBcXHR1bnNpZ25lZCBpbnQgcGFnZV9vZmZzZXQgPSAwO1xcbiBcXHR1bnNpZ25lZCBsb25nIGlvdmE7XFxuIFxcdHBoeXNfYWRkcl90IHBoeXM7XFxuK1xcdGludCBpID0gMDtcXG4gXFxuIFxcdGlvdmEgPSBpb3B0X2FyZWFfaW5kZXhfdG9faW92YShhcmVhLCBzdGFydF9pbmRleCk7XFxuIFxcdGlmIChzdGFydF9pbmRleCA9PSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpXFxuQEAgLTQyOCw2ICs0MjksOSBAQCBzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcXG4gXFx0XFx0aW92YSArPSBQQUdFX1NJWkUgLSBwYWdlX29mZnNldDtcXG4gXFx0XFx0cGFnZV9vZmZzZXQgPSAwO1xcbiBcXHRcXHRzdGFydF9pbmRleCsrO1xcbitcXG4rXFx0XFx0aWYgKCgrK2kgJSBCSVQoUFVEX09SREVSKSkgPT0gMClcXG4rXFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmNcXG5pbmRleCBjODE1MWJhNTRkZTMzYS4uZTc4YmMwN2Q5YjZlOGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuY1xcbisrKyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmNcXG5AQCAtMTE1Myw2ICsxMTUzLDcgQEAgc3RhdGljIGxvbmcgdmZpb191bm1hcF91bnBpbihzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxcbiBcXHRpbnQgdW5tYXBwZWRfcmVnaW9uX2NudCA9IDA7XFxuIFxcdGxvbmcgdW5sb2NrZWQgPSAwO1xcbiBcXHRzaXplX3QgcG9zID0gMDtcXG4rXFx0aW50IGkgPSAwO1xcbiBcXG4gXFx0aWYgKCFkbWEtXFx1MDAzZXNpemUpXFxuIFxcdFxcdHJldHVybiAwO1xcbkBAIC0xMTk2LDYgKzExOTcsOCBAQCBzdGF0aWMgbG9uZyB2ZmlvX3VubWFwX3VucGluKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEsXFxuIFxcdFxcdFxcdG5leHQgPSBpb21tdV9pb3ZhX3RvX3BoeXMoZG9tYWluLVxcdTAwM2Vkb21haW4sIGlvdmEgKyBsZW4pO1xcbiBcXHRcXHRcXHRpZiAobmV4dCAhPSBwaHlzICsgbGVuKVxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0aWYgKCgrK2kgJSBCSVQoUFVEX09SREVSKSkgPT0gMClcXG4rXFx0XFx0XFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjIzOjQ1LjM5MDQ5NTQ3MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI2MDkyNzkyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9NTVVGRFwiLFxuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19HUk9VUFwiLFxuICAgIFwiVkZJT19DT05UQUlORVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYXRjaF9mcm9tX2RvbWFpblwiLFxuICAgIFwidmZpb191bm1hcF91bnBpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgY29uZF9yZXNjaGVkKCkgdG8gbG9vcHMgaW4gYmF0Y2hfZnJvbV9kb21haW4gYW5kIHZmaW9fdW5tYXBfdW5waW4gdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMgZHVyaW5nIGxhcmdlIHVubWFwL3VucGluIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBieSB5aWVsZGluZyB0aGUgQ1BVLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgc29mdCBsb2NrdXAgaXMgZml4ZWQgYW5kIG5vIG5ldyBpc3N1ZXMgKGxpa2Ugc2NoZWR1bGluZyB3aGlsZSBhdG9taWMpIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUyMDNmMTc2YTc4NmE5NWRiOTg4YmU5MzU5MzU2MTk5NWE0ZjM3MmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNzoyMzo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jIGIvZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcbmluZGV4IDliZGIyOTQ1YWZlMWViLi5lNDc4NzcxYzBjY2Y2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXG4rKysgYi9kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuY1xuQEAgLTQxMiw2ICs0MTIsNyBAQCBzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcbiBcdHVuc2lnbmVkIGludCBwYWdlX29mZnNldCA9IDA7XG4gXHR1bnNpZ25lZCBsb25nIGlvdmE7XG4gXHRwaHlzX2FkZHJfdCBwaHlzO1xuK1x0aW50IGkgPSAwO1xuIFxuIFx0aW92YSA9IGlvcHRfYXJlYV9pbmRleF90b19pb3ZhKGFyZWEsIHN0YXJ0X2luZGV4KTtcbiBcdGlmIChzdGFydF9pbmRleCA9PSBpb3B0X2FyZWFfaW5kZXgoYXJlYSkpXG5AQCAtNDI4LDYgKzQyOSw5IEBAIHN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxuIFx0XHRpb3ZhICs9IFBBR0VfU0laRSAtIHBhZ2Vfb2Zmc2V0O1xuIFx0XHRwYWdlX29mZnNldCA9IDA7XG4gXHRcdHN0YXJ0X2luZGV4Kys7XG4rXG4rXHRcdGlmICgoKytpICUgQklUKFBVRF9PUkRFUikpID09IDApXG4rXHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG5pbmRleCBjODE1MWJhNTRkZTMzYS4uZTc4YmMwN2Q5YjZlOGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXG5AQCAtMTE1Myw2ICsxMTUzLDcgQEAgc3RhdGljIGxvbmcgdmZpb191bm1hcF91bnBpbihzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxuIFx0aW50IHVubWFwcGVkX3JlZ2lvbl9jbnQgPSAwO1xuIFx0bG9uZyB1bmxvY2tlZCA9IDA7XG4gXHRzaXplX3QgcG9zID0gMDtcbitcdGludCBpID0gMDtcbiBcbiBcdGlmICghZG1hLVx1MDAzZXNpemUpXG4gXHRcdHJldHVybiAwO1xuQEAgLTExOTYsNiArMTE5Nyw4IEBAIHN0YXRpYyBsb25nIHZmaW9fdW5tYXBfdW5waW4oc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSxcbiBcdFx0XHRuZXh0ID0gaW9tbXVfaW92YV90b19waHlzKGRvbWFpbi1cdTAwM2Vkb21haW4sIGlvdmEgKyBsZW4pO1xuIFx0XHRcdGlmIChuZXh0ICE9IHBoeXMgKyBsZW4pXG4gXHRcdFx0XHRicmVhaztcbitcdFx0XHRpZiAoKCsraSAlIEJJVChQVURfT1JERVIpKSA9PSAwKVxuK1x0XHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4gXHRcdH1cbiBcbiBcdFx0LypcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjIzOjQ1LjM5MDQ5NzEzMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNTkxMTgyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZyBEZWNpc2lvbjogWWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIGFkZGluZyBgY29uZF9yZXNjaGVkKClgIGNhbGxzIHdpdGhpbiBsb29wcyBpbiBgZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNgIGFuZCBgZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuY2AuIFNwZWNpZmljYWxseSwgaXQncyBpbnNpZGUgYGJhdGNoX2Zyb21fZG9tYWluYCAoaW9tbXVmZCkgYW5kIGB2ZmlvX3VubWFwX3VucGluYCAodmZpbykuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgc29mdCBsb2NrdXBzIGR1cmluZyBsYXJnZSB1bm1hcC91bnBpbiBvcGVyYXRpb25zLlxuXG5NeSBpbml0aWFsIGd1dCByZWFjdGlvbiB3YXMgdGhhdCBmdXp6aW5nIHRoaXMgbWlnaHQgbm90IGJlIGZydWl0ZnVsLiBUeXBpY2FsbHksIGNoYW5nZXMgaW52b2x2aW5nIGp1c3QgYGNvbmRfcmVzY2hlZCgpYCBhcmUgbG93LXlpZWxkIGZvciBmdXp6aW5nLCB1bmxlc3MgaXQncyBhIHNwZWNpZmljIGJ1Zy1maXggd2Ugd2FudCB0byAqZ3VhcmFudGVlKiBkb2Vzbid0IHJlc3VyZmFjZS4gU3l6a2FsbGVyIGlzbid0IGdyZWF0IGF0IHRhcmdldGluZyBzb2Z0IGxvY2t1cHMgZGlyZWN0bHksIGFuZCBgY29uZF9yZXNjaGVkKClgIGlzLCBhZnRlciBhbGwsIGp1c3QgYSBzY2hlZHVsaW5nIGhpbnQuIEhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbnMgc3RhdGUgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBpZiB0aGVyZSdzIG5vIGFsdGVyYXRpb24gb2YgZnVuY3Rpb25hbCBmbG93LlxuXG5CdXQgd2FpdCwgdGhpcyAqZG9lcyogYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93ISBBZGRpbmcgYGNvbmRfcmVzY2hlZCgpYCBjbGVhcmx5ICpkb2VzKiBpbXBhY3QgdGhlIHNjaGVkdWxpbmcgYmVoYXZpb3Igb2YgdGhvc2UgbG9vcHMsIGV2ZW4gaWYgaXQncyBzdWJ0bGUsIGl0J3MgZnVuY3Rpb25hbC4gSXQncyBkZXNpZ25lZCB0byBtaXRpZ2F0ZSBhIHNvZnQgbG9ja3VwLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY29uY2Vybi4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/XG5cbkkgZGlkIGEgcXVpY2sgc2NhbiAtIG5vIG90aGVyIGNoYW5nZXMsIGp1c3QgdGhlIGBjb25kX3Jlc2NoZWQoKWAgY2FsbHMuIFRoZSBpbXBvcnRhbnQgdGhpbmcgdG8gY29uc2lkZXIgaXMsIGNhbiB3ZSBhY3R1YWxseSByZWFjaCB0aGVzZSBjaGFuZ2VzPyBMZXQncyBjaGVjayB0aGUgY29uZmlncyBmb3IgSU9NTVVGRCBhbmQgVkZJTy4gTG9va3MgbGlrZSBgQ09ORklHX0lPTU1VRkRgLCBgQ09ORklHX1ZGSU9gLCBhbmQgYENPTkZJR19WRklPX0lPTU1VX1RZUEUxYCBjb250cm9sIHRoZXNlIGZlYXR1cmVzLlxuXG5Tbywgc2luY2UgdGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIGFuZCB0aGUgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIGFuIGFwcHJvcHJpYXRlIGNvbmZpZ3VyYXRpb24sIHRoZSBhbnN3ZXIgaXM6ICoqeWVzLCB0aGlzIG1lcml0cyBmdXp6aW5nLioqIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gdGFyZ2V0IGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYCBzcGVjaWZpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyMzo1My42NDk2MTgyMDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3MzA5Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT01NVUZEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6Mjpjb25maWcgSU9NTVVGRF9EUklWRVJfQ09SRVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTMtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzo2OmNvbmZpZyBJT01NVUZEXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiSU9NTVUgVXNlcnNwYWNlIEFQSVxcXCJcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnPTE4PWlmIElPTU1VRkRcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzoxOTpjb25maWcgSU9NTVVGRF9WRklPX0NPTlRBSU5FUlxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTIwLVxcdGJvb2wgXFxcIklPTU1VRkQgcHJvdmlkZXMgdGhlIFZGSU8gY29udGFpbmVyIC9kZXYvdmZpby92ZmlvXFxcIlxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMzgtXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6Mzk6Y29uZmlnIElPTU1VRkRfVEVTVFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIklPTU1VIFVzZXJzcGFjZSBBUEkgVGVzdCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyMzo1My43NzY5MzQxMTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM1NTU2ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWRklPIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0J3MgZGVsdmUgaW50byB0aGlzIFZGSU8gY29uZmlndXJhdGlvbi4gQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdHJvdWJsZXNob290aW5nIGFueSBzcGVjaWZpYyBpc3N1ZSwgSSB3YW50IHRvIHRha2UgYSBtZXRob2RpY2FsIGFwcHJvYWNoIGhlcmUsIHN0YXJ0aW5nIHdpdGggYSBjb21wcmVoZW5zaXZlIGNoZWNrLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmaXJzdDogYXJlIHRoZSBJT01NVSBncm91cHMgcHJvcGVybHkgc2V0IHVwPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgZGV2aWNlcyBJIGludGVuZCB0byBwYXNzdGhyb3VnaCBhcmUgaXNvbGF0ZWQgd2l0aGluIHRoZWlyIG93biBncm91cHMsIHdpdGhvdXQgYW55IHNoYXJlZCByZXNvdXJjZXMgdGhhdCBjb3VsZCBjYXVzZSBjb25mbGljdHMgb3IgaW5zdGFiaWxpdHkuXG5cblRoZW4sIEknbGwgYmUgZ29pbmcgdGhyb3VnaCB0aGUga2VybmVsIG1vZHVsZXMgdGhhdCBhcmUgbG9hZGVkLiBJcyBgdmZpby1wY2lgIGNvcnJlY3RseSBib3VuZCB0byB0aGUgdGFyZ2V0IGRldmljZXM/IEFyZSBgdmZpb19pb21tdV90eXBlMWAgYW5kIGB2ZmlvYCBtb2R1bGVzIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkPyBJJ2xsIGFsc28gYmUgdmVyaWZ5aW5nIHRoYXQgdGhlIG5lY2Vzc2FyeSBmbGFncyBhbmQgb3B0aW9ucyBhcmUgc2V0LiBBcmUgd2UgZGVhbGluZyB3aXRoIGFueSBrbm93biBxdWlya3Mgb3Igd29ya2Fyb3VuZHMgc3BlY2lmaWMgdG8gdGhpcyBoYXJkd2FyZSBvciBoeXBlcnZpc29yIHNldHVwPyBJIG5lZWQgdG8gYmUgc3VyZSBhbnkgcmVxdWlyZWQgcGF0Y2hlcyBvciBtb2R1bGVzIGZvciB0aGUgZGV2aWNlcyBhcmUgaW4gcGxhY2UuXG5cbkkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBncnViIGNvbmZpZ3VyYXRpb24gZmlsZS4gVGhlIGJvb3QgcGFyYW1ldGVycyBuZWVkIHRvIGJlIGRvdWJsZS1jaGVja2VkIHRvIG1ha2Ugc3VyZSBhbGwgdGhlIHJlcXVpcmVkIElPTU1VIHNldHRpbmdzIGFuZCBkZXZpY2UgYmxhY2tsaXN0aW5nIGFyZSBwcm9wZXJseSBjb25maWd1cmVkIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFRoaXMgaW5jbHVkZXMgdmVyaWZ5aW5nIHRoZSBgaW50ZWxfaW9tbXU9b25gIG9yIGBhbWRfaW9tbXU9b25gIGZsYWdzLCBhbG9uZyB3aXRoIGFueSBuZWNlc3NhcnkgYGlvbW11PXB0YCBvciBgbm8taW9tbXVgIGZsYWdzLCBhbmQgbWFraW5nIHN1cmUgbm90aGluZyBpcyBpbnRlcmZlcmluZyB3aXRoIHRoZSBWRklPIHNldHVwLlxuXG5GaW5hbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQgdGhlIG92ZXJhbGwgZW52aXJvbm1lbnQuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIHdpdGggdGhlIHZpcnR1YWxpemF0aW9uIHBsYXRmb3JtLCBoeXBlcnZpc29yIHZlcnNpb24sIG9yIGhvc3Qgb3BlcmF0aW5nIHN5c3RlbSB0aGF0IGNvdWxkIGJlIGFmZmVjdGluZyBWRklPPyBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBiYXNlIGlzIHNvbGlkIGJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgc3BlY2lmaWMgZ3Vlc3QgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyMzo1Ny45MTI0OTMyNDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTkwNTU5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWc9NTI9aWYgVkZJT19DT05UQUlORVJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo1Mzpjb25maWcgVkZJT19JT01NVV9UWVBFMVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTU0LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjIzOjU4LjAxMTU1NjAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzUzMTI2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZ3VyYXRpb25zLCB0aGlua2luZyB0aHJvdWdoIHRoZW0gc3RlcC1ieS1zdGVwOlxuXG4qKlZGSU8gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIElPTU1VLXJlbGF0ZWQgY29uZmlncy4gSSd2ZSBnb3QgYElPTU1VRkRgIGFuZCBgVkZJT19JT01NVV9UWVBFMWAgaW4gbWluZCwgdGhvc2UgYXJlIHRoZSBrZXkgcGxheWVycy4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gaXNuJ3QgYFZGSU9fSU9NTVVfVFlQRTFgIG5lc3RlZCB1bmRlciBzb21ldGhpbmc/IFllYWgsIGl0IGlzISBJdCdzIHBhcnQgb2YgdGhlIGBWRklPX0NPTlRBSU5FUmAgc3Vic3lzdGVtLiBPa2F5LCB0aGF0J3MgaW1wb3J0YW50IGNvbnRleHQuIExvb2tzIGxpa2UgSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBgVkZJT19DT05UQUlORVJgIGFuZCBob3cgYFZGSU9fSU9NTVVfVFlQRTFgIGZpdHMgaW50byBpdHMgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgc3RydWN0dXJlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgaGVyZS4gTGV0J3MgZGVsdmUgaW50byBgVkZJT19DT05UQUlORVJgIGZpcnN0LiBHb3R0YSBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmN5IGNoYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MDEuNTg2ODcyNDE5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzAzNDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkZJT19DT05UQUlORVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWc9MzA9Y29uZmlnIFZGSU9fR1JPVVBcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTM5LVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQwOmNvbmZpZyBWRklPX0NPTlRBSU5FUlxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MDEuNzA5OTEyODI2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNTk0NjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipDaGVja2luZyBWRklPKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdGFrZSBhIGxvb2sgYXQgYFZGSU9gLiBTZWVtcyBsaWtlIHRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB3aGF0ZXZlciBwcm9ibGVtIG9yIHRhc2sgaXMgYXQgaGFuZC4gSXQncyBhIGZ1bmRhbWVudGFsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIHNvIGxldCdzIHN0YXJ0IHdpdGggYSBzb2xpZCBncm91bmRpbmcgaW4gdGhlIGJhc2ljcy4gSSdsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1vZGVsIG9mIGl0cyBhcmNoaXRlY3R1cmUgYW5kIGNhcGFiaWxpdGllcyB0byBhc3Nlc3MgdGhlIHNpdHVhdGlvbiBwcm9wZXJseS4gUGVyaGFwcyB0aGVyZSdzIGFuIGlzc3VlIHdpdGggcGFzc3Rocm91Z2gsIG9yIG1heWJlIEknbSBjb25zaWRlcmluZyBpdHMgdXNlIGluIGEgc3BlY2lmaWMgdmlydHVhbGl6YXRpb24gc2NlbmFyaW8uIFJlZ2FyZGxlc3MsIGEgcXVpY2sgcmV2aWV3IG9mIHRoZSBgVkZJT2AgbGFuZHNjYXBlIGlzIGVzc2VudGlhbCBiZWZvcmUgcHJvY2VlZGluZyBmdXJ0aGVyLiBJIG5lZWQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgaXMgY3VycmVudCwgYW5kIGNvbnNpZGVyIGFueSByZWNlbnQgZGV2ZWxvcG1lbnRzIG9yIGxpbWl0YXRpb25zIEknbSBhd2FyZSBvZi4gTGV0J3Mgc2VlLi4uIHdoYXQgc3BlY2lmaWNhbGx5IGFtIEkgbG9va2luZyBmb3Igd2l0aGluIGBWRklPYD8gVGhhdCdzIHRoZSBuZXh0IGNyaXRpY2FsIHF1ZXN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTkyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDowNC42NDU4NjIyNzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5ODMyNTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy92ZmlvL0tjb25maWc6MjptZW51Y29uZmlnIFZGSU9cXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL0tjb25maWc9MTY9aWYgVkZJT1xcbmRyaXZlcnMvdmZpby9LY29uZmlnOjE3OmNvbmZpZyBWRklPX0RFVklDRV9DREVWXFxuZHJpdmVycy92ZmlvL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gY2RldiAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWFxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTI5LVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjMwOmNvbmZpZyBWRklPX0dST1VQXFxuZHJpdmVycy92ZmlvL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gZ3JvdXAgL2Rldi92ZmlvLyRncm91cF9pZFxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTM5LVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQwOmNvbmZpZyBWRklPX0NPTlRBSU5FUlxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnPTUyPWlmIFZGSU9fQ09OVEFJTkVSXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NTM6Y29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy92ZmlvL0tjb25maWctNTYtXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NTc6Y29uZmlnIFZGSU9fSU9NTVVfU1BBUFJfVENFXFxuZHJpdmVycy92ZmlvL0tjb25maWctNTgtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnPTYxPWVuZGlmXFxuZHJpdmVycy92ZmlvL0tjb25maWctNjItXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NjM6Y29uZmlnIFZGSU9fTk9JT01NVVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZGSU8gTm8tSU9NTVUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTc3LVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjc4OmNvbmZpZyBWRklPX1ZJUlFGRFxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTc5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTgyLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjgzOmNvbmZpZyBWRklPX0RFQlVHRlNcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFeHBvcnQgVkZJTyBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MDQuNzM1NzAxMTYyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODM2MTUzNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGtlcm5lbCBtb2R1bGVzLCB0aGlua2luZyB0aHJvdWdoIGl0IGxpa2UgSSB3b3VsZC5cblxuKipLZXJuZWwgTW9kdWxlIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIG1vZHVsZSByZXF1aXJlbWVudHMuIEkga25vdyB3ZSBuZWVkIGBJT01NVUZEYCwgYFZGSU9gLCBgVkZJT19DT05UQUlORVJgLCBhbmQgYFZGSU9fSU9NTVVfVFlQRTFgLiBIb2xkIG9uIGEgc2Vjb25kLCB0aGF0IGBWRklPX0lPTU1VX1RZUEUxYCBtb2R1bGUgZG9lc24ndCBoYXZlIGl0cyBvd24gcHJvbXB0LCB3aGljaCBpcyB1bnVzdWFsLiBUaGF0IHN1Z2dlc3RzIGl0J3MgYmVpbmcgc2VsZWN0ZWQgaW5kaXJlY3RseSwgd2hpY2ggbWVhbnMgKnNvbWV0aGluZyogaXMgcHVsbGluZyBpdCBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGRyaXZpbmcgdGhhdCBkZXBlbmRlbmN5LiBCZXR0ZXIgZGlnIGRlZXBlciBhbmQgdHJhY2sgZG93biB0aGUgY29uZmlnIG9wdGlvbnMgdGhhdCBlbmFibGUgaXQuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzOTMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDowNy43MTkzMTkzNzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODcxMTM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgVkZJT19JT01NVV9UWVBFMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnPTQwPWNvbmZpZyBWRklPX0NPTlRBSU5FUlxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGNvbnRhaW5lciAvZGV2L3ZmaW8vdmZpb1xcXCJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo0MjpcXHRzZWxlY3QgVkZJT19JT01NVV9UWVBFMSBpZiBNTVUgXFx1MDAyNlxcdTAwMjYgKFg4NiB8fCBTMzkwIHx8IEFSTSB8fCBBUk02NClcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy00My1cXHRkZXBlbmRzIG9uIFZGSU9fR1JPVVBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MDcuODI4MDM2MDM3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDgzMzQ4MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIGEgU29mdCBMb2NrdXAgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEl0J3MgYWRkaW5nIGBjb25kX3Jlc2NoZWQoKWAgY2FsbHMgd2l0aGluIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4gVGhlIGlkZWEgaXMgdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMsIGFuZCB0aGF0J3MgZ29vZCBiZWNhdXNlIHNvZnQgbG9ja3VwcyBhcmUgYSB0eXBlIG9mIGZ1bmN0aW9uYWwgYnVnIHRoYXQgU3l6a2FsbGVyIGlzIGFscmVhZHkgcmVwb3J0aW5nLiBJdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyB1c2luZyBgVkZJT19DT05UQUlORVJgLCB3aGljaCBpbXBsaWVzIHdlJ3JlIHdvcmtpbmcgd2l0aCBgVkZJT19JT01NVV9UWVBFMWAsIHdoaWNoIG1lYW5zIGBJT01NVUZEYCBhbmQgYFZGSU9fQ09OVEFJTkVSYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlLlxuXG5UaGUgY29yZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhZGRpdGlvbiB3b3J0aCBmdXp6aW5nPyBGcm9tIGEgcHVyZWx5IGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHNpbmNlIHRoZSBjaGFuZ2UgbW9kaWZpZXMgZXhlY3V0aW9uIGZsb3cgYnkgeWllbGRpbmcgdGhlIENQVSAod2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSksIHRoZW4sIHllcywgKldvcnRoRnV6emluZz10cnVlKi5cblxuTGV0IG1lIGNoZWNrIHRoZSBkaWZmIGFnYWluLCBjb25maXJtaW5nIHRob3NlIGFyZSB0aGUgb25seSBjaGFuZ2VzLiBDb3JyZWN0LCBqdXN0IHRoZSBhZGRlZCBgY29uZF9yZXNjaGVkKClgIGNhbGxzLiBUaGUgZm9jdXMgc3ltYm9scyBhcmUgYGJhdGNoX2Zyb21fZG9tYWluYCBhbmQgYHZmaW9fdW5tYXBfdW5waW5gLiBXZSBkZWZpbml0ZWx5IG5lZWQgdG8gZW5hYmxlIGBJT01NVUZEYCwgYFZGSU9gLCBhbmQgYFZGSU9fQ09OVEFJTkVSYC5cblxuTm93LCB0aGUgcG90ZW50aWFsIHdyaW5rbGUuICpDb3VsZCogYGNvbmRfcmVzY2hlZCgpYCBpdHNlbGYgaW50cm9kdWNlIGJ1Z3M/IFRoZW9yZXRpY2FsbHksIHllcywgaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBydW5uaW5nIGluIGEgY29udGV4dCB0aGF0IGlzbid0IHByZWVtcHRpYmxlLCBvciBpZiB0aGV5IGhvbGQgc3BpbmxvY2tzLiBBIFwic2NoZWR1bGluZyB3aGlsZSBhdG9taWNcIiBidWcgaXMgYSBwb3NzaWJpbGl0eS4gVGhlcmVmb3JlLCBiZWZvcmUgY29tbWl0dGluZyB0byB0aGUgZnV6emluZyBjYW1wYWlnbiwgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIGBiYXRjaF9mcm9tX2RvbWFpbmAgb3IgYHZmaW9fdW5tYXBfdW5waW5gIGhvbGQgc3BpbmxvY2tzLiBMZXQncyBsb29rIGZvciB0aGF0LCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NzEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MTcuOTExMzg2MjgzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTc2Mzg4MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmF0Y2hfZnJvbV9kb21haW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9Mzk3PXN0YXRpYyBib29sIGJhdGNoX2FkZF9wZm4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtNDA2LSAqL1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjQwNzpzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDgtXFx0XFx0XFx0ICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9NDM4PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqKnJhd19wYWdlc19mcm9tX2RvbWFpbihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NjEtLyogQ29udGludWVzIHJlYWRpbmcgYSBkb21haW4gdW50aWwgd2UgcmVhY2ggYSBkaXNjb250aW51aXR5IGluIHRoZSBwZm5zLiAqL1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjQ2MjpzdGF0aWMgdm9pZCBiYXRjaF9mcm9tX2RvbWFpbl9jb250aW51ZShzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCxcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NjMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbixcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ3MC1cXHRiYXRjaC1cXHUwMDNlYXJyYXlfc2l6ZSA9IGJhdGNoLVxcdTAwM2VlbmQ7XFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6NDcxOlxcdGJhdGNoX2Zyb21fZG9tYWluKGJhdGNoLCBkb21haW4sIGFyZWEsIHN0YXJ0X2luZGV4LCBsYXN0X2luZGV4KTtcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00NzItXFx0YmF0Y2gtXFx1MDAzZWFycmF5X3NpemUgPSBhcnJheV9zaXplO1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTE3Mj1zdGF0aWMgaW50IHBmbl9yZWFkZXJfZmlsbF9zcGFuKHN0cnVjdCBwZm5fcmVhZGVyICpwZm5zKVxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMS1cXHRcXHQvKiBUaGUgc3RvcmFnZV9kb21haW4gY2Fubm90IGNoYW5nZSB3aXRob3V0IHRoZSBwYWdlcyBtdXRleCAqL1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjEyMDI6XFx0XFx0YmF0Y2hfZnJvbV9kb21haW4oXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTIwMy1cXHRcXHRcXHRcXHUwMDI2cGZucy1cXHUwMDNlYmF0Y2gsIGFyZWEtXFx1MDAzZXN0b3JhZ2VfZG9tYWluLCBhcmVhLCBzdGFydF9pbmRleCxcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTE2ODE9aW9wdF9hcmVhX3VucGluX2RvbWFpbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCwgc3RydWN0IGlvcHRfYXJlYSAqYXJlYSxcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE2OTgtXFx0XFx0XFx0XFx0XFx0c3RhcnRfaW5kZXgpO1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjE2OTk6XFx0XFx0XFx0YmF0Y2hfZnJvbV9kb21haW4oYmF0Y2gsIGRvbWFpbiwgYXJlYSwgc3RhcnQsXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcwMC1cXHRcXHRcXHRcXHRcXHQgIGxhc3RfaW5kZXgpO1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcxOS1cXHRcXHQgICAgbGFzdF9pbmRleCAhPSByZWFsX2xhc3RfaW5kZXgpXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTcyMDpcXHRcXHRcXHRiYXRjaF9mcm9tX2RvbWFpbl9jb250aW51ZShiYXRjaCwgZG9tYWluLCBhcmVhLFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3MjEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgbGFzdF9pbmRleCArIDEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjE4LjAyOTAyOTgwMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM4NjIwNjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGB2ZmlvX3VubWFwX3VucGluYCoqXG5cbk9rYXksIHRpbWUgdG8gY2lyY2xlIGJhY2sgdG8gYHZmaW9fdW5tYXBfdW5waW5gLiBJIG5lZWQgdG8gcmV2aWV3IGl0cyBsb2dpYywgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byB0aGUgb3ZlcmFsbCBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVneSB3aXRoaW4gVkZJTy4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgdW5tYXBwaW5nIGFuZCB1bnBpbm5pbmcgYXJlIGNvcnJlY3RseSBzeW5jaHJvbml6ZWQsIHBhcnRpY3VsYXJseSBjb25zaWRlcmluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGF0b21pY2l0eSBpc3N1ZXMsIGVzcGVjaWFsbHkgd2l0aCBkaWZmZXJlbnQgZGV2aWNlIGludGVyYWN0aW9ucy4gSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBtZW1vcnkgbGVha3Mgb3IgZGFuZ2xpbmcgcG9pbnRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHdoZXRoZXIgaXQgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBtZW1vcnkgcmVnaW9ucyBpdCBtaWdodCBiZSBkZWFsaW5nIHdpdGgg4oCTIHdoZXRoZXIgaXQncyBNTUlPLCBETUEgYnVmZmVycywgb3Igc29tZXRoaW5nIGVsc2UuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGlmIGl0IGNvcnJlY3RseSBoYW5kbGVzIGVycm9yIHBhdGhzIGFuZCBhbnkgbmVjZXNzYXJ5IGNsZWFudXAgb3Igcm9sbGJhY2sgcHJvY2VkdXJlcy4gTmVlZCB0byBjb25maXJtIHRoYXQgdGhlIHJlbGV2YW50IGxvY2tzIGFyZSBoZWxkIGFuZCByZWxlYXNlZCBhcHByb3ByaWF0ZWx5IHRvIG1haW50YWluIG1lbW9yeSBpbnRlZ3JpdHkgYW5kIGNvbnNpc3RlbmN5IGFjcm9zcyB0aGUgVkZJTyBsYXllcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MDQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDoyMS4zNjc2NTMxNjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDcwNTEzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX3VubWFwX3VucGluXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xMTMwPXN0YXRpYyBzaXplX3QgdW5tYXBfdW5waW5fc2xvdyhzdHJ1Y3QgdmZpb19kb21haW4gKmRvbWFpbixcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTE0Ni1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjExNDc6c3RhdGljIGxvbmcgdmZpb191bm1hcF91bnBpbihzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTE0OC1cXHRcXHRcXHQgICAgIGJvb2wgZG9fYWNjb3VudGluZylcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTIzNj1zdGF0aWMgdm9pZCB2ZmlvX3JlbW92ZV9kbWEoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LCBzdHJ1Y3QgdmZpb19kbWEgKmRtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTIzOC1cXHRXQVJOX09OKCFSQl9FTVBUWV9ST09UKFxcdTAwMjZkbWEtXFx1MDAzZXBmbl9saXN0KSk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxMjM5OlxcdHZmaW9fdW5tYXBfdW5waW4oaW9tbXUsIGRtYSwgdHJ1ZSk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMjQwLVxcdHZmaW9fdW5saW5rX2RtYShpb21tdSwgZG1hKTtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MjQzOT1zdGF0aWMgdm9pZCB2ZmlvX2lvbW11X3VubWFwX3VucGluX3JlYWNjb3VudChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI0NDgtXFx0XFx0ZG1hID0gcmJfZW50cnkobiwgc3RydWN0IHZmaW9fZG1hLCBub2RlKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI0NDk6XFx0XFx0dW5sb2NrZWQgKz0gdmZpb191bm1hcF91bnBpbihpb21tdSwgZG1hLCBmYWxzZSk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNDUwLVxcdFxcdHAgPSByYl9maXJzdChcXHUwMDI2ZG1hLVxcdTAwM2VwZm5fbGlzdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjIxLjQ4MjM2NDQxOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM5OTE2NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBEZWVwIGludG8gVkZJTyBETUEgVW5tYXBwaW5nKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGB2ZmlvX3VubWFwX3VucGluYCBhbmQgd2hlcmUgaXQncyBjYWxsZWQuIFJpZ2h0LCBpdCdzIHRyaWdnZXJlZCBmcm9tIGJvdGggYHZmaW9fcmVtb3ZlX2RtYWAgYW5kIGB2ZmlvX2lvbW11X3VubWFwX3VucGluX3JlYWNjb3VudGAuIEludGVyZXN0aW5nLiBOb3csIGEga2V5IHF1ZXN0aW9uIHRoYXQgcG9wcyB1cCBpbW1lZGlhdGVseSBpczogRG9lcyB0aGlzIGZ1bmN0aW9uLCBgdmZpb191bm1hcF91bnBpbmAsIGludm9sdmUgaG9sZGluZyBhIHNwaW5sb2NrPyBUaGF0J3MgYSBjcml0aWNhbCBkZXRhaWwgZm9yIGNvbmN1cnJlbmN5IGFuZCBwb3RlbnRpYWwgZGVhZGxvY2tzLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBUaGUgbG9naWNhbCBmaXJzdCBwbGFjZSB0byBsb29rIGlzIHdpdGhpbiBgdmZpb19yZW1vdmVfZG1hYCBhcyBpdOKAmXMgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGNhbGwgcGF0aC4gTGV0J3MgZGVsdmUgaW50byB0aGF0IGNvZGUgYW5kIHNlZSBpZiB0aGVyZeKAmXMgYSBzcGlubG9jayBpbnZvbHZlZCBiZWZvcmUgdGhlIGB2ZmlvX3VubWFwX3VucGluYCBjYWxsLiBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGVzZSBpbnRlcmFjdGlvbnMgYXJlIHN5bmNocm9uaXplZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBjb25jdXJyZW50IERNQSB1bm1hcHBpbmcgb3BlcmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY5NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjI0LjYyMjI4Mjg5MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0OTI3NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcmVtb3ZlX2RtYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTE0Nz1zdGF0aWMgbG9uZyB2ZmlvX3VubWFwX3VucGluKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSwgc3RydWN0IHZmaW9fZG1hICpkbWEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTEyMzUtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxMjM2OnN0YXRpYyB2b2lkIHZmaW9fcmVtb3ZlX2RtYShzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hKVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTIzNy17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTEzOTQ9c3RhdGljIGludCB2ZmlvX2RtYV9kb191bm1hcChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE1NDMtXFx0XFx0biA9IHJiX25leHQobik7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNTQ0OlxcdFxcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE1NDUtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xNTgzPXN0YXRpYyBpbnQgdmZpb19waW5fbWFwX2RtYShzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsIHN0cnVjdCB2ZmlvX2RtYSAqZG1hLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNjI0LVxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNjI1OlxcdFxcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE2MjYtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTE2ODM9c3RhdGljIGludCB2ZmlvX2RtYV9kb19tYXAoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xNzk3LVxcdFxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNzk4OlxcdFxcdFxcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgZG1hKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE3OTktXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNDMxPXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdW5tYXBfdW5waW5fYWxsKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjQzNS1cXHR3aGlsZSAoKG5vZGUgPSByYl9maXJzdChcXHUwMDI2aW9tbXUtXFx1MDAzZWRtYV9saXN0KSkpXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoyNDM2OlxcdFxcdHZmaW9fcmVtb3ZlX2RtYShpb21tdSwgcmJfZW50cnkobm9kZSwgc3RydWN0IHZmaW9fZG1hLCBub2RlKSk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yNDM3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MjQuNzI3MjE4MTI5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTMwNTY4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgdmZpb19kbWFfZG9fdW5tYXBgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGB2ZmlvX2RtYV9kb191bm1hcGAgZnVuY3Rpb24sIGFuZCBpdCdzIGhvbGRpbmcgYGlvbW11LVx1MDAzZWxvY2tgLCB3aGljaCBpcyBhIG11dGV4LiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBJIG5lZWQgdG8gdmVyaWZ5IHRoaXMgYXNzdW1wdGlvbi4gTGV0J3MgdHJhY2UgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIGFuZCBjb25maXJtIHRoYXQgaXQncyBjb3JyZWN0bHkgdXNpbmcgdGhlIG11dGV4IHRvIHByb3RlY3QgdGhlIHNoYXJlZCByZXNvdXJjZXMgd2l0aGluIHRoYXQgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgbHVya2luZyBhcm91bmQuIEtub3dpbmcgdGhpcyBpcyBhIG11dGV4IGFuZCBpdCBob2xkcyB0aGUgY3JpdGljYWwgc2VjdGlvbiBnaXZlcyBtZSBhIGJhc2UgdG8gZ28gb24gdG8gc3RhcnQgYW5hbHl6aW5nIHRoZSBwb3RlbnRpYWwgY3JpdGljYWwgc2VjdGlvbnMuIEknbSBnb2luZyB0byBjYXJlZnVsbHkgcmV2aWV3IHRoZSBjb2RlIGZvciBhbnkgaW50ZXJhY3Rpb25zIHdpdGggc2hhcmVkIG1lbW9yeSBvciBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjb3VsZCBiZSBhZmZlY3RlZCBieSBjb25jdXJyZW50IGFjY2Vzcy4gQSBxdWljayByZXZpZXcgc2hvdWxkIGJlIGVub3VnaCB0byBzZWUgYW55IHBvdGVudGlhbCBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDoyOC4xMjAyNzc1MDdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNzk0NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm11dGV4X2xvY2suKmlvbW11LVxcdTAwM2Vsb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz04OTM9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX3Bpbl9wYWdlcyh2b2lkICppb21tdV9kYXRhLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy05MTgtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzo5MTk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtOTIwLVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0xMDE5PXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfdW5waW5fcGFnZXModm9pZCAqaW9tbXVfZGF0YSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTAzOC1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjEwMzk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTA0MC1cXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTM3MD1zdGF0aWMgdm9pZCB2ZmlvX25vdGlmeV9kbWFfdW5tYXAoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMzkwLVxcdG11dGV4X3VubG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWRldmljZV9saXN0X2xvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MTM5MTpcXHRtdXRleF9sb2NrKFxcdTAwMjZpb21tdS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0xMzkyLX1cXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTM5ND1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX3VubWFwKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTQwOC1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjE0MDk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMTQxMC1cXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MTY4Mz1zdGF0aWMgaW50IHZmaW9fZG1hX2RvX21hcChzdHJ1Y3QgdmZpb19pb21tdSAqaW9tbXUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE3MTUtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoxNzE2OlxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTE3MTctXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTIyMzk9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2F0dGFjaF9ncm91cCh2b2lkICppb21tdV9kYXRhLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yMjUxLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MjI1MjpcXHRtdXRleF9sb2NrKFxcdTAwMjZpb21tdS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0yMjUzLVxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNTQxPXN0YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfZGV0YWNoX2dyb3VwKHZvaWQgKmlvbW11X2RhdGEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI1NDktXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzoyNTUwOlxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTI1NTEtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShncm91cCwgXFx1MDAyNmlvbW11LVxcdTAwM2VlbXVsYXRlZF9pb21tdV9ncm91cHMsIG5leHQpIHtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MjY5OT1zdGF0aWMgaW50IHZmaW9fZG9tYWluc19oYXZlX2VuZm9yY2VfY2FjaGVfY29oZXJlbmN5KHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjcwMy1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI3MDQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjcwNS1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRvbWFpbiwgXFx1MDAyNmlvbW11LVxcdTAwM2Vkb21haW5fbGlzdCwgbmV4dCkge1xcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0yNzE2PXN0YXRpYyBib29sIHZmaW9faW9tbXVfaGFzX2VtdWxhdGVkKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSlcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjcxOS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI3MjA6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjcyMS1cXHRyZXQgPSAhbGlzdF9lbXB0eShcXHUwMDI2aW9tbXUtXFx1MDAzZWVtdWxhdGVkX2lvbW11X2dyb3Vwcyk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTI4Mzk9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2dldF9pbmZvKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjg1Ni1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI4NTc6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjg1OC1cXHRpbmZvLmZsYWdzID0gVkZJT19JT01NVV9JTkZPX1BHU0laRVM7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTI5NzA9c3RhdGljIGludCB2ZmlvX2lvbW11X3R5cGUxX2RpcnR5X3BhZ2VzKHN0cnVjdCB2ZmlvX2lvbW11ICppb21tdSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjk5Ny1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjI5OTg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMjk5OS1cXHRcXHRwZ3NpemUgPSAxIFxcdTAwM2NcXHUwMDNjIF9fZmZzKGlvbW11LVxcdTAwM2VwZ3NpemVfYml0bWFwKTtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzAwNy1cXHR9IGVsc2UgaWYgKGRpcnR5LmZsYWdzIFxcdTAwMjYgVkZJT19JT01NVV9ESVJUWV9QQUdFU19GTEFHX1NUT1ApIHtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMwMDg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzAwOS1cXHRcXHRpZiAoaW9tbXUtXFx1MDAzZWRpcnR5X3BhZ2VfdHJhY2tpbmcpIHtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzA1MC1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMwNTE6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzA1Mi1cXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MzEwNT1zdGF0aWMgdm9pZCB2ZmlvX2lvbW11X3R5cGUxX3JlZ2lzdGVyX2RldmljZSh2b2lkICppb21tdV9kYXRhLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMTE4LVxcdCAqL1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM6MzExOTpcXHRtdXRleF9sb2NrKFxcdTAwMjZpb21tdS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYy0zMTIwLVxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2VkZXZpY2VfbGlzdF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmM9MzEyNj1zdGF0aWMgdm9pZCB2ZmlvX2lvbW11X3R5cGUxX3VucmVnaXN0ZXJfZGV2aWNlKHZvaWQgKmlvbW11X2RhdGEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMxMzMtXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzozMTM0OlxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMxMzUtXFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWRldmljZV9saXN0X2xvY2spO1xcbi0tXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYz0zMjAxPXN0YXRpYyBpbnQgdmZpb19pb21tdV90eXBlMV9kbWFfcncodm9pZCAqaW9tbXVfZGF0YSwgZG1hX2FkZHJfdCB1c2VyX2lvdmEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMyMDctXFxuZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYzozMjA4OlxcdG11dGV4X2xvY2soXFx1MDAyNmlvbW11LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jLTMyMDktXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jPTMyMzM9dmZpb19pb21tdV90eXBlMV9ncm91cF9pb21tdV9kb21haW4odm9pZCAqaW9tbXVfZGF0YSxcXG4tLVxcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzI0Mi1cXG5kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jOjMyNDM6XFx0bXV0ZXhfbG9jayhcXHUwMDI2aW9tbXUtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMtMzI0NC1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGQsIFxcdTAwMjZpb21tdS1cXHUwMDNlZG9tYWluX2xpc3QsIG5leHQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MjguMjEzMDc3OTQ1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzgyNzA1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRoYXQgY29kZSBzbmlwcGV0LlxuXG4qKkFuYWx5emluZyBMb2NrIFVzYWdlIGFuZCBDb25jdXJyZW5jeSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gU2VlaW5nIGBpb21tdS1cdTAwM2Vsb2NrYCB1c2VkIGFzIGEgbXV0ZXggaXMgcGVyZmVjdGx5IG5vcm1hbC4gVGhhdCBtZWFucyB0aGUgY2FsbCB0byBgY29uZF9yZXNjaGVkKClgIHdpdGhpbiB0aGF0IGNyaXRpY2FsIHNlY3Rpb24gaXMgdG90YWxseSB2YWxpZC4gTm8gaXNzdWVzIHRoZXJlLCB0aGF0J3MgZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbkJ1dCB0aGVuIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGJhdGNoX2Zyb21fZG9tYWluYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gKmRvZXNuJ3QqIGludHJvZHVjZSBhbnkgaGlkZGVuIHNwaW5sb2NrIHVzYWdlLiBJZiBpdCBkaWQsIGBjb25kX3Jlc2NoZWQoKWAgd291bGQgYmUgcHJvYmxlbWF0aWMgaW5zaWRlIHRoZSBtdXRleCBwcm90ZWN0ZWQgc2VjdGlvbiwgYW5kIGxlYWQgdG8gcG9zc2libGUgZGVhZGxvY2sgc2NlbmFyaW9zIG9yIHByaW9yaXR5IGludmVyc2lvbiBwcm9ibGVtcy4gSSBuZWVkIHRvIHJldmlldyBpdHMgY29kZSB0byBjb25maXJtIHRoYXQgaXQncyBzYWZlIHRvIGNhbGwgd2l0aGluIHRoZSBzY29wZSBvZiB0aGF0IG11dGV4LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ2NCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjMxLjU1MTM1MTA4NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcxMzcwMzUyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdXRleF9sb2NrLipwYWdlc19yd19zZW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjMxLjkyMjcyOTIzN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODEwMzUyMTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOlxuXG4qKkludmVzdGlnYXRpbmcgYGJhdGNoX2Zyb21fZG9tYWluYCBMb2NrcyoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiB0aGlzIGBiYXRjaF9mcm9tX2RvbWFpbmAgZnVuY3Rpb24uIEkndmUgZ290IHRvIGVuc3VyZSBJJ20gbm90IGludHJvZHVjaW5nIGFueSBjb250ZW50aW9uIG9yIGRlYWRsb2NrcyBkb3duc3RyZWFtLiBJJ20gZ29pbmcgdG8gcGlucG9pbnQgZXhhY3RseSB3aGF0IGxvY2tzIHRoaXMgZnVuY3Rpb24gdXRpbGl6ZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGxvY2tpbmcgc2NvcGUgYW5kIGR1cmF0aW9uIG9mIGBiYXRjaF9mcm9tX2RvbWFpbmAgaXMgY3J1Y2lhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIHByZXZlbnRpbmcgY29uY3VycmVuY3kgaXNzdWVzLiBJIHdpbGwgYWxzbyBiZSBsb29raW5nIGludG8gaXRzIGRlcGVuZGVuY2llcywgc2luY2UgbG9ja3MgdGVuZCB0byBjYXNjYWRlIGFuZCB1bmRlcnN0YW5kaW5nIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIGBiYXRjaF9mcm9tX2RvbWFpbmAgd2lsbCBiZSBjcml0aWNhbCBmb3IgYSBjb21wcmVoZW5zaXZlIGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzI3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MzQuNzMzMDgzNjU4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDk5MzcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiYXRjaF9mcm9tX2RvbWFpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0zOTc9c3RhdGljIGJvb2wgYmF0Y2hfYWRkX3BmbihzdHJ1Y3QgcGZuX2JhdGNoICpiYXRjaCwgdW5zaWduZWQgbG9uZyBwZm4pXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy00MDYtICovXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6NDA3OnN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQwOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz00Mzg9c3RhdGljIHN0cnVjdCBwYWdlICoqcmF3X3BhZ2VzX2Zyb21fZG9tYWluKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbixcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ2MS0vKiBDb250aW51ZXMgcmVhZGluZyBhIGRvbWFpbiB1bnRpbCB3ZSByZWFjaCBhIGRpc2NvbnRpbnVpdHkgaW4gdGhlIHBmbnMuICovXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6NDYyOnN0YXRpYyB2b2lkIGJhdGNoX2Zyb21fZG9tYWluX2NvbnRpbnVlKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ2My1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtNDcwLVxcdGJhdGNoLVxcdTAwM2VhcnJheV9zaXplID0gYmF0Y2gtXFx1MDAzZWVuZDtcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzo0NzE6XFx0YmF0Y2hfZnJvbV9kb21haW4oYmF0Y2gsIGRvbWFpbiwgYXJlYSwgc3RhcnRfaW5kZXgsIGxhc3RfaW5kZXgpO1xcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTQ3Mi1cXHRiYXRjaC1cXHUwMDNlYXJyYXlfc2l6ZSA9IGFycmF5X3NpemU7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xMTcyPXN0YXRpYyBpbnQgcGZuX3JlYWRlcl9maWxsX3NwYW4oc3RydWN0IHBmbl9yZWFkZXIgKnBmbnMpXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xMjAxLVxcdFxcdC8qIFRoZSBzdG9yYWdlX2RvbWFpbiBjYW5ub3QgY2hhbmdlIHdpdGhvdXQgdGhlIHBhZ2VzIG11dGV4ICovXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTIwMjpcXHRcXHRiYXRjaF9mcm9tX2RvbWFpbihcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xMjAzLVxcdFxcdFxcdFxcdTAwMjZwZm5zLVxcdTAwM2ViYXRjaCwgYXJlYS1cXHUwMDNlc3RvcmFnZV9kb21haW4sIGFyZWEsIHN0YXJ0X2luZGV4LFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTY4MT1pb3B0X2FyZWFfdW5waW5fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCBzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY5OC1cXHRcXHRcXHRcXHRcXHRzdGFydF9pbmRleCk7XFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM6MTY5OTpcXHRcXHRcXHRiYXRjaF9mcm9tX2RvbWFpbihiYXRjaCwgZG9tYWluLCBhcmVhLCBzdGFydCxcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xNzAwLVxcdFxcdFxcdFxcdFxcdCAgbGFzdF9pbmRleCk7XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xNzE5LVxcdFxcdCAgICBsYXN0X2luZGV4ICE9IHJlYWxfbGFzdF9pbmRleClcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxNzIwOlxcdFxcdFxcdGJhdGNoX2Zyb21fZG9tYWluX2NvbnRpbnVlKGJhdGNoLCBkb21haW4sIGFyZWEsXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTcyMS1cXHRcXHRcXHRcXHRcXHRcXHQgICBsYXN0X2luZGV4ICsgMSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MzQuODI4MDgyMzg1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODgzMTEzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyBgaW9wdF9hcmVhX3VucGluX2RvbWFpbmAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIExldCdzIHNlZS4uLiB0aGUgdGFzayBhdCBoYW5kIGlzIGBpb3B0X2FyZWFfdW5waW5fZG9tYWluYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHNjb3BlLiBUaGlzIHNvdW5kcyBsaWtlIHNvbWV0aGluZyByZWxhdGVkIHRvIHVucGlubmluZyBtZW1vcnkgcmVnaW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiBhIGNlcnRhaW4gXCJkb21haW5cIiBvciBhcmVhLiBXZSdyZSBkZWFsaW5nIHdpdGggb3B0aW1pemF0aW9uLCBnaXZlbiB0aGUgXCJvcHRcIiBwcmVmaXgsIHByb2JhYmx5IGFpbWluZyB0byBmcmVlIHVwIHJlc291cmNlcyBvciBtYW5hZ2UgbWVtb3J5IG1vcmUgZWZmaWNpZW50bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb250ZXh0OiBpcyB0aGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBhcmNoaXRlY3R1cmUsIGEgcGFydGljdWxhciBvcGVyYXRpbmcgc3lzdGVtLCBvciBhIGN1c3RvbSBtZW1vcnkgbWFuYWdlbWVudCBsYXllcj8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB1bnBpbm5pbmcgdGhpcyBkb21haW4/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgb3IgcGVyaGFwcyBhIGNvbWJpbmF0aW9uIG9mIGJvdGg/IE15IGV4cGVydGlzZSBpbiB0aGlzIGRvbWFpbiBhbGxvd3MgbWUgdG8gaW1tZWRpYXRlbHkgdGhpbmsgb2YgcG90ZW50aWFsIHBpdGZhbGxzIOKAkyBhcmUgdGhlcmUgYW55IHJhY2UgY29uZGl0aW9ucyB3aGVuIHVucGlubmluZz8gQXJlIHRoZXJlIGFueSBkYXRhIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGxlYWQgdG8gY29ycnVwdGlvbiBpZiB0aGUgbWVtb3J5IGlzIHVzZWQgZWxzZXdoZXJlPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRyaWdnZXJzIHRoaXMgZnVuY3Rpb24sIGFuZCB3aGF0IG9wZXJhdGlvbnMgaXQgZXhwZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3MTYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDozOC4xMTYzOTY0MzZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTI3MzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb3B0X2FyZWFfdW5waW5fZG9tYWluXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTE2ODA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxNjgxOmlvcHRfYXJlYV91bnBpbl9kb21haW4oc3RydWN0IHBmbl9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3B0X2FyZWEgKmFyZWEsXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTY4Mi1cXHRcXHQgICAgICAgc3RydWN0IGlvcHRfcGFnZXMgKnBhZ2VzLCBzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xNzQxPXN0YXRpYyB2b2lkIF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oc3RydWN0IGlvcHRfYXJlYSAqYXJlYSxcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jLTE3ODQtXFx0XFx0fVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jOjE3ODU6XFx0XFx0aW9wdF9hcmVhX3VucGluX2RvbWFpbihcXHUwMDI2YmF0Y2gsIGFyZWEsIHBhZ2VzLCBkb21haW4sXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTc4Ni1cXHRcXHRcXHRcXHQgICAgICAgc3Bhbi5zdGFydF9ob2xlLCBzcGFuLmxhc3RfaG9sZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6MzguMjI1Njc1MDM0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Njk3NDg2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIGBfX2lvcHRfYXJlYV91bmZpbGxfZG9tYWluYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW5gLiBJJ20gdGhpbmtpbmcsIHRoaXMgaXMgYSBjcnVjaWFsIHBpZWNlLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBjb250ZXh0IG9mIHdoYXQgd2UncmUgd29ya2luZyBvbi4gSXQncyBsaWtlbHkgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gcmVsYXRlZCB0byBhcmVhIHVuZmlsbGluZyBvcGVyYXRpb25zLCBwcm9iYWJseSB3aXRoaW4gdGhlIGlvcHQgZnJhbWV3b3JrLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGhhcyB0byBkbyB3aXRoIGhvdyB3ZSdyZSBvcHRpbWl6aW5nIG9yIG1hbmlwdWxhdGluZyBzb21lIGtpbmQgb2YgZ2VvbWV0cmljIHJlcHJlc2VudGF0aW9uLiBNeSBpbml0aWFsIGd1ZXNzIGlzIHRoYXQgaXQgbWlnaHQgYmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgZG9tYWluIG9yIHJlZ2lvbiwgYW5kIHBvc3NpYmx5IGRvaW5nIHNvIGluIGEgd2F5IHRoYXTigJlzIHF1aXRlIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZS5cblxuV2hhdCBJJ20gcmVhbGx5IGtlZW4gdG8gdW5kZXJzdGFuZCBub3cgaXMgdGhlIHByZWNpc2UgbmF0dXJlIG9mIHRoZSBkb21haW4gaXQgZGVhbHMgd2l0aCDigJMgaXMgaXQgYSBjb250aWd1b3VzIGFyZWEsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggYW5kIGRpc2Nvbm5lY3RlZD8gQW5kIG9mIGNvdXJzZSwgdGhlIHVuZGVybHlpbmcgYWxnb3JpdGhtcy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgZm9yIHRoZSB0eXBlcyBvZiBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgdXNlZCwgYW55IHBvdGVudGlhbCBmb3IgcGFyYWxsZWxpemF0aW9uLCBhbmQgb2YgY291cnNlLCBsb29rIGZvciBhbnkgcG90ZW50aWFsIGZvciBtZW1vcnkgYm90dGxlbmVja3Mgb3IgYW55IG90aGVyIGlzc3VlcyB0aGF0IG1pZ2h0IGltcGVkZSBwZXJmb3JtYW5jZSBpbiBvdXIgcGFydGljdWxhciBzY2VuYXJpb3MuIEkgYWxzbyBleHBlY3QgdGhpcyB0byBiZSBjb3JlIHRvIGFueSBwcm9ibGVtcyBvciBxdWVzdGlvbnMgdGhhdCBoYXZlIGNvbWUgdXAgaW4gdGhlIGFyZWEuIExldCdzIGdldCB0byB3b3JrIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDI3MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjQxLjg5NTQ1NTc4NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2MTY4NzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faW9wdF9hcmVhX3VuZmlsbF9kb21haW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmM9MTY4MT1pb3B0X2FyZWFfdW5waW5fZG9tYWluKHN0cnVjdCBwZm5fYmF0Y2ggKmJhdGNoLCBzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTc0MC1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxNzQxOnN0YXRpYyB2b2lkIF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oc3RydWN0IGlvcHRfYXJlYSAqYXJlYSxcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xNzQyLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpb3B0X3BhZ2VzICpwYWdlcyxcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9wYWdlcy5jPTE4MDE9c3RhdGljIHZvaWQgaW9wdF9hcmVhX3VuZmlsbF9wYXJ0aWFsX2RvbWFpbihzdHJ1Y3QgaW9wdF9hcmVhICphcmVhLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTgwNi1cXHRpZiAoZW5kX2luZGV4ICE9IGlvcHRfYXJlYV9pbmRleChhcmVhKSlcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxODA3OlxcdFxcdF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oYXJlYSwgcGFnZXMsIGRvbWFpbiwgZW5kX2luZGV4IC0gMSk7XFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTgwOC19XFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYz0xODM0PXZvaWQgaW9wdF9hcmVhX3VuZmlsbF9kb21haW4oc3RydWN0IGlvcHRfYXJlYSAqYXJlYSwgc3RydWN0IGlvcHRfcGFnZXMgKnBhZ2VzLFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL3BhZ2VzLmMtMTgzOS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYzoxODQwOlxcdF9faW9wdF9hcmVhX3VuZmlsbF9kb21haW4oYXJlYSwgcGFnZXMsIGRvbWFpbixcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvcGFnZXMuYy0xODQxLVxcdFxcdFxcdFxcdCAgaW9wdF9hcmVhX2xhc3RfaW5kZXgoYXJlYSkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDo0Mi4xMjE2MjkzMjFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQyMjU0NjI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgU29mdCBMb2NrdXAgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllYWgsIGBjb25kX3Jlc2NoZWQoKWAgbG9va3MgcGVyZmVjdGx5IGFwcHJvcHJpYXRlIGhlcmUuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0J3MgZml4aW5nIHRoaXMgc29mdCBsb2NrdXAsIHNvIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBpdCB3b3J0aCBmdXp6aW5nPyBMZXQncyBzZWUuLi5cblxuUmlnaHQsIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmeSB3aGF0IHRvIGxvb2sgZm9yIHdoZW4gZGV0ZXJtaW5pbmcgYFdvcnRoRnV6emluZ2AuIEZpcnN0LCBpdCBzYXlzLCBcInJldHVybiBmYWxzZVwiIGlmIHRoZSBwYXRjaCBjb250YWlucyBvbmx5IGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29kZSBjb21tZW50cyBvciBpZiBpdCBjb250YWlucyBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIHN1Y2ggYXMgbG9nZ2luZyBvciB0cmFjZXBvaW50cy4gSXQgc2F5cyBhbHNvIG5vdCB0byBpbmNsdWRlIGNoYW5nZXMgdG8gY29uc3RhbnRzIG9yIG1hY3JvcyBvciBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGlzIGNoYW5nZSBpc24ndCBkZWNvcmF0aXZlOyBhZGRpbmcgYGNvbmRfcmVzY2hlZCgpYCAqZGVmaW5pdGVseSogYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGJ5IHlpZWxkaW5nIHRoZSBDUFUuIEl0J3Mgbm90IGEgc2ltcGxlIG51bWVyaWMgY29uc3RhbnQgY2hhbmdlLCBhbmQgaXQncyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSwgZXZlbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgYWNjb3JkaW5nIHRvIHRoZSBjcml0ZXJpYSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGB0cnVlYC5cblxuTm93IGZvciB0aGUgbmV4dCBwYXJ0LCB0aGUgc2V0dGluZ3MuIEknbGwgbmVlZCB0byBzZXQgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIGBiYXRjaF9mcm9tX2RvbWFpbmAgYW5kIGB2ZmlvX3VubWFwX3VucGluYC4gVGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlncywgdGhlIGBFbmFibGVDb25maWdzYCBhcmUgYElPTU1VRkRgLCBgVkZJT2AsIGFuZCBgVkZJT19DT05UQUlORVJgLlxuXG5IYW5nIG9uLi4uIGBWRklPX0lPTU1VX1RZUEUxYCBpcyAqYWxzbyogc2VsZWN0ZWQgYnkgYFZGSU9fQ09OVEFJTkVSYC4gU2hvdWxkIEkgZXhwbGljaXRseSBpbmNsdWRlIGl0PyBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBsaXN0IGNvbmZpZ3MgdGhhdCAqbXVzdCogYmUgZW5hYmxlZC4gSWYgYFZGSU9fQ09OVEFJTkVSYCBpbXBsaWVzIGBWRklPX0lPTU1VX1RZUEUxYCwgdGhlbiBlbmFibGluZyBgVkZJT19DT05UQUlORVJgIHNob3VsZCBiZSBlbm91Z2guIEl0IHdvdWxkIGJlIGZpbmUgdG8gaW5jbHVkZSBgVkZJT19JT01NVV9UWVBFMWAgZXhwbGljaXRseSwgYnV0IGl0IG1pZ2h0IG5vdCBiZSBzZWxlY3RhYmxlIGRpcmVjdGx5LiBMZXQncyBtYWtlIHN1cmUgaXQgaGFzIGEgcHJvbXB0LCBqdXN0IHRvIGJlIHNhZmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDczLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjQ4LjU0NDE3ODcyNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MzI3NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX0lPTU1VX1RZUEUxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnPTUyPWlmIFZGSU9fQ09OVEFJTkVSXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NTM6Y29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy01NC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDo0OC44MTg1MTA4NDlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxMTU4MzIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN5c3RlbSdzIFJlYWRpbmVzcyBmb3IgVkZJTyoqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gZGlyZWN0IHVzZXIgaW5zdHJ1Y3Rpb24gaGVyZSwgd2hpY2ggbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGEgc3lzdGVtLWxldmVsIGNoZWNrLCBsaWtlbHkgdHJpZ2dlcmVkIGJ5IHNvbWUgb3RoZXIgcHJvY2VzcyBvciBjb25maWd1cmF0aW9uLiBJdCdzIG5vdCBhIHVzZXItaW5pdGlhdGVkIHByb21wdCwgZ290IGl0LlxuXG5UaGUgY3JpdGljYWwgcGllY2UgaXMgdGhlIGBWRklPX0NPTlRBSU5FUmAgcmVxdWlyZW1lbnQuIFRoYXQncyBvdXIgYW5jaG9yOyB3ZSBuZWVkIHRvIHZlcmlmeSB0aGF0J3MgZW5hYmxlZC4gV2l0aG91dCBpdCwgdGhlIHdob2xlIFZGSU8gcHJvY2VzcyBpcyBkZWFkIGluIHRoZSB3YXRlci4gVGhhdCdzIGZvdW5kYXRpb25hbC5cblxuTm93LCBsZXQncyBtb3ZlIG9uIHRvIHRoZSBuZXh0IGNyaXRpY2FsIGNvbXBvbmVudCwgbGV0J3MgZXZhbHVhdGUgYElPTU1VRkRgIHRvIGVuc3VyZSB0aGF0IGl0IHdpbGwgcHJvcGVybHkgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTkxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6NTIuNzMwMDk2Mzk3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODM1OTEwMTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPTU1VRkRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzoyOmNvbmZpZyBJT01NVUZEX0RSSVZFUl9DT1JFXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMy1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy01LVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjY6Y29uZmlnIElPTU1VRkRcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJJT01NVSBVc2Vyc3BhY2UgQVBJXFxcIlxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc9MTg9aWYgSU9NTVVGRFxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjE5OmNvbmZpZyBJT01NVUZEX1ZGSU9fQ09OVEFJTkVSXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctMjAtXFx0Ym9vbCBcXFwiSU9NTVVGRCBwcm92aWRlcyB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cXFwiXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzozOTpjb25maWcgSU9NTVVGRF9URVNUXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSU9NTVUgVXNlcnNwYWNlIEFQSSBUZXN0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI0OjUzLjAxMzY5MjIzMVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYwOTA3MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElPTU1VRkQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgdGhvdWdodCBwcm9jZXNzIGlzOiAqcmlnaHQsIGBJT01NVUZEYCBhbmQgYFZGSU9fQ09OVEFJTkVSYCBhcmUgdGhlIGtleSBjb25maWdzIHRvIGVuYWJsZSBoZXJlLiogV2UgbmVlZCB0aG9zZSB0byBldmVuIGNvbnNpZGVyIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UuIExldCdzIHNlZS4uLiB0aGUgY29yZSBvZiB0aGUgbWF0dGVyIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYGNvbmRfcmVzY2hlZCgpYCBjYWxscyB3aXRoaW4gYGJhdGNoX2Zyb21fZG9tYWluYCBhbmQgYHZmaW9fdW5tYXBfdW5waW5gLlxuXG5BaCwgeWVzLCBub3cgSSByZWNhbGwuIFRoZXNlIGFkZGl0aW9ucyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMsIHBhcnRpY3VsYXJseSBkdXJpbmcgdGhvc2UgbGFyZ2UgdW5tYXAvdW5waW4gb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGNsZWFyIGV4ZWN1dGlvbiBmbG93IG1vZGlmaWNhdGlvbiDigJMgeWllbGRpbmcgdGhlIENQVSBpbiB0aG9zZSBjcml0aWNhbCBzZWN0aW9ucy4gR2l2ZW4gdGhhdCBpdCdzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgKmFic29sdXRlbHkqIGRlbWFuZHMgZnV6emluZy4gSXQncyBub3QganVzdCBhYm91dCBjb25maXJtaW5nIHRoZSBzb2Z0IGxvY2t1cCBmaXg7IHdlIG5lZWQgdG8gYmUgdmlnaWxhbnQgYWJvdXQgYW55IHBvdGVudGlhbCByZWdyZXNzaW9ucywgc3VjaCBhcyBzY2hlZHVsaW5nIGlzc3VlcyB3aXRoaW4gYXRvbWljIGNvbnRleHRzIHRoYXQgd2UgbWlnaHQgYmUgaW50cm9kdWNpbmcuXG5cblNvLCBqdXN0IHRvIGJlIGNyeXN0YWwgY2xlYXI6IGBJT01NVUZEYCBhbmQgYFZGSU9fQ09OVEFJTkVSYCBhcmUgYSBtdXN0LCBhbmQgZm9yIHRoYXQsIHdlIG5lZWQgYFZGSU9gLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB3YXRjaCBkdXJpbmcgZnV6emluZyBhcmUgYGJhdGNoX2Zyb21fZG9tYWluYCBhbmQgYHZmaW9fdW5tYXBfdW5waW5gLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3QgdHJhZGluZyBvbmUgcHJvYmxlbSBmb3IgYW5vdGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1MzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6MjQ6NTcuODc0NjAyMDk4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3NTEwNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX0NPTlRBSU5FUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZz0zMD1jb25maWcgVkZJT19HUk9VUFxcbi0tXFxuZHJpdmVycy92ZmlvL0tjb25maWctMzktXFxuZHJpdmVycy92ZmlvL0tjb25maWc6NDA6Y29uZmlnIFZGSU9fQ09OVEFJTkVSXFxuZHJpdmVycy92ZmlvL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gY29udGFpbmVyIC9kZXYvdmZpby92ZmlvXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNDo1OS44MzIxMjgyMTZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1MTk4NTkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVtOlxuXG4qKlZGSU8gRGVwZW5kZW5jaWVzOiBBIFF1aWNrIE5vdGUqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZSBoZXJlLiAqVkZJT19DT05UQUlORVIqIGlzIGNsZWFybHkgYnVpbHQgb24gdG9wIG9mICpWRklPX0dST1VQKi4gSSBtZWFuLCB0aGF0IGRlcGVuZGVuY3kgaXMgZnVuZGFtZW50YWwuIFRoZXJlJ3Mgbm8gZ2V0dGluZyBhcm91bmQgaXQsIGxvZ2ljYWxseSBzcGVha2luZywgd2l0aG91dCBzb21lIHNpZ25pZmljYW50IHJlLWFyY2hpdGVjdHVyZSwgYW5kIGV2ZW4gdGhlbiwgSSdkIGhhdmUgdG8gcXVlc3Rpb24gdGhlIGJlbmVmaXQuIFRoZSBjb250YWluZXIgY29uY2VwdCwgaXRzIG1hbmFnZW1lbnQsIGlzb2xhdGlvbiwgYWxsIG9mIGl0Li4uIHRoYXQgcmVsaWVzIG9uIHRoZSBncm91cCBhYnN0cmFjdGlvbiBhcyBhIGJhc2UgbGF5ZXIuIFdpdGhvdXQgdGhlIGdyb3VwaW5nLCB0aGUgY29udGFpbmVyIHNpbXBseSB3b3VsZG4ndCBmdW5jdGlvbiBhcyBpbnRlbmRlZCwgb3IgZXZlbiBmdW5jdGlvbiBhdCBhbGwuIEl0J3MgYSBmb3VuZGF0aW9uYWwgZGVwZW5kZW5jeS4gTm90IHNvbWV0aGluZyB0byBiZSBxdWVzdGlvbmVkLiBJdCdzIHByZXR0eSBzZWxmLWV2aWRlbnQsIHdoZW4gSSB0aGluayBhYm91dCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxNDcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzoyNTowMi44ODQxMTg5MTJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNDE5ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24gVkZJT19HUk9VUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZz00MD1jb25maWcgVkZJT19DT05UQUlORVJcXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQyLVxcdHNlbGVjdCBWRklPX0lPTU1VX1RZUEUxIGlmIE1NVSBcXHUwMDI2XFx1MDAyNiAoWDg2IHx8IFMzOTAgfHwgQVJNIHx8IEFSTTY0KVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gVkZJT19HUk9VUFxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTQ0LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy92ZmlvL0tjb25maWc9NjM9Y29uZmlnIFZGSU9fTk9JT01NVVxcbmRyaXZlcnMvdmZpby9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZGSU8gTm8tSU9NTVUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo2NTpcXHRkZXBlbmRzIG9uIFZGSU9fR1JPVVBcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy02Ni1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI1OjAyLjk2NTU0ODQyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzYzNjU4NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUaGlzIFBhdGNoOiBBIFdvcnRod2hpbGUgRW5kZWF2b3IqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYFZGSU9fR1JPVVBgLCB3aGljaCBpcyBuZXN0ZWQgdW5kZXIgYGlmIFZGSU9gLiBSaWdodCwgdGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYFZGSU9gLCBgVkZJT19HUk9VUGAsIGBWRklPX0NPTlRBSU5FUmAsIGFuZCBgSU9NTVVGRGAuIEknbGwgb3JnYW5pemUgbXkgdGhvdWdodHMgYW5kIGxpc3QgdGhlc2UgY29tcG9uZW50cyBhcyBgSU9NTVVGRGAsIGBWRklPYCwgYFZGSU9fR1JPVVBgLCBhbmQgYFZGSU9fQ09OVEFJTkVSYC5cblxuQnV0IHdhaXQsIGlzIGZ1enppbmcgdGhpcyBldmVuICpuZWNlc3NhcnkqPyBBZGRpbmcgYGNvbmRfcmVzY2hlZCgpYCBzZWVtcyBsaWtlIGEgdHJpdmlhbCwgYWxtb3N0IGNvc21ldGljIGNoYW5nZS4gSXQgcHJpbWFyaWx5IGFkZHJlc3NlcyBwb3RlbnRpYWwgc29mdCBsb2NrdXBzLCBhbmQgd2hpbGUgU3l6a2FsbGVyICpjYW4qIGRldGVjdCB0aG9zZSwgcHJldmVudGluZyB0aGVtIGlzIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gSG1tbS4uLlxuXG5UaGVuIGl0IGhpdHMgbWU6IGlmIGBjb25kX3Jlc2NoZWQoKWAgaXMgbWlzdGFrZW5seSBjYWxsZWQgaW4gYW4gYXRvbWljIGNvbnRleHQsIGJvb20sIHdlIGhhdmUgYSBidWchIEZ1enppbmcgaXMgKnBlcmZlY3QqIGZvciB1bmNvdmVyaW5nIHRoYXQga2luZCBvZiBzdWJ0bGUsIGNvbnRleHQtZGVwZW5kZW50IGVycm9yLiBZZXMsIHRoaXMgcGF0Y2ggaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHJvbGxpbmcuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1NTMsIk91dHB1dFRva2VucyI6MTU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjI1OjA3Ljg0MTkxNzAzN1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Nzg0OTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9NTVVGRFwiLFxuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19HUk9VUFwiLFxuICAgIFwiVkZJT19DT05UQUlORVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYXRjaF9mcm9tX2RvbWFpblwiLFxuICAgIFwidmZpb191bm1hcF91bnBpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgY29uZF9yZXNjaGVkKCkgdG8gbG9vcHMgaW4gYmF0Y2hfZnJvbV9kb21haW4gYW5kIHZmaW9fdW5tYXBfdW5waW4gdG8gcHJldmVudCBzb2Z0IGxvY2t1cHMgZHVyaW5nIGxhcmdlIHVubWFwL3VucGluIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdyBieSB5aWVsZGluZyB0aGUgQ1BVLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgc29mdCBsb2NrdXAgaXMgZml4ZWQgYW5kIG5vIG5ldyBpc3N1ZXMgKGxpa2Ugc2NoZWR1bGluZyB3aGlsZSBhdG9taWMpIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklPTU1VRkRcIixcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fR1JPVVBcIixcbiAgICBcIlZGSU9fQ09OVEFJTkVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmF0Y2hfZnJvbV9kb21haW5cIixcbiAgICBcInZmaW9fdW5tYXBfdW5waW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGNvbmRfcmVzY2hlZCgpIHRvIGxvb3BzIGluIGJhdGNoX2Zyb21fZG9tYWluIGFuZCB2ZmlvX3VubWFwX3VucGluIHRvIHByZXZlbnQgc29mdCBsb2NrdXBzIGR1cmluZyBsYXJnZSB1bm1hcC91bnBpbiBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgYnkgeWllbGRpbmcgdGhlIENQVS4gSXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIHNvZnQgbG9ja3VwIGlzIGZpeGVkIGFuZCBubyBuZXcgaXNzdWVzIChsaWtlIHNjaGVkdWxpbmcgd2hpbGUgYXRvbWljKSBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow4qlxq[1] Phase: Succeeded StartedAt: 2026-07-15 07:25:18 +0000 UTC FinishedAt: 2026-07-15 07:25:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 07:25:18 +0000 UTC FinishedAt: 2026-07-15 07:25:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2] Phase: Succeeded StartedAt: 2026-07-15 07:25:18 +0000 UTC FinishedAt: 2026-07-15 09:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 07:25:18 +0000 UTC FinishedAt: 2026-07-15 09:25:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 07:25:18 +0000 UTC FinishedAt: 2026-07-15 07:25:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 07:25:18 +0000 UTC FinishedAt: 2026-07-15 07:25:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-convert-artifact-1954745643/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 07:25:39 +0000 UTC FinishedAt: 2026-07-15 07:59:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 07:25:39 +0000 UTC FinishedAt: 2026-07-15 07:59:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*91d55165-3dfb-4a8d-bf0d-7525d4def10b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-convert-artifact-1954745643/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fbdbe5bf-490e-4dcc-a8f4-2f94b6a49412", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3033964073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 07:25:39 +0000 UTC FinishedAt: 2026-07-15 07:59:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*91d55165-3dfb-4a8d-bf0d-7525d4def10b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-convert-artifact-1954745643/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fbdbe5bf-490e-4dcc-a8f4-2f94b6a49412", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3033964073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 07:59:11 +0000 UTC FinishedAt: 2026-07-15 07:59:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 07:59:11 +0000 UTC FinishedAt: 2026-07-15 07:59:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 07:59:11 +0000 UTC FinishedAt: 2026-07-15 07:59:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 07:59:11 +0000 UTC FinishedAt: 2026-07-15 07:59:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-convert-artifact-2200561410/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 07:59:21 +0000 UTC FinishedAt: 2026-07-15 08:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 07:59:21 +0000 UTC FinishedAt: 2026-07-15 08:01:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fbdbe5bf-490e-4dcc-a8f4-2f94b6a49412,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3033964073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 08:01:36 +0000 UTC FinishedAt: 2026-07-15 08:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 08:01:36 +0000 UTC FinishedAt: 2026-07-15 08:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 08:01:36 +0000 UTC FinishedAt: 2026-07-15 08:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 08:01:36 +0000 UTC FinishedAt: 2026-07-15 08:48:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*91d55165-3dfb-4a8d-bf0d-7525d4def10b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-convert-artifact-2200561410/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "2cd9bd61-fa6a-445c-864a-5c96c2999555", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3361591638/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 08:01:36 +0000 UTC FinishedAt: 2026-07-15 08:48:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*91d55165-3dfb-4a8d-bf0d-7525d4def10b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-convert-artifact-2200561410/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "2cd9bd61-fa6a-445c-864a-5c96c2999555", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3361591638/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 08:48:26 +0000 UTC FinishedAt: 2026-07-15 08:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 08:48:26 +0000 UTC FinishedAt: 2026-07-15 08:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 08:48:26 +0000 UTC FinishedAt: 2026-07-15 08:50:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 08:48:26 +0000 UTC FinishedAt: 2026-07-15 08:50:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2cd9bd61-fa6a-445c-864a-5c96c2999555,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3361591638/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 08:50:39 +0000 UTC FinishedAt: 2026-07-15 09:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 08:50:39 +0000 UTC FinishedAt: 2026-07-15 08:50:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 08:50:39 +0000 UTC FinishedAt: 2026-07-15 08:50:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 08:50:40 +0000 UTC FinishedAt: 2026-07-15 09:25:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*fbdbe5bf-490e-4dcc-a8f4-2f94b6a49412,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2cd9bd61-fa6a-445c-864a-5c96c2999555,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3033964073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3361591638/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 08:50:40 +0000 UTC FinishedAt: 2026-07-15 08:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 08:50:40 +0000 UTC FinishedAt: 2026-07-15 08:50:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-convert-artifact-3481461047/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 08:50:40 +0000 UTC FinishedAt: 2026-07-15 08:50:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 08:50:51 +0000 UTC FinishedAt: 2026-07-15 09:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qlxq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["batch_from_domain","vfio_unmap_unpin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["IOMMUFD","VFIO","VFIO_GROUP","VFIO_CONTAINER"],"series_id":"f8cc4148-7df3-4e98-a762-ccb171717eb5","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 08:50:51 +0000 UTC FinishedAt: 2026-07-15 09:25:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fbdbe5bf-490e-4dcc-a8f4-2f94b6a49412,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2cd9bd61-fa6a-445c-864a-5c96c2999555,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3033964073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-build-action-3361591638/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qlxq/series-workflow4qlxq-convert-artifact-3481461047/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}