Name: series-workflow8tcsd Phase: Succeeded StartedAt: 2026-09-15 14:03:39 +0000 UTC FinishedAt: 2026-09-15 18:34:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[0] Phase: Succeeded StartedAt: 2026-09-15 14:03:39 +0000 UTC FinishedAt: 2026-09-15 14:49:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 14:03:39 +0000 UTC FinishedAt: 2026-09-15 14:49:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "14d6074f52d3af2b27565e6957b92dceeb8b00da", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_VIRTIO_GPU", "EVENTFD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "14d6074f52d3af2b27565e6957b92dceeb8b00da", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_VIRTIO_GPU", "EVENTFD" ], "series_id": "75e7a1fd-118b-49fe-a70b-ada051e28d79" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "drm_syncobj_eventfd_ioctl", "eventfd_ctx_put" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "", "base_commit": "14d6074f52d3af2b27565e6957b92dceeb8b00da", "base_tree": "drm-next" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUk0mIzM0OywKICAgICYjMzQ7RFJNX1ZJUlRJT19HUFUmIzM0OywKICAgICYjMzQ7RVZFTlRGRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9jdHhfcHV0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxuXG5UaGVzZSBjaGFuZ2VzIGNvbmNlcm4gcG9pbnRlciBsaWZldGltZSBhbmQgcmVzb3VyY2UgZGVhbGxvY2F0aW9uLiBUaGUgbG9jYWwgcG9pbnRlciBgZXZfZmRfY3R4YCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBOVUxMYCwgYW5kIHRoZSBoZWFwIGFsbG9jYXRpb24gYGVudHJ5YCBjb250aW51ZXMgdG8gYmUgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iaigpYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgYnl0ZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIGFsdGVyZWQuIEFueSBwb3RlbnRpYWwgYnVncyB3b3VsZCByZWxhdGUgdG8gcmVmZXJlbmNlIGNvdW50aW5nLCByZXNvdXJjZSBsZWFrcywgb3IgcG9pbnRlciBjbGVhbnVwLCB3aGljaCBmYWxsIHVuZGVyIHN0YW5kYXJkIEtBU0FOL3JlZmNvdW50IHRyYWNraW5nIHJhdGhlciB0aGFuIEtNU0FOIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGRldGVjdGlvbi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM1ZGY0M2JlM2ViYzIxZGU0ODljNTU5OWNjYTgzYmZiYjRjZDg3OGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNDoyMzowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5pbmRleCBjMjNhNWRlMjdlZmZhLi5lZmM0ZThhZjIyMGM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5AQCAtMTQ2Miw5ICYjNDM7MTQ2Miw5IEBAIGludFxuIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbiBcdFx0XHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ5MCwxMCAmIzQzOzE0OTAsMTAgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuIFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuIFx0aWYgKCFlbnRyeSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9remFsbG9jO1xuJiM0MztcdFx0Z290byBlcnJfZmRnZXQ7XG4gXHR9XG4gXHRlbnRyeS1cdTAwM2VzeW5jb2JqID0gc3luY29iajtcbi1cdGVudHJ5LVx1MDAzZWV2X2ZkX2N0eCA9IGV2X2ZkX2N0eDtcbiYjNDM7XHRlbnRyeS1cdTAwM2Vldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpO1xuIFx0ZW50cnktXHUwMDNlcG9pbnQgPSBhcmdzLVx1MDAzZXBvaW50O1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgPSBhcmdzLVx1MDAzZWZsYWdzO1xuIFxuQEAgLTE1MDIsOCAmIzQzOzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfa3phbGxvYzpcbi1cdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xuIGVycl9mZGdldDpcbiBcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4xY2QxNzQxYjgxYjE3IDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9ldmVudGZkLmNcbkBAIC0xMDIsNiAmIzQzOzEwMiw5IEBAIHN0YXRpYyB2b2lkIGV2ZW50ZmRfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcbiAgKi9cbiB2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbiB7XG4mIzQzO1x0aWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0a3JlZl9wdXQoXHUwMDI2Y3R4LVx1MDAzZWtyZWYsIGV2ZW50ZmRfZnJlZSk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuaW5kZXggZTMyYmVlNDM0NWZiOS4uNjg5MzU4YzJiMGFlNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuQEAgLTEwLDYgJiM0MzsxMCw3IEBAXG4gI2RlZmluZSBfTElOVVhfRVZFTlRGRF9IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG5AQCAtODksNSAmIzQzOzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIFx0ZXZlbnRmZF9zaWduYWxfbWFzayhjdHgsIDApO1xuIH1cbiBcbiYjNDM7REVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXG4mIzQzO1xuICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MjM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fVklSVElPX0dQVSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM1ZGY0M2JlM2ViYzIxZGU0ODljNTU5OWNjYTgzYmZiYjRjZDg3OGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAxNDoyMzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKaW5kZXggYzIzYTVkZTI3ZWZmYS4uZWZjNGU4YWYyMjBjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKQEAgLTE0NjIsOSAmIzQzOzE0NjIsOSBAQCBpbnQKIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCiB7CiYjNDM7CXN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7CiAJc3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajsKLQlzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eDsKIAlzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTsKIAlpbnQgcmV0OwogCkBAIC0xNDkwLDEwICYjNDM7MTQ5MCwxMCBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpOwogCWlmICghZW50cnkpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBlcnJfa3phbGxvYzsKJiM0MzsJCWdvdG8gZXJyX2ZkZ2V0OwogCX0KIAllbnRyeS0mZ3Q7c3luY29iaiA9IHN5bmNvYmo7Ci0JZW50cnktJmd0O2V2X2ZkX2N0eCA9IGV2X2ZkX2N0eDsKJiM0MzsJZW50cnktJmd0O2V2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7CiAJZW50cnktJmd0O3BvaW50ID0gYXJncy0mZ3Q7cG9pbnQ7CiAJZW50cnktJmd0O2ZsYWdzID0gYXJncy0mZ3Q7ZmxhZ3M7CiAKQEAgLTE1MDIsOCAmIzQzOzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlyZXR1cm4gMDsKIAotZXJyX2t6YWxsb2M6Ci0JZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7CiBlcnJfZmRnZXQ6CiAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmMKaW5kZXggOWQzM2EwMjc1N2Q1Mi4uMWNkMTc0MWI4MWIxNyAxMDA2NDQKLS0tIGEvZnMvZXZlbnRmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuYwpAQCAtMTAyLDYgJiM0MzsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAgKi8KIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogewomIzQzOwlpZiAoSVNfRVJSX09SX05VTEwoY3R4KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlrcmVmX3B1dCgmYW1wO2N0eC0mZ3Q7a3JlZiwgZXZlbnRmZF9mcmVlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCmluZGV4IGUzMmJlZTQzNDVmYjkuLjY4OTM1OGMyYjBhZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2RlZmluZSBfTElOVVhfRVZFTlRGRF9ICiAKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NsZWFudXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUtZGVmcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwpAQCAtODksNSAmIzQzOzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogCWV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTsKIH0KIAomIzQzO0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKQomIzQzOwogI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTkyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGlzIFBhdGNoIGZvciBFdmVudGZkIGFuZCBEUk0gU3luY29ianMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhpcyBwYXRjaCwgc3RhcnRpbmcgd2l0aCBhIGdyYW51bGFyIGxvb2sgYXQgdGhlIGNvZGUgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBtb2RpZmljYXRpb25zLCBwYXJ0aWN1bGFybHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBEUk0gc3luY29iaiBzdWJzeXN0ZW0sIGdpdmVuIG15IGV4cGVydGlzZS4KCkZpcnN0LCB0aGUgcGF0Y2ggYWx0ZXJzIHRocmVlIGZpbGVzLiBJdCBsb29rcyBsaWtlOgoKMS4gIEluIGBmcy9ldmVudGZkLmNgLCB0aGVyZSYjMzk7cyBhIHNhZmV0eSBjaGVjayBiZWluZyBhZGRlZCB0byBgZXZlbnRmZF9jdHhfcHV0YDogYGlmIChJU19FUlJfT1JfTlVMTChjdHgpKSByZXR1cm47YC4gVGhpcyBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIHBvc3NpYmxlIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBwcm90ZWN0aW9uLiBJbXBvcnRhbnQsIGJ1dCBzdHJhaWdodGZvcndhcmQuCgoyLiAgYGluY2x1ZGUvbGludXgvZXZlbnRmZC5oYCBpcyBnZXR0aW5nIGEgY2hhbmdlIHRvIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGZvciBgZXZlbnRmZGAsIHNwZWNpZmljYWxseSBhZGRpbmcgYGV2ZW50ZmRfY3R4X3B1dChfVClgLiBUaGlzIG1lYW5zIHRoZSBtYWNybyBpcyBub3cgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIGBldmVudGZkX2N0eGAuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSB0aGUgbWFjcm8gaXMgYSBjcnVjaWFsIHBhcnQgb2Yga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50LgoKMy4gIEZpbmFsbHksIGFuZCBwZXJoYXBzIHRoZSBtb3N0IGludGVyZXN0aW5nIHBpZWNlLCBpcyB0aGUgY2hhbmdlIHdpdGhpbiBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgLiBUaGUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGZ1bmN0aW9uIGlzIHRoZSBjb3JlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIEhlcmUsIHRoZSBwYXRjaCBtb2RpZmllcyBob3cgYHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4YCBpcyBoYW5kbGVkLiBJdCBzZWVtcyB0aGUgY29kZSBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgYXR0cmlidXRlIGFuZCBhICBgbm9fZnJlZV9wdHJgIGZ1bmN0aW9uIGNhbGwuIEFkZGl0aW9uYWxseSwgdGhlIG9sZCBgZXJyX2t6YWxsb2NgIGxhYmVsIGFuZCBjb3JyZXNwb25kaW5nIGBldmVudGZkX2N0eF9wdXRgIGNhbGwgaGF2ZSBiZWVuIHJlbW92ZWQuIFRoaXMgaW1wbGllcyBhIGNoYW5nZSBpbiBob3cgYGV2ZW50ZmRfY3R4YCBpcyBtYW5hZ2VkIGFuZCByZWxlYXNlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgRFJNIHN5bmNvYmouIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRyb2wgZmxvdyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gY29uZmlybSB0aGUgZGV0YWlscy4KSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBmdW5jdGlvbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlIGNvbnRleHQsIHRoaXMgY2hhbmdlIHRvIHNlZSB3aGF0JiMzOTtzIHJlYWxseSBnb2luZyBvbi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSByYXRpb25hbGUgZm9yIHRoZSBjaGFuZ2UgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCByZWdyZXNzaW9uIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDYwOlx0XG4xNDYxOlx0aW50XG4xNDYyOlx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuMTQ2MzpcdFx0XHRcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNDY0Olx0e1xuMTQ2NTpcdFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtcbjE0NjY6XHRcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcbjE0Njc6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbjE0Njg6XHRcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5O1xuMTQ2OTpcdFx0aW50IHJldDtcbjE0NzA6XHRcbjE0NzE6XHRcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbjE0NzI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuMTQ3MzpcdFxuMTQ3NDpcdFx0aWYgKGFyZ3MtXHUwMDNlZmxhZ3MgXHUwMDI2IH5EUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQVZBSUxBQkxFKVxuMTQ3NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0NzY6XHRcbjE0Nzc6XHRcdGlmIChhcmdzLVx1MDAzZXBhZClcbjE0Nzg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDc5Olx0XG4xNDgwOlx0XHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXHUwMDNlaGFuZGxlKTtcbjE0ODE6XHRcdGlmICghc3luY29iailcbjE0ODI6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4xNDgzOlx0XG4xNDg0Olx0XHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbjE0ODU6XHRcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuMTQ4NjpcdFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4xNDg3Olx0XHRcdGdvdG8gZXJyX2ZkZ2V0O1xuMTQ4ODpcdFx0fVxuMTQ4OTpcdFxuMTQ5MDpcdFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuMTQ5MTpcdFx0aWYgKCFlbnRyeSkge1xuMTQ5MjpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTQ5MzpcdFx0XHRnb3RvIGVycl9mZGdldDtcbjE0OTQ6XHRcdH1cbjE0OTU6XHRcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuMTQ5NjpcdFx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbjE0OTc6XHRcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbjE0OTg6XHRcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbjE0OTk6XHRcbjE1MDA6XHRcdGRybV9zeW5jb2JqX2FkZF9ldmVudGZkKHN5bmNvYmosIGVudHJ5KTtcbjE1MDE6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDI6XHRcbjE1MDM6XHRcdHJldHVybiAwO1xuMTUwNDpcdFxuMTUwNTpcdGVycl9mZGdldDpcbjE1MDY6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDc6XHRcdHJldHVybiByZXQ7XG4xNTA4Olx0fVxuMTUwOTpcdFxuMTUxMDpcdGludFxuMTUxMTpcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4xNTEyOlx0XHRcdFx0c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNTEzOlx0e1xuMTUxNDpcdFx0c3RydWN0IGRybV9zeW5jb2JqX2FycmF5ICphcmdzID0gZGF0YTtcbjE1MTU6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzO1xuMTUxNjpcdFx0dWludDMyX3QgaTtcbjE1MTc6XHRcdGludCByZXQ7XG4xNTE4Olx0XG4xNTE5Olx0XHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE4MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIGBmcy9ldmVudGZkLmNgKioKCk9rYXksIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGggZXZlbnRmZCwgc28gbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIGBmcy9ldmVudGZkLmNgIGZpbGUuIEkmIzM5O2xsIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSAxMDAuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCYjMzk7cyBhcmNoaXRlY3R1cmUuIEhvcGVmdWxseSwgdGhlIGNvZGUgdGhlcmUgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHNwZWNpZmljIGJlaGF2aW9yIEkmIzM5O20gY3VyaW91cyBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V2ZW50ZmQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTU6XHRcbiAgOTY6XHQvKipcbiAgOTc6XHQgKiBldmVudGZkX2N0eF9wdXQgLSBSZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxuICA5ODpcdCAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXG4gIDk5Olx0ICpcbiAxMDA6XHQgKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxuIDEwMTpcdCAqIHdpdGggZXZlbnRmZF9jdHhfZmRnZXQoKSBvciBldmVudGZkX2N0eF9maWxlZ2V0KCkuXG4gMTAyOlx0ICovXG4gMTAzOlx0dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gMTA0Olx0e1xuIDEwNTpcdFx0aWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpXG4gMTA2Olx0XHRcdHJldHVybjtcbiAxMDc6XHRcbiAxMDg6XHRcdGtyZWZfcHV0KFx1MDAyNmN0eC1cdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xuIDEwOTpcdH1cbiAxMTA6XHRFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xuIDExMTpcdFxuIDExMjpcdHN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIDExMzpcdHtcbiAxMTQ6XHRcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG4gMTE1Olx0XG4gMTE2Olx0XHR3YWtlX3VwX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExIVVApO1xuIDExNzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG4gMTE4Olx0XHRyZXR1cm4gMDtcbiAxMTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGFiaWxpdHkgQW5hbHlzaXM6IERSTSBTeW5jb2JqIGluIFFFTVUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHJlYWNoYWJpbGl0eSBxdWVzdGlvbi4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIHdoZXRoZXIgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGlzIGFjdHVhbGx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBRRU1VIGVudmlyb25tZW50LiBJdCBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZSwgY29uc2lkZXJpbmcgUUVNVSBzdXBwb3J0cyB2YXJpb3VzIERSTSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgdGhpbmdzIGxpa2UgdmdlbSwgdmlydGlvLWdwdSwgYW5kIHZrbXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgcmVnaXN0cmF0aW9uLiBJIG5lZWQgdG8gaWRlbnRpZnkgd2hpY2ggY29tcG9uZW50cyBhcmUgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIGVpdGhlciBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgIG9yLCBtb3JlIGRpcmVjdGx5LCBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXRzZWxmLiBLbm93aW5nIHRoZSByZWdpc3RyYXRpb24gcG9pbnQgd2lsbCBpbGx1bWluYXRlIHRoZSBleGVjdXRpb24gcGF0aC4gVGltZSB0byBmaXJlIHVwIHRoZSBncmVwcGluZyB0b29scyBhbmQgaHVudCBmb3IgdGhvc2Uga2V5d29yZHM6IGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBhbmQgYERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FYC4gVGhhdCBzaG91bGQgbGVhZCBtZSB0byB0aGUgcmVsZXZhbnQgZHJpdmVycyBvciBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oPTI3Nj1pbnQgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI3Ny1cdFx0XHRcdCAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjc4OmludCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc5LVx0XHRcdCAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM9NjQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgZHJtX2lvY3Rsc1tdID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzEtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczMjpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRCwgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzMtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTE0NjE9aW50XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNDYyOmRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE0NjMtXHRcdFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDM1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gRFJNIFN5bmNocm9uaXphdGlvbiBPYmplY3RzIGFuZCBFdmVudEZEKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRGAuIFRoaXMgaXMgYW4gaW9jdGwgY2FsbCB0aGF0IG9wZXJhdGVzIG9uIHRoZSBgL2Rldi9kcmkvY2FyZCpgIG9yIGAvZGV2L2RyaS9yZW5kZXJEKmAgZGV2aWNlcy4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBTeXprYWxsZXIsIHRoYXQgZnV6emluZyBiZWFzdCwgKmRpcmVjdGx5KiBzdXBwb3J0cyBgZHJtX3N5bmNvYmpgIGFuZCB0aGlzIHNwZWNpZmljIGBEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEYCBjYWxsLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb247IFN5emthbGxlciYjMzk7cyBjb3ZlcmFnZSB1c3VhbGx5IGhpZ2hsaWdodHMgYXJlYXMgb2YgcG90ZW50aWFsIGNvbXBsZXhpdHkgb3IgdnVsbmVyYWJpbGl0eS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIGBEUklWRVJfU1lOQ09CSl9USU1FTElORWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcnMgYWN0dWFsbHkgKnVzZSogdGhpcyBjYXBhYmlsaXR5LiBJZGVudGlmeWluZyB3aGljaCBkcml2ZXJzIGhhdmUgZW5hYmxlZCB0aGF0IHNwZWNpZmljIGZlYXR1cmUgd2lsbCBoZWxwIG1lIG5hcnJvdyBkb3duIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxlbWVudGF0aW9uIHN0cmF0ZWdpZXMgaW4gdXNlLiBLbm93aW5nIHRoZSBkcml2ZXJzIGludm9sdmVkIHdpbGwgYWxsb3cgbWUgdG8gdGFyZ2V0IG15IGFuYWx5c2lzIG1vcmUgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RSSVZFUl9TWU5DT0JKX1RJTUVMSU5FJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYz0zMjk9Y29uc3Qgc3RydWN0IGRybV9kcml2ZXIgYW1keGRuYV9kcm1fZHJ2ID0ge1xuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jLTMzMC1cdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfR0VNIHwgRFJJVkVSX0NPTVBVVEVfQUNDRUwgfFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jOjMzMTpcdFx0RFJJVkVSX1NZTkNPQkogfCBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy0zMzItXHQuZm9wcyA9IFx1MDAyNmFtZHhkbmFfZm9wcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmM9MzExMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgYW1kZ3B1X2ttc19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jLTMxMTQtXHQgICAgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX1NZTkNPQkogfFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jOjMxMTU6XHQgICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMtMzExNi1cdC5vcGVuID0gYW1kZ3B1X2RyaXZlcl9vcGVuX2ttcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmM9MzEzOD1jb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBhbWRncHVfcGFydGl0aW9uX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMtMzE0MC1cdCAgICBEUklWRVJfR0VNIHwgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9TWU5DT0JKIHxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYzozMTQxOlx0ICAgIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jLTMxNDItXHQub3BlbiA9IGFtZGdwdV9kcml2ZXJfb3Blbl9rbXMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jPTIzND1zdGF0aWMgaW50IGRybV9nZXRjYXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTI1Mi1cdGNhc2UgRFJNX0NBUF9TWU5DT0JKX1RJTUVMSU5FOlxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjI1MzpcdFx0cmVxLVx1MDAzZXZhbHVlID0gZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy0yNTQtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTk4ND1kcm1fc3luY29ial90cmFuc2Zlcl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTk4OS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjk5MDpcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTk5MS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTEzNjY9ZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTEzNzQtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxMzc1Olx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTM3Ni1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTE0NjI9ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE0NzAtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNDcxOlx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTQ3Mi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTE1ODA9ZHJtX3N5bmNvYmpfdGltZWxpbmVfc2lnbmFsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTU4OS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjE1OTA6XHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNTkxLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MTY1Mj1pbnQgZHJtX3N5bmNvYmpfcXVlcnlfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNjYwLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MTY2MTpcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE2NjItXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RyaXZlci5jPTE3Njc9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIGk5MTVfZHJtX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RyaXZlci5jLTE3NzAtXHQgICAgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0FUT01JQyB8IERSSVZFUl9TWU5DT0JKIHxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJpdmVyLmM6MTc3MTpcdCAgICBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJpdmVyLmMtMTc3Mi1cdC5yZWxlYXNlID0gaTkxNV9kcml2ZXJfcmVsZWFzZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX2Rydi5jPTEzODE9c3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHB2cl9kcm1fZHJpdmVyID0ge1xuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYy0xMzgyLVx0LmRyaXZlcl9mZWF0dXJlcyA9IERSSVZFUl9HRU0gfCBEUklWRVJfUkVOREVSIHxcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfZHJ2LmM6MTM4MzpcdFx0XHQgICBEUklWRVJfU1lOQ09CSiB8IERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FLFxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYy0xMzg0LVx0Lm9wZW4gPSBwdnJfZHJtX2RyaXZlcl9vcGVuLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jPTgyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jLTgzNi1cdFx0RFJJVkVSX1NZTkNPQkogfCBcXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmM6ODM3Olx0XHREUklWRVJfU1lOQ09CSl9USU1FTElORSB8IFxcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYy04MzgtXHRcdDAgKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYz0xMD1tc21fc3luY29ial9wYXJzZV9kZXBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTM3LVx0XHRpZiAoc3luY29ial9kZXNjLnBvaW50IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jOjM4Olx0XHQgICAgIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpIHtcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYy0zOS1cdFx0XHRyZXQgPSBVRVJSKEVPUE5PVFNVUFAsIGRldiwgXCYjMzQ7c3luY29iaiB0aW1lbGluZSB1bnN1cHBvcnRlZFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jPTg2PW1zbV9zeW5jb2JqX3BhcnNlX3Bvc3RfZGVwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYy0xMjAtXHRcdFx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldixcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYzoxMjE6XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSkge1xuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTEyMi1cdFx0XHRcdHJldCA9IFVFUlIoRU9QTk9UU1VQUCwgZGV2LCBcJiMzNDtzeW5jb2JqIHRpbWVsaW5lIHVuc3VwcG9ydGVkXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTE0MDE9ZHJpdmVyX2xlZ2FjeV9rbXMgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYy0xNDAzLVx0XHRcdCB8IERSSVZFUl9TWU5DT0JKXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jOjE0MDQ6XHRcdFx0IHwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQwNS1cdFx0XHQgfCBEUklWRVJfTU9ERVNFVFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM9MTQxMT1kcml2ZXJfYXRvbWljX2ttcyA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTE0MTMtXHRcdFx0IHwgRFJJVkVSX1NZTkNPQkpcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM6MTQxNDpcdFx0XHQgfCBEUklWRVJfU1lOQ09CSl9USU1FTElORVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYy0xNDE1LVx0XHRcdCB8IERSSVZFUl9NT0RFU0VUXG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kcnYuYz0xNzkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBwYW50aG9yX2RybV9kcml2ZXIgPSB7XG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2Rydi5jLTE3OTQtXHQuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9HRU0gfCBEUklWRVJfU1lOQ09CSiB8XG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2Rydi5jOjE3OTU6XHRcdFx0ICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2Rydi5jLTE3OTYtXHQub3BlbiA9IHBhbnRob3Jfb3Blbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmM9MzI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jLTMzMy1cdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfCBEUklWRVJfUkVOREVSIHwgRFJJVkVSX0FUT01JQyB8XG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmM6MzM0Olx0XHRcdCAgIERSSVZFUl9TWU5DT0JKIHwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUgfCBEUklWRVJfQ1VSU09SX0hPVFNQT1QsXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmMtMzM1LVx0Lm9wZW4gPSB2aXJ0aW9fZ3B1X2RyaXZlcl9vcGVuLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz0zOTY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIHJlZ3VsYXJfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy00MDAtXHQgICAgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9TWU5DT0JKIHxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo0MDE6XHQgICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNDAyLVx0Lm9wZW4gPSB4ZV9maWxlX29wZW4sXG4tLVxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oPTU4PWVudW0gZHJtX2RyaXZlcl9mZWF0dXJlIHtcbi0tXG5pbmNsdWRlL2RybS9kcm1fZHJ2LmgtOTYtXHQvKipcbmluY2x1ZGUvZHJtL2RybV9kcnYuaDo5NzpcdCAqIEBEUklWRVJfU1lOQ09CSl9USU1FTElORTpcbmluY2x1ZGUvZHJtL2RybV9kcnYuaC05OC1cdCAqXG4tLVxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oLTEwMS1cdCAqL1xuaW5jbHVkZS9kcm0vZHJtX2Rydi5oOjEwMjpcdERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FICAgICAgICAgPSBCSVQoNiksXG5pbmNsdWRlL2RybS9kcm1fZHJ2LmgtMTAzLVx0LyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2ODIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBFdmVudGZkIGFuZCBpdHMgSW50ZXJhY3Rpb24gd2l0aCBWaXJ0aW8tR1BVKioKCk9rYXksIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEkmIzM5O3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGluIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9kcnYuY2AsIHRoYXQgaGFzIHRoZSBgRFJJVkVSX1NZTkNPQkogfCBEUklWRVJfU1lOQ09CSl9USU1FTElORWAgZmxhZyBzZXQuIFJpZ2h0LCBWaXJ0aW8tR1BVIOKAkyB0aGF0JiMzOTtzIGEga2V5IHZpcnR1YWwgZGV2aWNlIGluIFFFTVUsIHNvIHRoYXTigJlzIGRpcmVjdGx5IHJlbGV2YW50IHRvIG15IGFyZWEgb2YgZXhwZXJ0aXNlLiBBbmQgdGhlbiBJIHNlZSBgZXZlbnRmZF9jdHhfcHV0YCBtZW50aW9uZWQuIE5vdywgYGV2ZW50ZmQuY2AgaXMgY29yZSBWRlMsIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBgZXZlbnRmZGAgc3Vic3lzdGVtIGxpdmVzLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY2FsbGluZyBgZXZlbnRmZF9jdHhfcHV0YC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWxhdGVkIHRvIFZpcnRpby1HUFUgbWVhbnMgaXQgY291bGQgYmUgcmVhbGx5IGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMuIFNvLCBsZXQmIzM5O3MgZmluZCBvdXQuIFRpbWUgdG8gZmlyZSB1cCB0aGUgZ3JlcCBhbmQgZ2V0IGEgbGlzdCBvZiBhbGwgY2FsbCBzaXRlcyBmb3IgYGV2ZW50ZmRfY3R4X3B1dGAuIEdvdHRhIHRyYWNlIGRvd24gdGhlIGV4ZWN1dGlvbiBwYXRoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2ZW50ZmRfY3R4X3B1dCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MjcyNT12b2lkIGt2bV9odl9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjczMS1cdGlkcl9mb3JfZWFjaF9lbnRyeShcdTAwMjZodi1cdTAwM2Vjb25uX3RvX2V2dCwgZXZlbnRmZCwgaSlcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNzMyOlx0XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjczMy1cdGlkcl9kZXN0cm95KFx1MDAyNmh2LVx1MDAzZWNvbm5fdG9fZXZ0KTtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MjczNj1zdGF0aWMgaW50IGt2bV9odl9ldmVudGZkX2Fzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBjb25uX2lkLCBpbnQgZmQpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NTUtXHRcdHJldCA9IC1FRVhJU1Q7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Mjc1NjpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzU3LVx0cmV0dXJuIHJldDtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9Mjc2MD1zdGF0aWMgaW50IGt2bV9odl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGNvbm5faWQpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NzItXHRzeW5jaHJvbml6ZV9zcmN1KFx1MDAyNmt2bS1cdTAwM2VzcmN1KTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNzczOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NzQtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjEzND1zdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0yMTk5LVx0aWYgKGV2ZW50ZmQpXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjIwMDpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTIyMDEtb3V0X25vZXZlbnRmZDpcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjIwNj1zdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBwb3J0KVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0yMjE4LVx0aWYgKCFldnRjaG5mZC1cdTAwM2VkZWxpdmVyLnBvcnQucG9ydClcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjE5Olx0XHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMjIyMC1cdGtmcmVlKGV2dGNobmZkKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjIyND1zdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNTctXHRcdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjI1ODpcdFx0XHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI1OS1cdFx0a2ZyZWUoZXZ0Y2huZmQpO1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0yMzU2PXZvaWQga3ZtX3hlbl9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjM2NC1cdFx0aWYgKCFldnRjaG5mZC1cdTAwM2VkZWxpdmVyLnBvcnQucG9ydClcbmFyY2gveDg2L2t2bS94ZW4uYzoyMzY1Olx0XHRcdGV2ZW50ZmRfY3R4X3B1dChldnRjaG5mZC1cdTAwM2VkZWxpdmVyLmV2ZW50ZmQuY3R4KTtcbmFyY2gveDg2L2t2bS94ZW4uYy0yMzY2LVx0XHRrZnJlZShldnRjaG5mZCk7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYz00NjA9c3RhdGljIHZvaWQgaHByaXZfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmMtNTM2LVx0aWYgKGhwcml2LVx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjUzNzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGhwcml2LVx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy01MzgtXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmM9NzkzPXN0YXRpYyBpbnQgZXZlbnRmZF91bnJlZ2lzdGVyKHN0cnVjdCBobF9mcHJpdiAqaHByaXYsIHN0cnVjdCBobF9pbmZvX2FyZ3MgKmFyZ3MpXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmMtODAwLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmM6ODAxOlx0ZXZlbnRmZF9jdHhfcHV0KGhwcml2LVx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmMtODAyLVx0aHByaXYtXHUwMDNlbm90aWZpZXJfZXZlbnQuZXZlbnRmZCA9IE5VTEw7XG4tLVxuZHJpdmVycy9mcGdhL2RmbC5jPTE4Njk9c3RhdGljIGludCBkb19zZXRfaXJxX3RyaWdnZXIoc3RydWN0IGRmbF9mZWF0dXJlICpmZWF0dXJlLCB1bnNpZ25lZCBpbnQgaWR4LFxuLS1cbmRyaXZlcnMvZnBnYS9kZmwuYy0xODgwLVx0XHRrZnJlZShmZWF0dXJlLVx1MDAzZWlycV9jdHhbaWR4XS5uYW1lKTtcbmRyaXZlcnMvZnBnYS9kZmwuYzoxODgxOlx0XHRldmVudGZkX2N0eF9wdXQoZmVhdHVyZS1cdTAwM2VpcnFfY3R4W2lkeF0udHJpZ2dlcik7XG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTg4Mi1cdFx0ZmVhdHVyZS1cdTAwM2VpcnFfY3R4W2lkeF0udHJpZ2dlciA9IE5VTEw7XG4tLVxuZHJpdmVycy9mcGdhL2RmbC5jLTE5MDYtXG5kcml2ZXJzL2ZwZ2EvZGZsLmM6MTkwNzpcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcbmRyaXZlcnMvZnBnYS9kZmwuYy0xOTA4LWZyZWVfbmFtZTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0zMDM9c3luY29ial9ldmVudGZkX2VudHJ5X2ZyZWUoc3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnkpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMDQte1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzA1Olx0ZXZlbnRmZF9jdHhfcHV0KGVudHJ5LVx1MDAzZWV2X2ZkX2N0eCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMDYtXHRkbWFfZmVuY2VfcHV0KGVudHJ5LVx1MDAzZWZlbmNlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYz02OTA9c3RhdGljIHZvaWQgaW50ZWxfdmdwdV9yZWxlYXNlX21zaV9ldmVudGZkX2N0eChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYy02OTUtXHRpZiAodHJpZ2dlcikge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmM6Njk2Olx0XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYy02OTctXHRcdHZncHUtXHUwMDNlbXNpX3RyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9MjU0PXN0YXRpYyB2b2lkIG1zaHZfaXJxZmRfc2h1dGRvd24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjY3LVx0XHRtc2h2X2lycWZkX3Jlc2FtcGxlcl9zaHV0ZG93bihpcnFmZCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjI2ODpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZWlycWZkX3Jlc2FtcGxlZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNjktXHR9XG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNzMtXHQgKi9cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6Mjc0Olx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZWlycWZkX2V2ZW50ZmRfY3R4KTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjc1LVx0a2ZyZWUoaXJxZmQpO1xuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9MzkzPXN0YXRpYyBpbnQgbXNodl9pcnFmZF9hc3NpZ24oc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTUyOS1cdGlmIChyZXNhbXBsZWZkIFx1MDAyNlx1MDAyNiAhSVNfRVJSKHJlc2FtcGxlZmQpKVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo1MzA6XHRcdGV2ZW50ZmRfY3R4X3B1dChyZXNhbXBsZWZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTMxLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzItXHRpZiAoZXZlbnRmZCBcdTAwMjZcdTAwMjYgIUlTX0VSUihldmVudGZkKSlcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NTMzOlx0XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTUzNC1cbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTU0Mz1zdGF0aWMgaW50IG1zaHZfaXJxZmRfZGVhc3NpZ24oc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTU2Mi1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NTYzOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01NjQtXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz02MzM9c3RhdGljIHZvaWQgaW9ldmVudGZkX3JlbGVhc2Uoc3RydWN0IG1zaHZfaW9ldmVudGZkICpwLCB1NjQgcGFydGl0aW9uX2lkKVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNjM2LVx0XHRtc2h2X3VucmVnaXN0ZXJfZG9vcmJlbGwocGFydGl0aW9uX2lkLCBwLVx1MDAzZWlvdm50ZmRfZG9vcmJlbGxfaWQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo2Mzc6XHRldmVudGZkX2N0eF9wdXQocC1cdTAwM2Vpb3ZudGZkX2V2ZW50ZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy02MzgtXHRrZnJlZShwKTtcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTY3Mz1zdGF0aWMgaW50IG1zaHZfYXNzaWduX2lvZXZlbnRmZChzdHJ1Y3QgbXNodl9wYXJ0aXRpb24gKnB0LFxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNzY3LWZhaWw6XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjc2ODpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNzY5LVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NzczPXN0YXRpYyBpbnQgbXNodl9kZWFzc2lnbl9pb2V2ZW50ZmQoc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTgxNC1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6ODE1Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy04MTYtXG4tLVxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmM9OTczPXN0YXRpYyBpbnQgbXNodl92dGxfc2ludF9pb2N0bF9zZXRfZXZlbnRmZChzdHJ1Y3QgbXNodl92dGxfc2V0X2V2ZW50ZmQgX191c2VyICphcmcpXG4tLVxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmMtOTk1LVx0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jOjk5NjpcdFx0ZXZlbnRmZF9jdHhfcHV0KG9sZF9ldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jLTk5Ny1cdH1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MjA3Mj1zdGF0aWMgaW50IFVWRVJCU19IQU5ETEVSKE1MWDVfSUJfTUVUSE9EX0RFVlhfU1VCU0NSSUJFX0VWRU5UKShcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjI0OS1cdFx0aWYgKGV2ZW50X3N1Yi1cdTAwM2VldmVudGZkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjIyNTA6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50X3N1Yi1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMjUxLVx0XHR1dmVyYnNfdW9iamVjdF9wdXQoXHUwMDI2ZXZlbnRfc3ViLVx1MDAzZWV2X2ZpbGUtXHUwMDNldW9iaik7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTI5NDA9c3RhdGljIHZvaWQgZGV2eF9mcmVlX3N1YnNjcmlwdGlvbihzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjk0NS1cdGlmIChldmVudF9zdWItXHUwMDNlZXZlbnRmZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyOTQ2Olx0XHRldmVudGZkX2N0eF9wdXQoZXZlbnRfc3ViLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI5NDctXHR1dmVyYnNfdW9iamVjdF9wdXQoXHUwMDI2ZXZlbnRfc3ViLVx1MDAzZWV2X2ZpbGUtXHUwMDNldW9iaik7XG4tLVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jPTE5MT1zdGF0aWMgdm9pZCBpcnFfZnJlZSh2b2lkICpwcml2YXRlKVxuLS1cbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0xOTQtXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM6MTk1Olx0ZXZlbnRmZF9jdHhfcHV0KGV2X2N0eCk7XG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMTk2LX1cbi0tXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM9MTk4PXN0YXRpYyBsb25nIGFmdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCxcbi0tXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMjU5LVx0XHRpZiAocmMpXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM6MjYwOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChldl9jdHgpO1xuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTI2MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYz00MTA9c3RhdGljIGludCB2ZmlvX2Njd19tZGV2X3NldF9pcnFzKHN0cnVjdCB2ZmlvX2Njd19wcml2YXRlICpwcml2YXRlLFxuLS1cbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMtNDYwLVx0XHRcdGlmICgqY3R4KVxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYzo0NjE6XHRcdFx0XHRldmVudGZkX2N0eF9wdXQoKmN0eCk7XG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ2Mi1cdFx0XHQqY3R4ID0gTlVMTDtcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ3MC1cdFx0XHRpZiAoKmN0eClcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM6NDcxOlx0XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KCpjdHgpO1xuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NzItXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIxNzI9c3RhdGljIGludCB2ZmlvX2FwX3NldF9yZXF1ZXN0X2lycShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTg3LVx0XHRpZiAobWF0cml4X21kZXYtXHUwMDNlcmVxX3RyaWdnZXIpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjE4ODpcdFx0XHRldmVudGZkX2N0eF9wdXQobWF0cml4X21kZXYtXHUwMDNlcmVxX3RyaWdnZXIpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIxODktXHRcdG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE5NS1cdFx0aWYgKG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIxOTY6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTk3LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMjA2PXN0YXRpYyBpbnQgdmZpb19hcF9zZXRfY2ZnX2NoYW5nZV9pcnEoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldiwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyMjAtXHRcdGlmIChtYXRyaXhfbWRldi1cdTAwM2VjZmdfY2hnX3RyaWdnZXIpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjIyMTpcdFx0XHRldmVudGZkX2N0eF9wdXQobWF0cml4X21kZXYtXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjIyLVx0XHRtYXRyaXhfbWRldi1cdTAwM2VjZmdfY2hnX3RyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjI4LVx0XHRpZiAobWF0cml4X21kZXYtXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyMjk6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVx1MDAzZWNmZ19jaGdfdHJpZ2dlcik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIzMC1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9mcy5jPTIyODk9c3RhdGljIHZvaWQgZmZzX2RhdGFfY2xlYXIoc3RydWN0IGZmc19kYXRhICpmZnMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYy0yMzEzLVx0aWYgKGZmcy1cdTAwM2VmZnNfZXZlbnRmZCkge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYzoyMzE0Olx0XHRldmVudGZkX2N0eF9wdXQoZmZzLVx1MDAzZWZmc19ldmVudGZkKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmMtMjMxNS1cdFx0ZmZzLVx1MDAzZWZmc19ldmVudGZkID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTQ5Nj1zdGF0aWMgdm9pZCB2ZHVzZV9kZXZfcmVzZXQoc3RydWN0IHZkdXNlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtNTMyLVx0XHRcdGlmICh2cS1cdTAwM2VraWNrZmQpXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jOjUzMzpcdFx0XHRcdGV2ZW50ZmRfY3R4X3B1dCh2cS1cdTAwM2VraWNrZmQpO1xuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy01MzQtXHRcdFx0dnEtXHUwMDNla2lja2ZkID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTExOTk9c3RhdGljIGludCB2ZHVzZV9raWNrZmRfc2V0dXAoc3RydWN0IHZkdXNlX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtMTIxOS1cdGlmICh2cS1cdTAwM2VraWNrZmQpXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jOjEyMjA6XHRcdGV2ZW50ZmRfY3R4X3B1dCh2cS1cdTAwM2VraWNrZmQpO1xuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy0xMjIxLVx0dnEtXHUwMDNla2lja2ZkID0gY3R4O1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jPTU4PXN0YXRpYyBpbnQgdmZpb19jZHhfbXNpX3NldF92ZWN0b3Jfc2lnbmFsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtNzEtXHRcdGtmcmVlKHZkZXYtXHUwMDNlY2R4X2lycXNbdmVjdG9yXS5uYW1lKTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjcyOlx0XHRldmVudGZkX2N0eF9wdXQodmRldi1cdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLnRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtNzMtXHRcdHZkZXYtXHUwMDNlY2R4X2lycXNbdmVjdG9yXS50cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy05My1cdFx0a2ZyZWUodmRldi1cdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLm5hbWUpO1xuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6OTQ6XHRcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTk1LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jPTYxPXN0YXRpYyBpbnQgdmZpb19zZXRfdHJpZ2dlcihzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTcyLVx0XHRrZnJlZShpcnEtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYzo3MzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlycS1cdTAwM2V0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTc0LVx0XHRpcnEtXHUwMDNldHJpZ2dlciA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmMtOTYtXHRcdGtmcmVlKGlycS1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jOjk3Olx0XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy05OC1cdFx0aXJxLVx1MDAzZXRyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTQ0PXN0YXRpYyB2b2lkIHZmaW9fcGNpX2V2ZW50ZmRfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpyY3UpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDgtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo0OTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkLVx1MDAzZWN0eCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01MC1cdGtmcmVlKGV2ZW50ZmQpO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTQxMz1zdGF0aWMgaW50IHZmaW9fcGNpX2NvcmVfcG1fZW50cnlfd2l0aF93YWtldXAoXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDM4LVx0aWYgKHJldClcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjQzOTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGVmZGN0eCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NDAtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NDQ0PXN0YXRpYyB2b2lkIF9fdmZpb19wY2lfcnVudGltZV9wbV9leGl0KHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NTAtXHRcdGlmICh2ZGV2LVx1MDAzZXBtX3dha2VfZXZlbnRmZF9jdHgpIHtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjQ1MTpcdFx0XHRldmVudGZkX2N0eF9wdXQodmRldi1cdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ1Mi1cdFx0XHR2ZGV2LVx1MDAzZXBtX3dha2VfZXZlbnRmZF9jdHggPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz0zMjQ9c3RhdGljIGludCB2ZmlvX2ludHhfc2V0X3NpZ25hbChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTM0Mi1cdFx0dmZpb192aXJxZmRfZmx1c2hfdGhyZWFkKFx1MDAyNmN0eC1cdTAwM2V1bm1hc2spO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjM0MzpcdFx0ZXZlbnRmZF9jdHhfcHV0KG9sZCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzQ0LVx0fVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz0zNDk9c3RhdGljIHZvaWQgdmZpb19pbnR4X2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNjItXHRcdGlmIChjdHgtXHUwMDNldHJpZ2dlcilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzozNjM6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eC1cdTAwM2V0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNjQtXHRcdGtmcmVlKGN0eC1cdTAwM2VuYW1lKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NDQ3PXN0YXRpYyBpbnQgdmZpb19tc2lfc2V0X3ZlY3Rvcl9zaWduYWwoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy00NjUtXHRcdGtmcmVlKGN0eC1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo0NjY6XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgtXHUwMDNldHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNDY3LVx0XHR2ZmlvX2lycV9jdHhfZnJlZSh2ZGV2LCBjdHgsIHZlY3Rvcik7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTUyNS1vdXRfcHV0X2V2ZW50ZmRfY3R4OlxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjUyNjpcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy01Mjctb3V0X2ZyZWVfbmFtZTpcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NjM0PXN0YXRpYyBpbnQgdmZpb19wY2lfc2V0X2ludHhfdHJpZ2dlcihzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTY2Mi1cdFx0aWYgKHJldCBcdTAwMjZcdTAwMjYgdHJpZ2dlcilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo2NjM6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTY2NC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NzM0PXN0YXRpYyBpbnQgdmZpb19wY2lfc2V0X2N0eF90cmlnZ2VyX3NpbmdsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTc5My1cdFx0XHRpZiAocmV0KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjc5NDpcdFx0XHRcdGV2ZW50ZmRfY3R4X3B1dChlZmRjdHgpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTc5NS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYz0xODI9c3RhdGljIGludCB2ZmlvX3NldF90cmlnZ2VyKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGluZGV4LFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE4OS1cdFx0ZGlzYWJsZV9pcnEoaXJxLVx1MDAzZWh3aXJxKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjE5MDpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlycS1cdTAwM2V0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE5MS1cdFx0aXJxLVx1MDAzZXRyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jPTM1MT12b2lkIHZmaW9fcGxhdGZvcm1faXJxX2NsZWFudXAoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM2MC1cdFx0XHRpZiAodmRldi1cdTAwM2VpcnFzW2ldLnRyaWdnZXIpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzozNjE6XHRcdFx0XHRldmVudGZkX2N0eF9wdXQodmRldi1cdTAwM2VpcnFzW2ldLnRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMzYyLVx0XHRcdGtmcmVlKHZkZXYtXHUwMDNlaXJxc1tpXS5uYW1lKTtcbi0tXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM9ODU9c3RhdGljIHZvaWQgdmlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtOTEtXHRmbHVzaF93b3JrKFx1MDAyNnZpcnFmZC1cdTAwM2VpbmplY3QpO1xuZHJpdmVycy92ZmlvL3ZpcnFmZC5jOjkyOlx0ZXZlbnRmZF9jdHhfcHV0KHZpcnFmZC1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMvdmZpby92aXJxZmQuYy05My1cbi0tXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM9MTExPWludCB2ZmlvX3ZpcnFmZF9lbmFibGUodm9pZCAqb3BhcXVlLFxuLS1cbmRyaXZlcnMvdmZpby92aXJxZmQuYy0xODQtZXJyX2J1c3k6XG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM6MTg1Olx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtMTg2LWVycl9mZDpcbi0tXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYz01MTk9c3RhdGljIHZvaWQgdmhvc3RfdmRwYV9jb25maWdfcHV0KHN0cnVjdCB2aG9zdF92ZHBhICp2KVxuLS1cbmRyaXZlcnMvdmhvc3QvdmRwYS5jLTUyMS1cdGlmICh2LVx1MDAzZWNvbmZpZ19jdHgpIHtcbmRyaXZlcnMvdmhvc3QvdmRwYS5jOjUyMjpcdFx0ZXZlbnRmZF9jdHhfcHV0KHYtXHUwMDNlY29uZmlnX2N0eCk7XG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01MjMtXHRcdHYtXHUwMDNlY29uZmlnX2N0eCA9IE5VTEw7XG4tLVxuZHJpdmVycy92aG9zdC92ZHBhLmM9NTI3PXN0YXRpYyBsb25nIHZob3N0X3ZkcGFfc2V0X2NvbmZpZ19jYWxsKHN0cnVjdCB2aG9zdF92ZHBhICp2LCB1MzIgX191c2VyICphcmdwKVxuLS1cbmRyaXZlcnMvdmhvc3QvdmRwYS5jLTU0MS1cdGlmICghSVNfRVJSX09SX05VTEwoY3R4KSlcbmRyaXZlcnMvdmhvc3QvdmRwYS5jOjU0MjpcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01NDMtXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTEyMDM9dm9pZCB2aG9zdF9kZXZfY2xlYW51cChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMDgtXHRcdGlmIChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWVycm9yX2N0eClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjA5Olx0XHRcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWVycm9yX2N0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxMC1cdFx0aWYgKGRldi1cdTAwM2V2cXNbaV0tXHUwMDNla2ljaylcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxMi1cdFx0aWYgKGRldi1cdTAwM2V2cXNbaV0tXHUwMDNlY2FsbF9jdHguY3R4KVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjEyMTM6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGRldi1cdTAwM2V2cXNbaV0tXHUwMDNlY2FsbF9jdHguY3R4KTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjE0LVx0XHR2aG9zdF92cV9yZXNldChkZXYsIGRldi1cdTAwM2V2cXNbaV0pO1xuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjE3LVx0aWYgKGRldi1cdTAwM2Vsb2dfY3R4KVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjEyMTg6XHRcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXHUwMDNlbG9nX2N0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxOS1cdGRldi1cdTAwM2Vsb2dfY3R4ID0gTlVMTDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjE1MD1sb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzQtXHRpZiAoIUlTX0VSUl9PUl9OVUxMKGN0eCkpXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjI3NTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI3Ni1cdGlmIChmaWxlcClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjMyMT1sb25nIHZob3N0X2Rldl9pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHZvaWQgX191c2VyICphcmdwKVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yNDE5LVx0XHRpZiAoY3R4KVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjI0MjA6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjQyMS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9NDM9c3RhdGljIHZvaWQgYWNybl9pb2V2ZW50ZmRfc2h1dGRvd24oc3RydWN0IGFjcm5fdm0gKnZtLCBzdHJ1Y3QgaHNtX2lvZXZlbnRmZCAqcClcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy00Ni1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjQ3Olx0ZXZlbnRmZF9jdHhfcHV0KHAtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy00OC1cdGxpc3RfZGVsKFx1MDAyNnAtXHUwMDNlbGlzdCk7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9NzY9c3RhdGljIGludCBhY3JuX2lvZXZlbnRmZF9hc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE0Mi1mYWlsOlxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM6MTQzOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTQ0LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYz0xNDc9c3RhdGljIGludCBhY3JuX2lvZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTY4LVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM6MTY5Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTcwLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz02MD1zdGF0aWMgdm9pZCBoc21faXJxZmRfc2h1dGRvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy03Mi1cdGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKGlycWZkLVx1MDAzZWV2ZW50ZmQsIFx1MDAyNmlycWZkLVx1MDAzZXdhaXQsIFx1MDAyNmNudCk7XG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jOjczOlx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy03NC1cdGtmcmVlKGlycWZkKTtcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jPTExMT1zdGF0aWMgaW50IGFjcm5faXJxZmRfYXNzaWduKHN0cnVjdCBhY3JuX3ZtICp2bSwgc3RydWN0IGFjcm5faXJxZmQgKmFyZ3MpXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xNzAtZmFpbDpcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM6MTcxOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xNzItb3V0OlxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM9MTc3PXN0YXRpYyBpbnQgYWNybl9pcnFmZF9kZWFzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xOTUtXHRtdXRleF91bmxvY2soXHUwMDI2dm0tXHUwMDNlaXJxZmRzX2xvY2spO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzoxOTY6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jLTE5Ny1cbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9OTEyPXN0YXRpYyB2b2lkIGlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtOTIxLVx0ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoa2lycWZkLVx1MDAzZWV2ZW50ZmQsIFx1MDAyNmtpcnFmZC1cdTAwM2V3YWl0LCBcdTAwMjZjbnQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjkyMjpcdGV2ZW50ZmRfY3R4X3B1dChraXJxZmQtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtOTIzLVx0a2ZyZWUoa2lycWZkKTtcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9OTc2PXN0YXRpYyBpbnQgcHJpdmNtZF9pcnFmZF9hc3NpZ24oc3RydWN0IHByaXZjbWRfaXJxZmQgKmlycWZkKVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMDQ0LWVycm9yX2V2ZW50ZmQ6XG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTA0NTpcdGV2ZW50ZmRfY3R4X3B1dChraXJxZmQtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA0Ni1cbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTA1Mj1zdGF0aWMgaW50IHByaXZjbWRfaXJxZmRfZGVhc3NpZ24oc3RydWN0IHByaXZjbWRfaXJxZmQgKmlycWZkKVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMDcyLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjEwNzM6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA3NC1cbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTM0Nj1zdGF0aWMgdm9pZCBpb2V2ZW50ZmRfZnJlZShzdHJ1Y3QgcHJpdmNtZF9rZXJuZWxfaW9ldmVudGZkICpraW9ldmVudGZkKVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMzQ4LVx0bGlzdF9kZWwoXHUwMDI2a2lvZXZlbnRmZC1cdTAwM2VsaXN0KTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMzQ5Olx0ZXZlbnRmZF9jdHhfcHV0KGtpb2V2ZW50ZmQtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTM1MC1cdGtmcmVlKGtpb2V2ZW50ZmQpO1xuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xMzUzPXN0YXRpYyBpbnQgcHJpdmNtZF9pb2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBwcml2Y21kX2lvZXZlbnRmZCAqaW9ldmVudGZkKVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xNDAzLWVycm9yX2V2ZW50ZmQ6XG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTQwNDpcdGV2ZW50ZmRfY3R4X3B1dChraW9ldmVudGZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0MDUtXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTE0MTE9c3RhdGljIGludCBwcml2Y21kX2lvZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3QgcHJpdmNtZF9pb2V2ZW50ZmQgKmlvZXZlbnRmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQ1NC1cdG11dGV4X3VubG9jayhcdTAwMjZpb3JlcV9sb2NrKTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxNDU1Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0NTYtXG4tLVxuZnMvYWlvLmM9MTE1Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW9jYl9kZXN0cm95KHN0cnVjdCBhaW9fa2lvY2IgKmlvY2IpXG4tLVxuZnMvYWlvLmMtMTE1OC1cdGlmIChpb2NiLVx1MDAzZWtpX2V2ZW50ZmQpXG5mcy9haW8uYzoxMTU5Olx0XHRldmVudGZkX2N0eF9wdXQoaW9jYi1cdTAwM2VraV9ldmVudGZkKTtcbmZzL2Fpby5jLTExNjAtXHRpZiAoaW9jYi1cdTAwM2VraV9maWxwKVxuLS1cbmZzL2V2ZW50ZmQuYz04OT1zdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG4tLVxuZnMvZXZlbnRmZC5jLTk2LS8qKlxuZnMvZXZlbnRmZC5jOjk3OiAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXG5mcy9ldmVudGZkLmMtOTgtICogQGN0eDogW2luXSBQb2ludGVyIHRvIGV2ZW50ZmQgY29udGV4dC5cbi0tXG5mcy9ldmVudGZkLmMtMTAyLSAqL1xuZnMvZXZlbnRmZC5jOjEwMzp2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbmZzL2V2ZW50ZmQuYy0xMDQte1xuLS1cbmZzL2V2ZW50ZmQuYy0xMDktfVxuZnMvZXZlbnRmZC5jOjExMDpFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xuZnMvZXZlbnRmZC5jLTExMS1cbmZzL2V2ZW50ZmQuYz0xMTI9c3RhdGljIGludCBldmVudGZkX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZXZlbnRmZC5jLTExNi1cdHdha2VfdXBfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTEhVUCk7XG5mcy9ldmVudGZkLmM6MTE3Olx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5mcy9ldmVudGZkLmMtMTE4LVx0cmV0dXJuIDA7XG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9MzE9c3RydWN0IGZpbGU7XG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtMzQtXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDozNTp2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCk7XG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC0zNi1zdHJ1Y3QgZmlsZSAqZXZlbnRmZF9mZ2V0KGludCBmZCk7XG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9NjE9c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtNjQtXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDo2NTpzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtNjYte1xuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oPTg4PXN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbi0tXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC05Mi1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oOjkzOkRFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtOTQtXG4tLVxuaW9fdXJpbmcvZXZlbnRmZC5jPTI4PXN0YXRpYyB2b2lkIGlvX2V2ZW50ZmRfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcbi0tXG5pb191cmluZy9ldmVudGZkLmMtMzEtXG5pb191cmluZy9ldmVudGZkLmM6MzI6XHRldmVudGZkX2N0eF9wdXQoZXZfZmQtXHUwMDNlY3FfZXZfZmQpO1xuaW9fdXJpbmcvZXZlbnRmZC5jLTMzLVx0a2ZyZWUoZXZfZmQpO1xuLS1cbm1tL21lbWNvbnRyb2wtdjEuYz0xMDIwPXN0YXRpYyB2b2lkIG1lbWNnX2V2ZW50X3JlbW92ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTEwMzItXG5tbS9tZW1jb250cm9sLXYxLmM6MTAzMzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudC1cdTAwM2VldmVudGZkKTtcbm1tL21lbWNvbnRyb2wtdjEuYy0xMDM0LVx0a2ZyZWUoZXZlbnQpO1xuLS1cbm1tL21lbWNvbnRyb2wtdjEuYz0xMDk0PXN0YXRpYyBzc2l6ZV90IG1lbWNnX3dyaXRlX2V2ZW50X2NvbnRyb2woc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xMjI3LW91dF9wdXRfZXZlbnRmZDpcbm1tL21lbWNvbnRyb2wtdjEuYzoxMjI4Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50LVx1MDAzZWV2ZW50ZmQpO1xubW0vbWVtY29udHJvbC12MS5jLTEyMjktb3V0X2tmcmVlOlxuLS1cbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYz0xNTM0PXN0YXRpYyB2b2lkIG10dHlfZGlzYWJsZV9pbnR4KHN0cnVjdCBtZGV2X3N0YXRlICptZGV2X3N0YXRlKVxuLS1cbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTM2LVx0aWYgKG1kZXZfc3RhdGUtXHUwMDNlaW50eF9ldnRmZCkge1xuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jOjE1Mzc6XHRcdGV2ZW50ZmRfY3R4X3B1dChtZGV2X3N0YXRlLVx1MDAzZWludHhfZXZ0ZmQpO1xuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jLTE1MzgtXHRcdG1kZXZfc3RhdGUtXHUwMDNlaW50eF9ldnRmZCA9IE5VTEw7XG4tLVxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jPTE1NDQ9c3RhdGljIHZvaWQgbXR0eV9kaXNhYmxlX21zaShzdHJ1Y3QgbWRldl9zdGF0ZSAqbWRldl9zdGF0ZSlcbi0tXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTU0Ni1cdGlmIChtZGV2X3N0YXRlLVx1MDAzZW1zaV9ldnRmZCkge1xuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jOjE1NDc6XHRcdGV2ZW50ZmRfY3R4X3B1dChtZGV2X3N0YXRlLVx1MDAzZW1zaV9ldnRmZCk7XG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTU0OC1cdFx0bWRldl9zdGF0ZS1cdTAwM2Vtc2lfZXZ0ZmQgPSBOVUxMO1xuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYz0xMjM9aXJxZmRfc2h1dGRvd24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNDYtXHRcdGlycWZkX3Jlc2FtcGxlcl9zaHV0ZG93bihpcnFmZCk7XG52aXJ0L2t2bS9ldmVudGZkLmM6MTQ3Olx0XHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXHUwMDNlcmVzYW1wbGVmZCk7XG52aXJ0L2t2bS9ldmVudGZkLmMtMTQ4LVx0fVxuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNTUtI2VuZGlmXG52aXJ0L2t2bS9ldmVudGZkLmM6MTU2Olx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZWV2ZW50ZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jLTE1Ny1cdGtmcmVlKGlycWZkKTtcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmM9MzcxPWt2bV9pcnFmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycWZkICphcmdzKVxuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTItXHRpZiAocmVzYW1wbGVmZCBcdTAwMjZcdTAwMjYgIUlTX0VSUihyZXNhbXBsZWZkKSlcbnZpcnQva3ZtL2V2ZW50ZmQuYzo1MTM6XHRcdGV2ZW50ZmRfY3R4X3B1dChyZXNhbXBsZWZkKTtcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTQtXG52aXJ0L2t2bS9ldmVudGZkLmMtNTE1LVx0aWYgKGV2ZW50ZmQgXHUwMDI2XHUwMDI2ICFJU19FUlIoZXZlbnRmZCkpXG52aXJ0L2t2bS9ldmVudGZkLmM6NTE2Olx0XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG52aXJ0L2t2bS9ldmVudGZkLmMtNTE3LVxuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYz01OTA9a3ZtX2lycWZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9pcnFmZCAqYXJncylcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmMtNjA2LVx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmt2bS1cdTAwM2VpcnFmZHMubG9jayk7XG52aXJ0L2t2bS9ldmVudGZkLmM6NjA3Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jLTYwOC1cbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5NTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgUGF0Y2gqKgoKT2theSwgc28gYGV2ZW50ZmRfY3R4X3B1dGAgaXMgYWxsIG92ZXIgdGhlIGtlcm5lbCwgaHVoPyAgS1ZNLCBBSU8sIGlvX3VyaW5nLCBEUk0gc3luY29ianMsIHZob3N0LCBldmVuIFVTQiBnYWRnZXQgc3R1ZmbigKYgdGhhdCYjMzk7cyBhICpsb3QqIG9mIHBsYWNlcy4gIEl0JiMzOTtzIG9idmlvdXNseSBhIGNvcmUgZnVuY3Rpb24uIEFscmlnaHQsIEkmIzM5O20gYWxyZWFkeSB0cmFja2luZyBhbGwgdGhlc2UgY2FsbHMuCgpTbywgdGhlIHBhdGNoIGlzIGFkZGluZyBgaWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpIHJldHVybjtgIHRvIGBldmVudGZkX2N0eF9wdXQoKWAuICBUaGF0IGxvb2tzIGxpa2UgYSBkZWZlbnNpdmUgY2hlY2ssIGd1YXJkaW5nIGFnYWluc3QgYSBiYWQgcG9pbnRlci4gIE1ha2VzIHNlbnNlLCBwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhlIGJyb2FkIHVzYWdlIG9mIHRoZSBmdW5jdGlvbi4gIEkgd29uZGVyLCB0aG91Z2gsIGFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cz8gIEl0JiMzOTtzIGdvb2QgdGhhdCB0aGV5IGFyZSBmb2N1c2luZyBvbiBhZGRpbmcgdGhpcy4KCldhaXQgYSBzZWNvbmTigKYgYmVmb3JlIEkgZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZSB0aGF0JiMzOTtzIGNhbGxpbmcgaXQsIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgYGluY2x1ZGUvbGludXgvZXZlbnRmZC5oYCBoYXMgdGhlIGR1bW15IHN0YXRpYyBpbmxpbmUgZm9yIHdoZW4gYCFDT05GSUdfRVZFTlRGRGAuIE5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmaXggaXMgY29ycmVjdGx5IGltcGxlbWVudGVkLiBDaGVja2luZyB0aGF0IHRoZSBoZWFkZXIgZ3VhcmQgcHJldmVudHMgdGhlIGlzc3VlcyBvbiBrZXJuZWxzIHRoYXQgZG9uJiMzOTt0IGV2ZW4gdXNlIGV2ZW50ZmQgd291bGQgYmUgYSBnb29kIHN0ZXAgaGVyZS4gIExldCBtZSBqdW1wIG92ZXIgdG8gdGhvc2UgbGluZXMgYW5kIG1ha2Ugc3VyZSB0aGUgaW5saW5lIGlzIHdoYXQgSSBleHBlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9ldmVudGZkLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU1Olx0XG4gIDU2Olx0c3RhdGljIGlubGluZSBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmRfY3R4X2ZkZ2V0KGludCBmZClcbiAgNTc6XHR7XG4gIDU4Olx0XHRyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTtcbiAgNTk6XHR9XG4gIDYwOlx0XG4gIDYxOlx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXG4gIDYyOlx0e1xuICA2MzpcdH1cbiAgNjQ6XHRcbiAgNjU6XHRzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuICA2NjpcdHtcbiAgNjc6XHRcbiAgNjg6XHR9XG4gIDY5Olx0XG4gIDcwOlx0c3RhdGljIGlubGluZSBpbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsXG4gIDcxOlx0XHRcdFx0XHRcdFx0d2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LCBfX3U2NCAqY250KVxuICA3MjpcdHtcbiAgNzM6XHRcdHJldHVybiAtRU5PU1lTO1xuICA3NDpcdH1cbiAgNzU6XHRcbiAgNzY6XHRzdGF0aWMgaW5saW5lIGJvb2wgZXZlbnRmZF9zaWduYWxfYWxsb3dlZCh2b2lkKVxuICA3NzpcdHtcbiAgNzg6XHRcdHJldHVybiB0cnVlO1xuICA3OTpcdH1cbiAgODA6XHRcbiAgODE6XHRzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcbiAgODI6XHR7XG4gIDgzOlx0XG4gIDg0Olx0fVxuICA4NTpcdFxuICA4NjpcdCNlbmRpZlxuICA4NzpcdFxuICA4ODpcdHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbiAgODk6XHR7XG4gIDkwOlx0XHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gIDkxOlx0fVxuICA5MjpcdFxuICA5MzpcdERFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuICA5NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5NTEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBDcmFzaCBWdWxuZXJhYmlsaXR5IGFuZCBpdHMgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBvdGVudGlhbCBrZXJuZWwgaXNzdWUsIGFuZCBpdCYjMzk7cyBhbGwgYWJvdXQgaG93IGBldmVudGZkYCBjb250ZXh0cyBhcmUgaGFuZGxlZCBpbiB0aGUgRFJNIChEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIpIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIHN5bmMgb2JqZWN0cy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGZ1bmN0aW9uLgoKSSBzdGFydGVkIGJ5IGxvb2tpbmcgYXQgYGluY2x1ZGUvbGludXgvZXZlbnRmZC5oYCwgd2hlcmUgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gaXMgZGVmaW5lZCBmb3IgYGV2ZW50ZmRfY3R4YCwgYW5kIHRoZW4gSSB0cmFjZWQgaXRzIHVzYWdlIGluIGBmcy9ldmVudGZkLmNgIGFuZCBzcGVjaWZpY2FsbHkgYGV2ZW50ZmRfY3R4X3B1dGAuIFRoaXMgZnVuY3Rpb24sIGNydWNpYWxseSwgZGVjcmVtZW50cyBhIHJlZmVyZW5jZSBjb3VudGVyIChga3JlZmApIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnRmZCBjb250ZXh0LgoKVGhlIGNydXggb2YgdGhlIGlzc3VlIGlzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBhbmQgYGV2ZW50ZmRfY3R4X3B1dGAuICBUaGUgZnVuY3Rpb24gYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIHJldHJpZXZlcyBhbiBgZXZlbnRmZF9jdHhgIHVzaW5nIGBldmVudGZkX2N0eF9mZGdldGAuIFRoZSBjb2RlIHVzZXMgdGhlIGBfX2ZyZWVgIGF0dHJpYnV0ZSB0byBjYWxsIGBldmVudGZkX2N0eF9wdXRgIG9uIGV4aXQuIElmIGBldmVudGZkX2N0eF9mZGdldGAgZmFpbHMgKHJldHVybmluZyBhbiBlcnJvciBwb2ludGVyIGxpa2UgYC1FQkFERmAgb3IgYC1FSU5WQUxgKSwgdGhlIGZ1bmN0aW9uIGp1bXBzIHRvIGBlcnJfZmRnZXRgLCB0cmlnZ2VyaW5nIHRoZSBjbGVhbnVwIG9uIHRoZSBlcnJvciBwb2ludGVyLgoKSGVyZSYjMzk7cyB0aGUgcHJvYmxlbSBJIHNlZS4gKkJlZm9yZSogdGhlIGZpeCwgYGV2ZW50ZmRfY3R4X3B1dGAgKmRpZG4mIzM5O3QqIGNoZWNrIGlmIHRoZSBgZXZlbnRmZF9jdHhgIHBvaW50ZXIgd2FzIGFuIGVycm9yIHBvaW50ZXIgKHVzaW5nIGBJU19FUlJfT1JfTlVMTGApLiBUaGlzIG1lYW50IHRoYXQsIGlmIGBldmVudGZkX2N0eF9mZGdldGAgZmFpbGVkLCBjYWxsaW5nIGBldmVudGZkX2N0eF9wdXRgIG9uIHRoZSByZXR1cm5lZCBlcnJvciBwb2ludGVyIHdvdWxkIGxlYWQgdG8gYW4gYXR0ZW1wdCB0byBkZXJlZmVyZW5jZSBhIGdhcmJhZ2UgcG9pbnRlciwgY2F1c2luZyBhIGtlcm5lbCBjcmFzaCAoc3BlY2lmaWNhbGx5LCBhIHBhZ2UgZmF1bHQgYmVjYXVzZSBgY3R4LSZndDtrcmVmYCB3b3VsZCBiZSBpbnZhbGlkKS4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uCgpUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IGZpeGVzIHRoaXMgYnkgYWRkaW5nIGBpZiAoSVNfRVJSX09SX05VTEwoY3R4KSkgcmV0dXJuO2AgYXQgdGhlIGJlZ2lubmluZyBvZiBgZXZlbnRmZF9jdHhfcHV0YC4gVGhpcyBzaW1wbGUgY2hlY2sgbWFrZXMgdGhlIGZ1bmN0aW9uIHNhZmUgdG8gY2FsbCB3aXRoIGVycm9yIHBvaW50ZXJzLCBwcmV2ZW50aW5nIHRoZSBkZXJlZmVyZW5jZSBhbmQgdGhlIGNyYXNoLiAgSXQmIzM5O3MgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgYW5kIGEgY3JpdGljYWwgZml4IGZvciBhIHNlcmlvdXMgdnVsbmVyYWJpbGl0eS4KCkkgYWxzbyBzZWUgdGhhdCBvdGhlciBmYWlsdXJlIHBhdGhzIGFyZSBoYW5kbGVkIGNvcnJlY3RseSwgc3VjaCBhcyBpZiBga3phbGxvY19vYmpgIGZhaWxzLiBJbiB0aG9zZSBjYXNlcywgdGhlIGNoZWNrIGFsc28gc2FmZWx5IGhhbmRsZXMgdGhlIGBldmVudGZkX2N0eF9wdXRgIGNhbGwuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgY29kZSBwYXRoIHJlYWNoYWJsZT8gVGhlIGFuc3dlciBpcyBZRVMhICBgRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRGAgaXMgZXhwb3NlZCB0aHJvdWdoIHZpcnRpby1ncHUgKGFuZCBwb3RlbnRpYWxseSBvdGhlciB2aXJ0dWFsIERSTSBkZXZpY2VzKS4gVGhpcyBtZWFucyBhIHVzZXItc3BhY2UgYXBwbGljYXRpb24gY291bGQgdHJpZ2dlciB0aGlzIGNvZGUsIHBvdGVudGlhbGx5IGV4cGxvaXRpbmcgdGhpcyB2dWxuZXJhYmlsaXR5IChiZWZvcmUgdGhlIGZpeCkgdG8gY3Jhc2ggdGhlIGtlcm5lbCBvciB3b3JzZS4gIEkgbmVlZCB0byBjaGVjayBpZiB2a21zIGhhcyBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2a21zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDcwOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MzYxPXNvdXJjZSBcJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjM2Mjpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMzYzLXNvdXJjZSBcJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTg2PW9iai0kKENPTkZJR19EUk1fVkdFTSlcdCYjNDM7PSB2Z2VtL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4NzpvYmotJChDT05GSUdfRFJNX1ZLTVMpXHQmIzQzOz0gdmttcy9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xODgtb2JqLSQoQ09ORklHX0RSTV9OT1VWRUFVKSAmIzQzOz1ub3V2ZWF1L1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTE0OD1hbWRncHUteSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTE0OS1cdGRjZV92MTBfMC5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZToxNTA6XHRhbWRncHVfdmttcy5vXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0xNTEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg9NjIxPXN0cnVjdCBhbWRncHVfZGV2aWNlIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC03MDctXHRib29sXHRcdFx0XHRlbmFibGVfdmlydHVhbF9kaXNwbGF5O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6NzA4Olx0c3RydWN0IGFtZGdwdV92a21zX291dHB1dCAgICAgICAqYW1kZ3B1X3ZrbXNfb3V0cHV0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtNzA5LVx0c3RydWN0IGFtZGdwdV9tb2RlX2luZm9cdFx0bW9kZV9pbmZvO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYy0xMDItI2luY2x1ZGUgXCYjMzQ7anBlZ192NF8wXzUuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jOjEwMzojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmMtMTA0LSNpbmNsdWRlIFwmIzM0O21lc192MTFfMC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jPTI2NDI9c3RhdGljIHZvaWQgYW1kZ3B1X2Rpc2NvdmVyeV9zZXRfc3Jpb3ZfZGlzcGxheShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmMtMjY0NC1cdGFtZGdwdV9kZXZpY2Vfc2V0X3NyaW92X3ZpcnR1YWxfZGlzcGxheShhZGV2KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYzoyNjQ1Olx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NDYtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYz0yNjQ5PXN0YXRpYyBpbnQgYW1kZ3B1X2Rpc2NvdmVyeV9zZXRfZGlzcGxheV9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NTEtXHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmM6MjY1MjpcdFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NTMtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTgtI2luY2x1ZGUgXCYjMzQ7aXZzcmNpZC9pdnNyY2lkX3Zpc2xhbmRzMzAuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxOTojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTIwLSNpbmNsdWRlIFwmIzM0O2FtZGdwdV9kaXNwbGF5LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI0LS8qKlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyNTogKiBET0M6IGFtZGdwdV92a21zXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI2LSAqXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI3OiAqIFRoZSBhbWRncHUgdmttcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSB2aXJ0dWFsIEtNUyBpbnRlcmZhY2UgZm9yIHNldmVyYWwgdXNlXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI4LSAqIGNhc2VzOiBkZXZpY2VzIHdpdGhvdXQgZGlzcGxheSBoYXJkd2FyZSwgcGxhdGZvcm1zIHdoZXJlIHRoZSBhY3R1YWwgZGlzcGxheVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzEtICogdXNhYmxlLiBXZSBwcmV2aW91c2x5IGVtdWxhdGVkIGEgbGVnYWN5IEtNUyBpbnRlcmZhY2UsIGJ1dCB0aGVyZSB3YXMgYSBkZXNpcmVcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzI6ICogdG8gbW92ZSB0byB0aGUgYXRvbWljIEtNUyBpbnRlcmZhY2UuIFRoZSB2a21zIGRyaXZlciBkaWQgZXZlcnl0aGluZyB3ZVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMy0gKiBuZWVkZWQsIGJ1dCB3ZSB3YW50ZWQgS01TIHN1cHBvcnQgbmF0aXZlbHkgaW4gdGhlIGRyaXZlciB3aXRob3V0IGJ1ZmZlclxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNC0gKiBzaGFyaW5nIGFuZCB0aGUgYWJpbGl0eSB0byBzdXBwb3J0IGFuIGluc3RhbmNlIG9mIFZLTVMgcGVyIGRldmljZS4gV2UgZmlyc3RcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzU6ICogbG9va2VkIGF0IHNwbGl0dGluZyB2a21zIGludG8gYSBzdHViIGRyaXZlciBhbmQgYSBoZWxwZXIgbW9kdWxlIHRoYXQgb3RoZXJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzYtICogZHJpdmVycyBjb3VsZCB1c2UgdG8gaW1wbGVtZW50IGEgdmlydHVhbCBkaXNwbGF5LCBidXQgdGhpcyBzdHJhdGVneSBlbmRlZCB1cFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNy0gKiBiZWluZyBtZXNzeSBkdWUgdG8gZHJpdmVyIHNwZWNpZmljIGNhbGxiYWNrcyBuZWVkZWQgZm9yIGJ1ZmZlciBtYW5hZ2VtZW50LlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozODogKiBVbHRpbWF0ZWx5LCBpdCBwcm92ZWQgZWFzaWVyIHRvIGltcG9ydCB0aGUgdmttcyBjb2RlIGFzIGl0IG1vc3RseSB1c2VkIGNvcmVcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzktICogZHJtIGhlbHBlcnMgYW55d2F5LlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDEtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQyOnN0YXRpYyBjb25zdCB1MzIgYW1kZ3B1X3ZrbXNfZm9ybWF0c1tdID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00My1cdERSTV9GT1JNQVRfWFJHQjg4ODgsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00NS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBhbWRncHVfdmttc19jcnRjX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00Ny1cdC5zZXRfY29uZmlnICAgICAgICAgICAgID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU1LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1NjpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBhbWRncHVfdmttc19jcnRjX2hlbHBlcl9mdW5jcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTctXHREUk1fQ1JUQ19IRUxQRVJfVkJMQU5LX0ZVTkNTLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTktXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjYwOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNjEtXHRcdFx0ICBzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LCBzdHJ1Y3QgZHJtX3BsYW5lICpjdXJzb3IpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy02Ny1cdHJldCA9IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoZGV2LCBjcnRjLCBwcmltYXJ5LCBjdXJzb3IsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjY4Olx0XHRcdFx0XHRcdTAwMjZhbWRncHVfdmttc19jcnRjX2Z1bmNzLCBOVUxMKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNjktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy03My1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NzQ6XHRkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMsIFx1MDAyNmFtZGdwdV92a21zX2NydGNfaGVscGVyX2Z1bmNzKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNzUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy04NS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6ODY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGFtZGdwdV92a21zX2Nvbm5lY3Rvcl9mdW5jcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtODctXHQuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2Rlcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTkzLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo5NDpzdGF0aWMgaW50IGFtZGdwdV92a21zX2Nvbm5fZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTk1LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTEzOC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgYW1kZ3B1X3ZrbXNfY29ubl9oZWxwZXJfZnVuY3MgPSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjE0MDpcdC5nZXRfbW9kZXMgICAgPSBhbWRncHVfdmttc19jb25uX2dldF9tb2RlcyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTQxLX07XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTE0Mi1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGFtZGdwdV92a21zX3BsYW5lX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNDQtXHQudXBkYXRlX3BsYW5lXHRcdD0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTUxLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxNTI6c3RhdGljIHZvaWQgYW1kZ3B1X3ZrbXNfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTUzLVx0XHRcdFx0XHQgICAgc3RydWN0IGRybV9hdG9taWNfY29tbWl0ICpvbGRfc3RhdGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNTctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjE1ODpzdGF0aWMgaW50IGFtZGdwdV92a21zX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTU5LVx0XHRcdFx0XHQgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xODctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjE4ODpzdGF0aWMgaW50IGFtZGdwdV92a21zX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTE4OS1cdFx0XHRcdCAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjU3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyNTg6c3RhdGljIHZvaWQgYW1kZ3B1X3ZrbXNfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjU5LVx0XHRcdFx0ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjg1LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyODY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGFtZGdwdV92a21zX3ByaW1hcnlfaGVscGVyX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyODc6XHQuYXRvbWljX3VwZGF0ZVx0XHQ9IGFtZGdwdV92a21zX3BsYW5lX2F0b21pY191cGRhdGUsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI4ODpcdC5hdG9taWNfY2hlY2tcdFx0PSBhbWRncHVfdmttc19wbGFuZV9hdG9taWNfY2hlY2ssXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI4OTpcdC5wcmVwYXJlX2ZiXHRcdD0gYW1kZ3B1X3ZrbXNfcHJlcGFyZV9mYixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MjkwOlx0LmNsZWFudXBfZmJcdFx0PSBhbWRncHVfdmttc19jbGVhbnVwX2ZiLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0yOTEtfTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjkyLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyOTM6c3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmFtZGdwdV92a21zX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjk0LVx0XHRcdFx0XHRcdGVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMwNC1cdHJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChkZXYsIHBsYW5lLCAxIFx1MDAzY1x1MDAzYyBpbmRleCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzA1Olx0XHRcdFx0ICAgICAgIFx1MDAyNmFtZGdwdV92a21zX3BsYW5lX2Z1bmNzLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozMDY6XHRcdFx0XHQgICAgICAgYW1kZ3B1X3ZrbXNfZm9ybWF0cyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzA3Olx0XHRcdFx0ICAgICAgIEFSUkFZX1NJWkUoYW1kZ3B1X3ZrbXNfZm9ybWF0cyksXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMwOC1cdFx0XHRcdCAgICAgICBOVUxMLCB0eXBlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMxMy1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzE0Olx0ZHJtX3BsYW5lX2hlbHBlcl9hZGQocGxhbmUsIFx1MDAyNmFtZGdwdV92a21zX3ByaW1hcnlfaGVscGVyX2Z1bmNzKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzE1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM9MzE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZHJtX2VuY29kZXJfZnVuY3NfY2xlYW51cCA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMyMi1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzIzOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfb3V0cHV0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMyNDpcdFx0XHRcdCAgIGFtZGdwdV92a21zX291dHB1dCAqb3V0cHV0LCBpbnQgaW5kZXgpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMyNS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMzEtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMzMjpcdHByaW1hcnkgPSBhbWRncHVfdmttc19wbGFuZV9pbml0KGRldiwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwgaW5kZXgpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMzMtXHRpZiAoSVNfRVJSKHByaW1hcnkpKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzM1LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozMzY6XHRyZXQgPSBhbWRncHVfdmttc19jcnRjX2luaXQoZGV2LCBjcnRjLCBwcmltYXJ5LCBjdXJzb3IpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzM5LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozNDA6XHRyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IsIFx1MDAyNmFtZGdwdV92a21zX2Nvbm5lY3Rvcl9mdW5jcyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzQxLVx0XHRcdFx0IERSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFMKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM0Ni1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzQ3Olx0ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgXHUwMDI2YW1kZ3B1X3ZrbXNfY29ubl9oZWxwZXJfZnVuY3MpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNDgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zODItXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjM4Mzpjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGFtZGdwdV92a21zX21vZGVfZnVuY3MgPSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM4NC1cdC5mYl9jcmVhdGUgPSBhbWRncHVfZGlzcGxheV91c2VyX2ZyYW1lYnVmZmVyX2NyZWF0ZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM4OC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mzg5OnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfc3dfaW5pdChzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzkwLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM5My1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mzk0Olx0YWRldi1cdTAwM2VhbWRncHVfdmttc19vdXRwdXQgPSBremFsbG9jX29ianMoc3RydWN0IGFtZGdwdV92a21zX291dHB1dCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzk1LVx0XHRcdFx0XHRcdGFkZXYtXHUwMDNlbW9kZV9pbmZvLm51bV9jcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mzk2Olx0aWYgKCFhZGV2LVx1MDAzZWFtZGdwdV92a21zX291dHB1dClcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzk3LVx0XHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQwMC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDAxOlx0YWRldl90b19kcm0oYWRldiktXHUwMDNlbW9kZV9jb25maWcuZnVuY3MgPSBcdTAwMjZhbWRncHVfdmttc19tb2RlX2Z1bmNzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MDItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MTYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZGV2LVx1MDAzZW1vZGVfaW5mby5udW1fY3J0YzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDE3Olx0XHRyID0gYW1kZ3B1X3ZrbXNfb3V0cHV0X2luaXQoYWRldl90b19kcm0oYWRldiksIFx1MDAyNmFkZXYtXHUwMDNlYW1kZ3B1X3ZrbXNfb3V0cHV0W2ldLCBpKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDE4LVx0XHRpZiAocilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQzMS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDMyOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfc3dfZmluaShzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDMzLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ0MS1cdGRybV9lZGlkX2ZyZWUoYWRldi1cdTAwM2Vtb2RlX2luZm8uYmlvc19oYXJkY29kZWRfZWRpZCk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ0MjpcdGtmcmVlKGFkZXYtXHUwMDNlYW1kZ3B1X3ZrbXNfb3V0cHV0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDQzLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00NDUtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ0NjpzdGF0aWMgaW50IGFtZGdwdV92a21zX2h3X2luaXQoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ0Ny17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00ODMtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ4NDpzdGF0aWMgaW50IGFtZGdwdV92a21zX2h3X2Zpbmkoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ4NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00ODgtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ4OTpzdGF0aWMgaW50IGFtZGdwdV92a21zX3N1c3BlbmQoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ5MC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MDAtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUwMTpzdGF0aWMgaW50IGFtZGdwdV92a21zX3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTAyLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUwNC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTA1Olx0ciA9IGFtZGdwdV92a21zX2h3X2luaXQoaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MDYtXHRpZiAocilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUxMC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTExOnN0YXRpYyBib29sIGFtZGdwdV92a21zX2lzX2lkbGUoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUxMi17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MTUtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUxNjpzdGF0aWMgaW50IGFtZGdwdV92a21zX3NldF9jbG9ja2dhdGluZ19zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jayxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTE3LVx0XHRcdFx0XHQgIGVudW0gYW1kX2Nsb2NrZ2F0aW5nX3N0YXRlIHN0YXRlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTIxLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MjI6c3RhdGljIGludCBhbWRncHVfdmttc19zZXRfcG93ZXJnYXRpbmdfc3RhdGUoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2ssXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUyMy1cdFx0XHRcdFx0ICBlbnVtIGFtZF9wb3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUyNy1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNzIGFtZGdwdV92a21zX2lwX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1Mjk6XHQubmFtZSA9IFwmIzM0O2FtZGdwdV92a21zXCYjMzQ7LFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MzA6XHQuc3dfaW5pdCA9IGFtZGdwdV92a21zX3N3X2luaXQsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzMTpcdC5zd19maW5pID0gYW1kZ3B1X3ZrbXNfc3dfZmluaSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTMyOlx0Lmh3X2luaXQgPSBhbWRncHVfdmttc19od19pbml0LFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MzM6XHQuaHdfZmluaSA9IGFtZGdwdV92a21zX2h3X2ZpbmksXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzNDpcdC5zdXNwZW5kID0gYW1kZ3B1X3ZrbXNfc3VzcGVuZCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM1Olx0LnJlc3VtZSA9IGFtZGdwdV92a21zX3Jlc3VtZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM2Olx0LmlzX2lkbGUgPSBhbWRncHVfdmttc19pc19pZGxlLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1Mzc6XHQuc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlID0gYW1kZ3B1X3ZrbXNfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1Mzg6XHQuc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlID0gYW1kZ3B1X3ZrbXNfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MzktfTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTQwLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1NDE6Y29uc3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIGFtZGdwdV92a21zX2lwX2Jsb2NrID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01NDItXHQudHlwZSA9IEFNRF9JUF9CTE9DS19UWVBFX0RDRSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU0NS1cdC5yZXYgPSAwLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1NDY6XHQuZnVuY3MgPSBcdTAwMjZhbWRncHVfdmttc19pcF9mdW5jcyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTQ3LX07XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaC0xMS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmg6MTI6I2RlZmluZSBkcm1fY3J0Y190b19hbWRncHVfdmttc19vdXRwdXQodGFyZ2V0KSBcXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaDoxMzpcdGNvbnRhaW5lcl9vZih0YXJnZXQsIHN0cnVjdCBhbWRncHVfdmttc19vdXRwdXQsIGNydGMuYmFzZSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmgtMTQtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oOjE1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gYW1kZ3B1X3ZrbXNfaXBfYmxvY2s7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oLTE2LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaDoxNzpzdHJ1Y3QgYW1kZ3B1X3ZrbXNfb3V0cHV0IHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmgtMTgtXHRzdHJ1Y3QgYW1kZ3B1X2NydGMgY3J0Yztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy03My0jaW5jbHVkZSBcJiMzNDthbWRncHVfYW1ka2ZkLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jOjc0OiNpbmNsdWRlIFwmIzM0O2FtZGdwdV92a21zLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTc1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jPTIxODY9aW50IGNpa19zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIxOTYtXHRcdGlmIChhZGV2LVx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYzoyMTk3Olx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIxOTgtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtMjIxNC1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jOjIyMTU6XHRcdFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtMjIxNi0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy0yMjMyLVx0XHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmM6MjIzMzpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy0yMjM0LSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIyNTItXHRcdGlmIChhZGV2LVx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYzoyMjUzOlx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIyNTQtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbnYuYy02MS0jaW5jbHVkZSBcJiMzNDtqcGVnX3YzXzAuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbnYuYzo2MjojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9udi5jLTYzLSNpbmNsdWRlIFwmIzM0O214Z3B1X252LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTcyLSNpbmNsdWRlIFwmIzM0O2FtZGdwdV9kbS5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jOjczOiNpbmNsdWRlIFwmIzM0O2FtZGdwdV92a21zLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtNzQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYz0yNjg3PWludCBzaV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjY5OS1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmM6MjcwMDpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI3MDEtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDX1NJKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjcxNy1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmM6MjcxODpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI3MTktI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDX1NJKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjczNC1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmM6MjczNTpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI3MzYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NvYzE1LmMtNzUtI2luY2x1ZGUgXCYjMzQ7c211aW9fdjEzXzAuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc29jMTUuYzo3NjojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jLTc3LSNpbmNsdWRlIFwmIzM0O214Z3B1X2FpLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTc5LSNlbmRpZlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzo4MDojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTgxLSNpbmNsdWRlIFwmIzM0O214Z3B1X3ZpLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jPTIwNDg9aW50IHZpX3NldF9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDYxLVx0XHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMDYyOlx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjA2My1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDcxLVx0XHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMDcyOlx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjA3My0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIwOTEtXHRcdGlmIChhZGV2LVx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jOjIwOTI6XHRcdFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDkzLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjExNC1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmM6MjExNTpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIxMTYtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMTMwLVx0XHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMTMxOlx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjEzMi0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIxNDktXHRcdGlmIChhZGV2LVx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jOjIxNTA6XHRcdFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMTUxLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS9pZ3RfcnVubmVyLnNoPTI1PWNhc2UgXCYjMzQ7JERSSVZFUl9OQU1FXCYjMzQ7IGluXG5kcml2ZXJzL2dwdS9kcm0vY2kvaWd0X3J1bm5lci5zaDoyNjogICAgYW1kZ3B1fHZrbXN8cGFudGhvcilcbmRyaXZlcnMvZ3B1L2RybS9jaS9pZ3RfcnVubmVyLnNoLTI3LSAgICAgICAgIyBDYW5ub3QgdXNlIEhXQ0lfS0VSTkVMX01PRFVMRVMgYXMgYXQgdGhhdCBwb2ludCB3ZSBkb24mIzM5O3QgaGF2ZSB0aGUgbW9kdWxlIGluIC9saWJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWw9NDY5PXZpcnRpb19ncHU6bm9uZTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWwtNDc2LVxuZHJpdmVycy9ncHUvZHJtL2NpL3Rlc3QueW1sOjQ3Nzp2a21zOm5vbmU6XG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWwtNDc4LSAgZXh0ZW5kczpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWwtNDgwLSAgdmFyaWFibGVzOlxuZHJpdmVycy9ncHUvZHJtL2NpL3Rlc3QueW1sOjQ4MTogICAgRFJJVkVSX05BTUU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS90ZXN0LnltbC00ODItICAgIEdQVV9WRVJTSU9OOiBub25lXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDoxOiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0yLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTY9a21zX2N1cnNvcl9sZWdhY3lAbG9uZy1ub25ibG9ja2luZy1tb2Rlc2V0LXZzLWN1cnNvci1hdG9taWNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNy1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6ODojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtOS0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD0xMz1rbXNfZmxpcEBiYXNpYy1mbGlwLXZzLXdmX3ZibGFua1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xNC1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MTU6IyBCb2FyZCBOYW1lOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTE2LSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTIwPWttc19mbGlwQGZsaXAtdnMtZXhwaXJlZC12YmxhbmstaW50ZXJydXB0aWJsZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0yMS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MjI6IyBCb2FyZCBOYW1lOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTIzLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTI3PWttc19mbGlwQGZsaXAtdnMtd2ZfdmJsYW5rLWludGVycnVwdGlibGVcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMjgtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjI5OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0zMC0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD0zND1rbXNfZmxpcEBwbGFpbi1mbGlwLWZiLXJlY3JlYXRlLWludGVycnVwdGlibGVcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMzUtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjM2OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0zNy0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD00MT1rbXNfZmxpcEBwbGFpbi1mbGlwLXRzLWNoZWNrXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTQyLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo0MzojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNDQtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9NDg9a21zX2ZsaXBAcGxhaW4tZmxpcC10cy1jaGVjay1pbnRlcnJ1cHRpYmxlXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTQ5LVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo1MDojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNTEtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9NTU9a21zX2ZsaXBAZmxpcC12cy1hYnNvbHV0ZS13Zl92YmxhbmtcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNTYtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjU3OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC01OC0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD02Mj1rbXNfZmxpcEBmbGlwLXZzLWFic29sdXRlLXdmX3ZibGFuay1pbnRlcnJ1cHRpYmxlXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTYzLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo2NDojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNjUtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9Njk9a21zX2ZsaXBAZmxpcC12cy1ibG9ja2luZy13Zi12YmxhbmtcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNzAtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjcxOiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC03Mi0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD03Nj1rbXNfY3Vyc29yX2xlZ2FjeUBmbGlwLXZzLWN1cnNvci12YXJ5aW5nLXNpemVcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNzctXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojc4OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC03OS0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD04Mz1rbXNfZmxpcEBmbGlwLXZzLWV4cGlyZWQtdmJsYW5rXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTg0LVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo4NTojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtODYtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9OTA9a21zX3BpcGVfY3JjX2Jhc2ljQG5vbmJsb2NraW5nLWNyYy1mcmFtZS1zZXF1ZW5jZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC05MS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6OTI6IyBCb2FyZCBOYW1lOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTkzLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzIzNjRhNmJmLWU2YmMtNDc0MS04Yzc4LWNlYThiZGIwNmUwM0Bjb2xsYWJvcmEuY29tL1QvI3Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTk3PWttc19mbGlwQG1vZGVzZXQtdnMtdmJsYW5rLXJhY2VcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtOTgtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojk5OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMDAtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvZjdkNzJlZDktYTc4My00NmQ3LWI3NWQtNTQwNzJiZGEzMmEzQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MTA0PWttc19waXBlX2NyY19iYXNpY0BzdXNwZW5kLXJlYWQtY3JjXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTEwNS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MTA2OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMDctIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvOThkM2JhNTQtYmNiOS00MWFiLWFkYjEtYTE4YmE2MWVlMmU0QGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MTExPWttc19wbGFuZUBwbGFuZS1wYW5uaW5nLWJvdHRvbS1yaWdodC1zdXNwZW5kXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTExMi1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MTEzOiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMTQtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvYjU4ZDE1ZWItMDk0ZC00YWMyLWFhZDMtODNlNTE4YzJmNTVkQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxOiMga2VlcHMgcHJpbnRpbmcgdmttc192Ymxhbmtfc2ltdWxhdGU6IHZibGFuayB0aW1lciBvdmVycnVuIGFuZCBuZXZlciBlbmRzXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMi1rbXNfaW52YWxpZF9tb2RlQGludC1tYXgtY2xvY2tcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ9Nj1rbXNfY3Vyc29yX2NyYy4qXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEwLSMgSGFyZHdhcmUgbmFtZTogQ2hyb21pdW1PUyBjcm9zdm0sIEJJT1MgMFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjExOiMgV29ya3F1ZXVlOiB2a21zX2NvbXBvc2VyIHZrbXNfY29tcG9zZXJfd29ya2VyIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjEyOiMgUklQOiAwMDEwOmNvbXBvc2VfYWN0aXZlX3BsYW5lcyYjNDM7MHgxYzcvMHg0ZTAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTMtIyBDb2RlOiBjOSAwZiA4NCA2YSAwMSAwMCAwMCA4YiA0MiAzMCAyYiA0MiAyOCA0MSAzOSBjNSAwZiA4YyA2ZiAwMSAwMCAwMCA0OSA4MyBjNyAwMSA0OSAzOSBkZiA3NCAzYiA0YiA4YiAzNCBmYyA0OCA4YiA5NiA0OCAwMSAwMCAwMCBcdTAwM2M4Ylx1MDAzZSA0MiA3OCA4OSBjMSAuLi5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMjgtIyAgPyBhc21fZXhjX3BhZ2VfZmF1bHQmIzQzOzB4MjYvMHgzMFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjI5OiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDFjNy8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDozMDojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcyYjNDM7MHgyYTMvMHg0ZTAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMzEtIyAgPyBzcnNvX3JldHVybl90aHVuayYjNDM7MHg1LzB4NWZcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDozMjojICB2a21zX2NvbXBvc2VyX3dvcmtlciYjNDM7MHgyMDUvMHgyNDAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMzMtIyAgcHJvY2Vzc19vbmVfd29yayYjNDM7MHgxZjQvMHg2YjBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNDItIyAgXHUwMDNjL1RBU0tcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDo0MzojIE1vZHVsZXMgbGlua2VkIGluOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNDQtIyBDUjI6IDAwMDAwMDAwMDAwMDAwNzhcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC00NS0jIC0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjQ2OiMgUklQOiAwMDEwOmNvbXBvc2VfYWN0aXZlX3BsYW5lcyYjNDM7MHgxYzcvMHg0ZTAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNDctIyBDb2RlOiBjOSAwZiA4NCA2YSAwMSAwMCAwMCA4YiA0MiAzMCAyYiA0MiAyOCA0MSAzOSBjNSAwZiA4YyA2ZiAwMSAwMCAwMCA0OSA4MyBjNyAwMSA0OSAzOSBkZiA3NCAzYiA0YiA4YiAzNCBmYyA0OCA4YiA5NiA0OCAwMSAwMCAwMCBcdTAwM2M4Ylx1MDAzZSA0MiA3OCA4OSBjMSAuLi5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNjEtIyBIYXJkd2FyZSBuYW1lOiBDaHJvbWl1bU9TIGNyb3N2bSwgQklPUyAwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6NjI6IyBXb3JrcXVldWU6IHZrbXNfY29tcG9zZXIgdmttc19jb21wb3Nlcl93b3JrZXIgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6NjM6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDFjNy8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC02NC0jIENvZGU6IGM5IDBmIDg0IDZhIDAxIDAwIDAwIDhiIDQyIDMwIDJiIDQyIDI4IDQxIDM5IGM1IDBmIDhjIDZmIDAxIDAwIDAwIDQ5IDgzIGM3IDAxIDQ5IDM5IGRmIDc0IDNiIDRiIDhiIDM0IGZjIDQ4IDhiIDk2IDQ4IDAxIDAwIDAwIFx1MDAzYzhiXHUwMDNlIDQyIDc4IDg5IGMxIC4uLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC03OS0jICA/IGFzbV9leGNfcGFnZV9mYXVsdCYjNDM7MHgyNi8weDMwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6ODA6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MWM3LzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjgxOiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDJhMy8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC04Mi0jICA/IHNyc29fcmV0dXJuX3RodW5rJiM0MzsweDUvMHg1ZlxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjgzOiMgIHZrbXNfY29tcG9zZXJfd29ya2VyJiM0MzsweDIwNS8weDI0MCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC04NC0jICBwcm9jZXNzX29uZV93b3JrJiM0MzsweDFmNC8weDZiMFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05My0jICBcdTAwM2MvVEFTS1x1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0Ojk0OiMgTW9kdWxlcyBsaW5rZWQgaW46IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05NS0jIENSMjogMDAwMDAwMDAwMDAwMDA3OFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTk2LSMgLS0tWyBlbmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAwMCBdLS0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6OTc6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDFjNy8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05OC0jIENvZGU6IGM5IDBmIDg0IDZhIDAxIDAwIDAwIDhiIDQyIDMwIDJiIDQyIDI4IDQxIDM5IGM1IDBmIDhjIDZmIDAxIDAwIDAwIDQ5IDgzIGM3IDAxIDQ5IDM5IGRmIDc0IDNiIDRiIDhiIDM0IGZjIDQ4IDhiIDk2IDQ4IDAxIDAwIDAwIFx1MDAzYzhiXHUwMDNlIDQyIDc4IDg5IGMxIC4uLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xMTItIyBIYXJkd2FyZSBuYW1lOiBDaHJvbWl1bU9TIGNyb3N2bSwgQklPUyAwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTEzOiMgV29ya3F1ZXVlOiB2a21zX2NvbXBvc2VyIHZrbXNfY29tcG9zZXJfd29ya2VyIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjExNDojIFJJUDogMDAxMDpjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MzQ0LzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTExNS0jIENvZGU6IDZhIDM0IDBmIDhlIDkxIGZlIGZmIGZmIDQ0IDg5IGVhIDQ4IDhkIDdjIDI0IDQ4IGU4IDcxIGYwIGZmIGZmIDRiIDhiIDA0IGZjIDQ4IDhiIDRjIDI0IDUwIDQ4IDhiIDdjIDI0IDQwIDQ4IDhiIDgwIDQ4IDAxIDAwIDAwIFx1MDAzYzQ4XHUwMDNlIDYzIDcwIDE4IDhiLi4uXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEzMC0jICA/IGFzbV9leGNfcGFnZV9mYXVsdCYjNDM7MHgyNi8weDMwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTMxOiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDM0NC8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxMzI6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MzJmLzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEzMy0jICA/IHNyc29fcmV0dXJuX3RodW5rJiM0MzsweDUvMHg1ZlxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjEzNDojICB2a21zX2NvbXBvc2VyX3dvcmtlciYjNDM7MHgyMDUvMHgyNDAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTM1LSMgIHByb2Nlc3Nfb25lX3dvcmsmIzQzOzB4MjAxLzB4NmMwXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE0NC0jICBcdTAwM2MvVEFTS1x1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE0NTojIE1vZHVsZXMgbGlua2VkIGluOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ2LSMgQ1IyOiAwMDAwMDAwMDAwMDAwMDE4XG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ3LSMgLS0tWyBlbmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAwMCBdLS0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTQ4OiMgUklQOiAwMDEwOmNvbXBvc2VfYWN0aXZlX3BsYW5lcyYjNDM7MHgzNDQvMHg0ZTAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ5LSMgQ29kZTogNmEgMzQgMGYgOGUgOTEgZmUgZmYgZmYgNDQgODkgZWEgNDggOGQgN2MgMjQgNDggZTggNzEgZjAgZmYgZmYgNGIgOGIgMDQgZmMgNDggOGIgNGMgMjQgNTAgNDggOGIgN2MgMjQgNDAgNDggOGIgODAgNDggMDEgMDAgMDAgXHUwMDNjNDhcdTAwM2UgNjMgNzAgMTggOGIuLi5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ9MTYwPWttc19jdXJzb3JfZWRnZV93YWxrQDEyOHgxMjgtcmlnaHQtZWRnZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xNjMtIyBIYXJkd2FyZSBuYW1lOiBDaHJvbWl1bU9TIGNyb3N2bSwgQklPUyAwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTY0OiMgV29ya3F1ZXVlOiB2a21zX2NvbXBvc2VyIHZrbXNfY29tcG9zZXJfd29ya2VyIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE2NTojIFJJUDogMDAxMDpjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MzQ0LzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE2Ni0jIENvZGU6IDZhIDM0IDBmIDhlIDkxIGZlIGZmIGZmIDQ0IDg5IGVhIDQ4IDhkIDdjIDI0IDQ4IGU4IDcxIGYwIGZmIGZmIDRiIDhiIDA0IGZjIDQ4IDhiIDRjIDI0IDUwIDQ4IDhiIDdjIDI0IDQwIDQ4IDhiIDgwIDQ4IDAxIDAwIDAwIFx1MDAzYzQ4XHUwMDNlIDYzIDcwIDE4IDhiLi4uXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE4My0jICA/IGFzbV9leGNfcGFnZV9mYXVsdCYjNDM7MHgyNi8weDMwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTg0OiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDM0NC8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxODU6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MzJmLzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE4Ni0jICA/IHNyc29fcmV0dXJuX3RodW5rJiM0MzsweDUvMHg1ZlxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE4NzojICB2a21zX2NvbXBvc2VyX3dvcmtlciYjNDM7MHgyMDUvMHgyNDAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTg4LSMgIHByb2Nlc3Nfb25lX3dvcmsmIzQzOzB4MjAxLzB4NmMwXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE5Ny0jICBcdTAwM2MvVEFTS1x1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE5ODojIE1vZHVsZXMgbGlua2VkIGluOiB2a21zXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4ODcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIFZLTVMgRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCByZWFsbHkgdW5kZXJzdGFuZCB3aGF0IHRoZSBWaXJ0dWFsIEtNUyBkcml2ZXIsIGB2a21zX2Rydi5jYCwgYnJpbmdzIHRvIHRoZSB0YWJsZS4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgY2FwYWJpbGl0aWVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgb2YgY2hlY2tpbmcgb3V0IGBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jYCB0byBkbyBhIGRlZXAgZGl2ZSBhbmQgZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGUgZHJpdmVyJiMzOTtzIGZlYXR1cmUgc2V0LiBUaGlzIHdpbGwgaGVscCBpbmZvcm0gYSBiZXR0ZXIgYXJjaGl0ZWN0dXJhbCBwbGFuLiBTbywgSeKAmW0gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoaXMgdGhpbmcgKmFjdHVhbGx5KiBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkcml2ZXJfZmVhdHVyZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmttcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYz05Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgdmttc19kcml2ZXIgPSB7XG5kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jOjk0Olx0LmRyaXZlcl9mZWF0dXJlc1x0PSBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9BVE9NSUMgfCBEUklWRVJfR0VNLFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYy05NS1cdC5mb3BzXHRcdFx0PSBcdTAwMjZ2a21zX2RyaXZlcl9mb3BzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIyMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRGlnZ2luZyBpbnRvIFN5bmNocm9uaXphdGlvbiBPYmplY3RzKioKCkFscmlnaHQsIHNvIGB2a21zYCBpcyBnaXZpbmcgbWUgc29tZSB0cm91YmxlIHdpdGggYERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FYC4gVGhhdCYjMzk7cyBhIGJpdCB1bmV4cGVjdGVkLiBCdXQsIGhvbGQgb24gYSBtaW51dGUsIEkgc2VlbSB0byByZWNhbGwgdGhhdCBgdmlydGlvX2dwdWAgbWlnaHQgc3VwcG9ydCBpdC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQuIEhtbSwgbGV0IG1lIGp1c3Qgb3BlbiB0aGUgc291cmNlIHRyZWUuLi4KCk9rYXksIG5vdywgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYHZnZW1gIGp1c3QgaW4gY2FzZSBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmNgIGFuZCBzZWUgaWYgdGhlIHRpbWVsaW5lIHN1cHBvcnQgaXMgaW4gdGhlcmUsIG9yIGlmIEkgc2hvdWxkIGV2ZW4gZXhwZWN0IGl0IHRvIGJlLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2gsIEkgc3VwcG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJpdmVyX2ZlYXR1cmVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZnZW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmM9MTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciB2Z2VtX2RyaXZlciA9IHtcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmM6MTExOlx0LmRyaXZlcl9mZWF0dXJlc1x0XHQ9IERSSVZFUl9HRU0gfCBEUklWRVJfUkVOREVSLFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYy0xMTItXHQub3Blblx0XHRcdFx0PSB2Z2VtX29wZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNTk5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZpcnRpby1HUFUgYW5kIFN5bmNvYmo6IEEgU3l6a2FsbGVyIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB2aXJ0aW8tZ3B1LCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBpdHMgZHJpdmVyIGltcGxlbWVudGF0aW9uIChgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jYCkuIEl0JiMzOTtzIGEgc3RhbmRhcmQgdmlydGlvIGhhcmR3YXJlIGNvbXBvbmVudCB0aGF0JiMzOTtzIHdlbGwtc3VwcG9ydGVkIGluIFFFTVUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHNlZSBpdCYjMzk7cyBhIG1vZGVzZXR0aW5nIGRyaXZlciwgc3VwcG9ydHMgR0VNLCByZW5kZXJpbmcsIGF0b21pYyBvcGVyYXRpb25zLCBzeW5jIG9iamVjdHMsIHRpbWVsaW5lcyBhbmQgZXZlbiBjdXJzb3IgaG90IHNwb3RzLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBldmVudGZkYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBjb3JlIGZpbGVzeXN0ZW0gKGBmcy9ldmVudGZkLmNgKSwgd2l0aCBmdW5jdGlvbnMgbGlrZSBgZXZlbnRmZF9jdHhfcHV0YCBsaXZpbmcgdGhlcmUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBkb2VzIHN5emthbGxlciwgbXkgZ28tdG8gZnV6emluZyB0b29sLCBoYXZlIERSTSBpb2N0bHMgZW5hYmxlZD8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IHN1cHBvcnQgYERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkRgPwoKQSBxdWljayBjaGVjayBjb25maXJtcyBpdCEgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGRlc2NyaXB0aW9ucyBmb3IgYGRybV9zeW5jb2JqX2V2ZW50ZmRgIGluIGl0cyBgc3lzL2xpbnV4L2RybS50eHRgIGZpbGUuIFBlcmZlY3QhIEl0IGV2ZW4gaGFzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbjogYGlvY3RsJERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkQoZmQgZmRfZHJtLCBjbWQgY29uc3RbRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRF0sIGFyZyBwdHJbaW4sIGRybV9zeW5jb2JqX2V2ZW50ZmRdKWAuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIFdoYXQgY29uZmlndXJhdGlvbnMgYWN0dWFsbHkgZW5hYmxlIGBkcm1fc3luY29iai5jYD8gR290dGEgZGlnIHRocm91Z2ggdGhlIEtjb25maWcgZmlsZXMuIFRpbWUgdG8gZ3JlcCBmb3IgYGRybV9zeW5jb2JqLm9gIGluIHRoZSBgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlYCB0byBmaW5kIG91dC4gVGhpcyBpcyBhbGwgdmVyeSBwcm9taXNpbmcgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9zeW5jb2JqXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MzU9ZHJtLXkgOj0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNjgtXHRkcm1fcmVjdC5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6Njk6XHRkcm1fc3luY29iai5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNzAtXHRkcm1fc3lzZnMubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM5MwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgSW5xdWlyeTogRFJNIFN5bmMgT2JqZWN0cyBhbmQgRXZlbnRGRCoqCgpPa2F5LCBzbyBgZHJtX3N5bmNvYmoub2AgaXMgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIgKERSTSkgZWNvc3lzdGVtIOKAkyBidWlsdCBpbiB3aGVuZXZlciBgQ09ORklHX0RSTWAgaXMgdHVybmVkIG9uLCB3aGljaCBpcyBnb29kIHRvIHJlbWVtYmVyIGZvciBmdXR1cmUgZGVidWdnaW5nLiBJdCYjMzk7cyBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5LCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBrZXkuIEFuZCwgdG8gYmUgc3BlY2lmaWMsIGB2aXJ0aW8tZ3B1YCYjMzk7cyBpbmNsdXNpb24gaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0RSTV9WSVJUSU9fR1BVYCwgc28gSSYjMzk7bGwga2VlcCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluIG1pbmQuCgpOb3csIG15IGN1cnJlbnQgZm9jdXMgaXMgb24gYGZzL2V2ZW50ZmQuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgaXMgYW4gb3ZlcmxhcCBpbiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBmcy9NYWtlZmlsZWAgdG8gc2VlIGhvdyBgZXZlbnRmZC5vYCBpcyBoYW5kbGVkIGF0IGJ1aWxkIHRpbWUuIEEgcXVpY2sgZ3JlcCBzaG91bGQgcmV2ZWFsIGFueSByZWxldmFudCBydWxlcyBvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlc2Ugb3RoZXIgRFJNIGNvbXBvbmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2ZW50ZmRcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvTWFrZWZpbGU9Mjg9b2JqLSQoQ09ORklHX1RJTUVSRkQpXHRcdCYjNDM7PSB0aW1lcmZkLm9cbmZzL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19FVkVOVEZEKVx0XHQmIzQzOz0gZXZlbnRmZC5vXG5mcy9NYWtlZmlsZS0zMC1vYmotJChDT05GSUdfQUlPKSAgICAgICAgICAgICAgICYjNDM7PSBhaW8ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTc2OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIFZpcnR1YWxpemVkIEdyYXBoaWNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBncmFwaGljcyBhbmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGV2ZW50ZmQgYW5kIERSTSBhcmUgaW50ZWdyYXRlZCwgZ2l2ZW4gdGhlaXIgaW1wb3J0YW5jZSBpbiBtb2Rlcm4gZ3JhcGhpY3Mgc3RhY2tzLiBJIHdhbnQgdG8gZGVsdmUgaW50byB0aGlzIGludGVyYWN0aW9uIGZ1cnRoZXIuCgpJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgYENPTkZJR19EUk1fVklSVElPX0dQVWAgb3B0aW9uLiBUaGlzIHNlZW1zIGxpa2UgdGhlIGtleSB0byB2aXJ0dWFsaXplZCBncmFwaGljcyB0aHJvdWdoIHRoZSB2aXJ0aW8gaW50ZXJmYWNlLiBUbyB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMsIEkmIzM5O2xsIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIEtjb25maWcgZmlsZSBub3cuIFRoaXMgd2lsbCBsaWtlbHkgc2hvdyBtZSB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgYENPTkZJR19EUk1fVklSVElPX0dQVWAsIHdoaWNoIGZlYXR1cmVzIGNhbiBiZSBlbmFibGVkLCBhbmQgaG93IGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHZpcnRpby1iYXNlZCB2aXJ0dWFsaXplZCBHUFVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBEUk1fVklSVElPX0dQVVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydGlvIEdQVSBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBWSVJUSU9fTUVOVSBcdTAwMjZcdTAwMjYgTU1VXG4gICA1Olx0XHRzZWxlY3QgVklSVElPXG4gICA2Olx0XHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbiAgIDc6XHRcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuICAgODpcdFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG4gICA5Olx0XHRzZWxlY3QgVklSVElPX0RNQV9TSEFSRURfQlVGRkVSXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgICBUaGlzIGlzIHRoZSB2aXJ0dWFsIEdQVSBkcml2ZXIgZm9yIHZpcnRpby4gIEl0IGNhbiBiZSB1c2VkIHdpdGhcbiAgMTI6XHRcdCAgIFFFTVUgYmFzZWQgVk1NcyAobGlrZSBLVk0gb3IgWGVuKS5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgIElmIHVuc3VyZSBzYXkgTS5cbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgRFJNX1ZJUlRJT19HUFVfS01TXG4gIDE3Olx0XHRib29sIFwmIzM0O1ZpcnRpbyBHUFUgZHJpdmVyIG1vZGVzZXR0aW5nIHN1cHBvcnRcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gRFJNX1ZJUlRJT19HUFVcbiAgMTk6XHRcdGRlZmF1bHQgeVxuICAyMDpcdFx0aGVscFxuICAyMTpcdFx0ICAgRW5hYmxlIG1vZGVzZXR0aW5nIHN1cHBvcnQgZm9yIHZpcnRpbyBHUFUgZHJpdmVyLiAgVGhpcyBjYW4gYmVcbiAgMjI6XHRcdCAgIGRpc2FibGVkIGluIGNhc2VzIHdoZXJlIG9ubHkgXCYjMzQ7aGVhZGxlc3NcJiMzNDsgdXNhZ2Ugb2YgdGhlIEdQVSBpc1xuICAyMzpcdFx0ICAgcmVxdWlyZWQuXG4gIDI0Olx0XG4gIDI1Olx0XHQgICBJZiB1bnN1cmUsIHNheSBZLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjQxMAoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGYsIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEVWRU5URkQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBDT05GSUdfRVZFTlRGRGAgc2l0dWF0aW9uLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGNvbmZpcm0gd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCBhbmQgd2hhdCBjb250ZXh0IGl0JiMzOTtzIGluLiBMZXQmIzM5O3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIG9idmlvdXMgbG9jYXRpb246IHRoZSBgZnMvS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gdGhlIG5hbWUsIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgaXQmIzM5O3MgYSBmaWxlc3lzdGVtLXJlbGF0ZWQgZmVhdHVyZS4gTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBjb3ZlciBhbGwgYmFzZXMgaW4gdGhlIGluaXRpYWwgc2NvcGluZywgSSYjMzk7bGwgcXVpY2tseSBncmVwIGFjcm9zcyBgaW5pdC9LY29uZmlnYCB0b28sIGp1c3QgaW4gY2FzZSBpdCYjMzk7cyBkZWNsYXJlZCB0aGVyZS4gR3JhYmJpbmcgYSBzaW1wbGUgc2VhcmNoIHRlcm0gbGlrZSBgY29uZmlnIEVWRU5URkRgIHNob3VsZCB5aWVsZCB0aGUgcHJlY2lzZSBkZWZpbml0aW9uIGluIGVpdGhlciBmaWxlLiBJJiMzOTttIGFpbWluZyBmb3IgYSBxdWljayBhbmQgdGFyZ2V0ZWQgc2NhbiB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVWRU5URkQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTE5MjM9Y29uZmlnIFRJTUVSRkRcbi0tXG5pbml0L0tjb25maWctMTkzMS1cbmluaXQvS2NvbmZpZzoxOTMyOmNvbmZpZyBFVkVOVEZEXG5pbml0L0tjb25maWctMTkzMy1cdGJvb2wgXCYjMzQ7RW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFwmIzM0OyBpZiBFWFBFUlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MzAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczoKCioqS2NvbmZpZyBEaXZlOiBJbnZlc3RpZ2F0aW5nIGEgU3BlY2lmaWMgWWVhcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCAmIzM0O1doZXJlIHNob3VsZCBJIHN0YXJ0IGxvb2tpbmcgdG8gdW5kZXJzdGFuZCBvciBhZGRyZXNzIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSB5ZWFyIDE5MzIgd2l0aGluIHRoaXMgY29udGV4dD8mIzM0OyBNeSBndXQgcmVhY3Rpb24gaXMgdG8gY2hlY2sgdGhlIGBpbml0L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZ28tdG8gcGxhY2UgZm9yIGNvcmUgc3lzdGVtIGNvbmZpZ3VyYXRpb24gYW5kIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBidWlsZCBzeXN0ZW0uIExldCYjMzk7cyBzZWUgaWYgMTkzMiBpcyBkZWZpbmVkIHRoZXJlLCBvciBpZiB0aGVyZSYjMzk7cyBhbnkgaW5kaWNhdGlvbiBvZiBpdHMgcmVsZXZhbmNlIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIGZpcnN0IHN0ZXAgd2hlbiBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTkzMDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuMTkzMTpcdFxuMTkzMjpcdGNvbmZpZyBFVkVOVEZEXG4xOTMzOlx0XHRib29sIFwmIzM0O0VuYWJsZSBldmVudGZkKCkgc3lzdGVtIGNhbGxcJiMzNDsgaWYgRVhQRVJUXG4xOTM0Olx0XHRkZWZhdWx0IHlcbjE5MzU6XHRcdGhlbHBcbjE5MzY6XHRcdCAgRW5hYmxlIHRoZSBldmVudGZkKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gcmVjZWl2ZSBib3RoXG4xOTM3Olx0XHQgIGtlcm5lbCBub3RpZmljYXRpb24gKGllLiBLQUlPKSBvciB1c2Vyc3BhY2Ugbm90aWZpY2F0aW9ucy5cbjE5Mzg6XHRcbjE5Mzk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbjE5NDA6XHRcbjE5NDE6XHRjb25maWcgU0hNRU1cbjE5NDI6XHRcdGJvb2wgXCYjMzQ7VXNlIGZ1bGwgc2htZW0gZmlsZXN5c3RlbVwmIzM0OyBpZiBFWFBFUlRcbjE5NDM6XHRcdGRlZmF1bHQgeVxuMTk0NDpcdFx0ZGVwZW5kcyBvbiBNTVVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxMTcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZ1bmN0aW9uIENhbGwgU2NvcGUgZm9yIEZ1enppbmcgUHJpb3JpdGl6YXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBldmVudGZkcyAoYENPTkZJR19FVkVOVEZEYCksIERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlciAoYENPTkZJR19EUk1gKSwgYW5kIHNwZWNpZmljYWxseSB0aGUgVmlydElPIEdQVSBpbiBEUk0gKGBDT05GSUdfRFJNX1ZJUlRJT19HUFVgKS4gVGhlIHRhc2sgaXMgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBjaGFuZ2VzLiBJIHNlZSB0d28gZnVuY3Rpb25zIHdlcmUgbW9kaWZpZWQ6IGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBpbiBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YCBpbiBgZnMvZXZlbnRmZC5jYC4KCk5vdywgdGhlIHJlZCBmbGFnIGdvZXMgdXAuIFRoZSBkb2N1bWVudGF0aW9uIHdhcm5zIGFnYWluc3QgbGlzdGluZyAmIzM0O3ViaXF1aXRvdXMgbGlmZWN5Y2xlIGhvdC1wYXRocy4mIzM0OyBJIGhhdmUgdG8gYXNrIG15c2VsZjogSXMgYGV2ZW50ZmRfY3R4X3B1dGAgdWJpcXVpdG91cz8gSXQmIzM5O3MgY2FsbGVkIHdoZW4gYW4gZXZlbnRmZCBjb250ZXh0IGlzIGNsb3NlZCBvciByZWxlYXNlZCwgc28gbm8sIGl0JiMzOTtzIHByZXR0eSBzcGVjaWZpYy4gSXQmIzM5O3Mgbm90IG1lbW9yeSBhbGxvY2F0aW9uLCBhIHBhZ2UgZmF1bHQgaGFuZGxlciwgb3IgY29yZSBzeW5jaHJvbml6YXRpb24uCgpCdXQsIGFuZCB0aGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCwgY291bGQgaXQgYmUgY2FsbGVkIGJ5ICphbG1vc3QgZXZlcnkgcHJvZ3JhbSogaW4gdGhlIGNvcnB1cz8gTm8sIGl0JiMzOTtzIG9ubHkgcHJvZ3JhbXMgdGhhdCB1c2UgZXZlbnRmZCwgc3VjaCBhcyBLVk0sIGlvX3VyaW5nIGV2ZW50ZmQsIHZob3N0LCBEUk0gc3luY29iaiBldmVudGZkLCBldGMuIFNvIHdlJiMzOTtyZSBpbiB0aGUgY2xlYXIgdGhlcmUuCgpXaGF0IGFib3V0IGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYD8gSXQmIzM5O3MgdGhlIGV4YWN0IGVudHJ5cG9pbnQgZnVuY3Rpb24gdGhhdCYjMzk7cyBiZWVuIG1vZGlmaWVkISBQZXJmZWN0LCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSB0YXJnZXQuCgpDYW4gSSBpbmNsdWRlIGBldmVudGZkX2N0eF9wdXRgIGFzIHdlbGw/IExldCYjMzk7cyBjaGVjayB0aGUgZ3VpZGFuY2U6ICYjMzQ7TGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LiYjMzQ7IEJpbmdvLCB0aGUgcGF0Y2ggbW9kaWZpZXMgKmJvdGgqIGBldmVudGZkX2N0eF9wdXRgIGFuZCBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAuIFNvLCB0aGV5IGJvdGggZml0IHRoZSBkZXNjcmlwdGlvbi4KClRoZXNlIGFyZW4mIzM5O3Qgc3RhdGljIGZ1bmN0aW9ucywgdGhleSB3ZXJlIG1vZGlmaWVkLCBhbmQgbm90IHViaXF1aXRvdXMuIExldCYjMzk7cyBtYWtlIHN1cmUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGlzIG5vbi1zdGF0aWM6IEkgY2FuIHNlZSBpdCYjMzk7cyBleHBvc2VkIHZpYSBgZHJtX2lvY3Rsc2AgYW5kIGBldmVudGZkX2N0eF9wdXRgIGlzIGBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpYC4gR29vZC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgaGF2ZSB0byBjaGVjayBmb3Igb3RoZXIgY2hhbmdlZCBmdW5jdGlvbnMuIEkgc2VlIGBERUZJTkVfRlJFRWAgaW4gYGluY2x1ZGUvbGludXgvZXZlbnRmZC5oYCB3aXRoIGBldmVudGZkX2N0eF9wdXRgLiBUaGlzIGlzIGRlZmluaW5nIGEgY2xlYW51cCBmdW5jdGlvbiBzdWNoIGFzIGBmcmVlX2V2ZW50ZmRgIG9yIGBjbGFzc19ldmVudGZkX2Rlc3RydWN0b3JgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBgREVGSU5FX0ZSRUVgIGlzIHVzZWQuIEkmIzM5O2xsIGNoZWNrIGBpbmNsdWRlL2xpbnV4L2NsZWFudXAuaGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgREVGSU5FX0ZSRUUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL3hmc190cmFjZS5oPTMxMTU9REVDTEFSRV9FVkVOVF9DTEFTUyh4ZnNfZnJlZV9leHRlbnRfZGVmZXJyZWRfY2xhc3MsXG4tLVxuZnMveGZzL3hmc190cmFjZS5oLTMxNDItKTtcbmZzL3hmcy94ZnNfdHJhY2UuaDozMTQzOiNkZWZpbmUgREVGSU5FX0ZSRUVfRVhURU5UX0RFRkVSUkVEX0VWRU5UKG5hbWUpIFxcXG5mcy94ZnMveGZzX3RyYWNlLmgtMzE0NC1ERUZJTkVfRVZFTlQoeGZzX2ZyZWVfZXh0ZW50X2RlZmVycmVkX2NsYXNzLCBuYW1lLCBcXFxuLS1cbmZzL3hmcy94ZnNfdHJhY2UuaD01ODk3PURFQ0xBUkVfRVZFTlRfQ0xBU1MoeGZzX2ZyZWVibG9ja3NfcmVzdl9jbGFzcyxcbi0tXG5mcy94ZnMveGZzX3RyYWNlLmgtNTkyNC0pXG5mcy94ZnMveGZzX3RyYWNlLmg6NTkyNTojZGVmaW5lIERFRklORV9GUkVFQkxPQ0tTX1JFU1ZfRVZFTlQobmFtZSkgXFxcbmZzL3hmcy94ZnNfdHJhY2UuaC01OTI2LURFRklORV9FVkVOVCh4ZnNfZnJlZWJsb2Nrc19yZXN2X2NsYXNzLCBuYW1lLCBcXFxuLS1cbmluY2x1ZGUvbGludXgvY2xlYW51cC5oLTIwOS1cbmluY2x1ZGUvbGludXgvY2xlYW51cC5oOjIxMDojZGVmaW5lIERFRklORV9GUkVFKF9uYW1lLCBfdHlwZSwgX2ZyZWUpIFxcXG5pbmNsdWRlL2xpbnV4L2NsZWFudXAuaC0yMTEtXHRzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgX19mcmVlXyMjX25hbWUodm9pZCAqcCkgeyBfdHlwZSBfVCA9ICooX3R5cGUgKilwOyBfZnJlZTsgfVxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RtYS5oPTIwNj1ERUNMQVJFX0VWRU5UX0NMQVNTKGRtYV9mcmVlX2NsYXNzLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RtYS5oLTIzNy1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RtYS5oOjIzODojZGVmaW5lIERFRklORV9GUkVFX0VWRU5UKG5hbWUpIFxcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kbWEuaC0yMzktREVGSU5FX0VWRU5UKGRtYV9mcmVlX2NsYXNzLCBuYW1lLCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDkzMgoJCQkJCQkJb3V0cHV0OiAyMDcKCQkJCQkJCXRob3VnaHRzOiA4NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGZ1enppbmcgcHVycG9zZXMuIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaW52b2x2ZXMgYERFRklORV9GUkVFYCwgd2hpY2ggZXhwYW5kcyB0byBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24sIG1lYW5pbmcgaXQmIzM5O3Mgbm90IGEgc3RhbmRhbG9uZSBzeW1ib2wgaW4gdm1saW51eC4gQ3J1Y2lhbGx5LCB0aGUgY2FsbGVyIGluIHRoaXMgc3BlY2lmaWMgaW5zdGFuY2UgaXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLgoKRmlyc3QsIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSwgZXhlY3V0YWJsZSBjb2RlLCBzbyB0aGF0IGlzIG91ciBjcml0ZXJpYS4gVGhlIHN0YXRlZCBnb2FscyBmb3IgcGF0Y2ggZnV6emluZyBhcmUgdG8gZmluZCBidWdzLCByZWdyZXNzaW9ucywgYW5kIHN1Y2guIFRoZSBwcmltYXJ5IGh1cmRsZSBpcyByZWFjaGFiaWxpdHkuIFRoaXMgY29kZSBpcyBpbmRlZWQgcmVhY2hhYmxlLiBXZSBzaG91bGQgbmV2ZXIgYmxpbmRseSB0cnVzdCBjbGFpbXMgb2YgJiMzNDtubyBmdW5jdGlvbmFsIGNoYW5nZSYjMzQ7IG9yIHJlZmFjdG9yaW5nOyBsZXQmIzM5O3MgZGlnIGRlZXBlci4KClRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSBpbiBgZnMvZXZlbnRmZC5jYCAoVkZTL3N5c2NhbGwgbGV2ZWwpIGFuZCBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgIChEUk0gc3luY29iaiBpb2N0bCkuICBUaGUgYGV2ZW50ZmRfY3R4X3B1dCgpYCBmdW5jdGlvbiBoYXMgYmVlbiBtb2RpZmllZCB0byBoYW5kbGUgYElTX0VSUl9PUl9OVUxMKGN0eClgLCB3aGljaCBjb3VsZCBleHBvc2UgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBlcnJvciBoYW5kbGluZyBpc3N1ZXMsIG9yIG1lbW9yeSBpc3N1ZXMgaW4gdGhlIGNhc2UgdGhlIGNsZWFudXAgaXNuJiMzOTt0IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgRFJNIHN5bmNvYmogaW9jdGwgaXMgcmVhY2hhYmxlIHZpYSBEUk0gZGV2aWNlcyBzdXBwb3J0aW5nIHN5bmNvYmogdGltZWxpbmVzLCBzcGVjaWZpY2FsbHkgdmlydGlvLWdwdSBpbiBRRU1VLiAgVGhpcyByZWZhY3RvcmluZyB1c2VzIGEgY2xlYW51cC5oIFJBSUksIHNwZWNpZmljYWxseSBgX19mcmVlKGV2ZW50ZmQpYC4gSXQmIzM5O3MgYSBjb21iaW5hdGlvbiBvZiBhIGNvcmUgc3Vic3lzdGVtIChldmVudGZkKSBhbmQgYSByZWFjaGFibGUgZHJpdmVyIGZyYW1ld29yayAoRFJNIHN5bmNvYmogLyB2aXJ0aW8tZ3B1KS4gU2luY2UgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgd2UgY29uc2lkZXIgaXQgdG8gYmUgd29ydGggZnV6emluZy4KCk5leHQsIHdlIGNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBXZSBuZWVkIGBFVkVOVEZEYCB0byBlbmFibGUgdGhlIGBmcy9ldmVudGZkLmNgIGNvZGUsIGBEUk1gIHRvIGVuYWJsZSB0aGUgRFJNIHN1YnN5c3RlbSwgYW5kIGBEUk1fVklSVElPX0dQVWAgd2hpY2ggYWxsb3dzIHRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24gdG8gYmUgZXhlcmNpc2VkIHRocm91Z2ggdmlydGlvLWdwdSBpbiBRRU1VLiBUaGVzZSBhcmUgYWxsIGJvb2xlYW4gY29uZmlncywgZGVmaW5lZCBhcHByb3ByaWF0ZWx5IGluIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBmaWxlcy4KClRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YC4gVGhlc2UgYXJlIHRoZSBvbmx5IHR3byBDIGZ1bmN0aW9ucyBkaXJlY3RseSB0b3VjaGVkIGJ5IHRoZSBjaGFuZ2VzLgoKVGhlcmVmb3JlLCB0aGUgcGFyYW1ldGVycyBmb3IgYHNldC1yZXN1bHRzYCBzaG91bGQgYmU6CgoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgWyYjMzQ7RFJNJiMzNDssICYjMzQ7RFJNX1ZJUlRJT19HUFUmIzM0OywgJiMzNDtFVkVOVEZEJiMzNDtdYAoqICAgYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDtkcm1fc3luY29ial9ldmVudGZkX2lvY3RsJiMzNDssICYjMzQ7ZXZlbnRmZF9jdHhfcHV0JiMzNDtdYAoqICAgYFJlYXNvbmluZ2A6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiBib3RoIGEgY29yZSBmaWxlc3lzdGVtIGNvbXBvbmVudCAoZXZlbnRmZCkgYW5kIGEgZHJpdmVyIGZyYW1ld29yayAoRFJNIHN5bmNvYmopLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgdmlydGlvLWdwdSBkcml2ZXIgd2l0aGluIFFFTVUuIFRoaXMgaXMgYSByZWZhY3RvcmluZywgaW50cm9kdWNpbmcgUkFJSSBjbGVhbnVwIHdoaWNoIGhhbmRsZXMgdGhlIGBfX2ZyZWVgIGxvZ2ljIHRvIHRoZSBldmVudGZkLCB3aGljaCBjb3VsZCBleHBvc2UgZXJyb3JzIGR1ZSB0byBpbmNvcnJlY3RseSBoYW5kbGVkIG51bGwgb3IgZXJyb3IgY29uZGl0aW9ucyBvciBtZW1vcnkgY29ycnVwdGlvbi4KKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWAKCkFscmlnaHQsIHRoYXQgY292ZXJzIGFsbCB0aGUgYmFzZXMuIEkgdGhpbmsgd2UmIzM5O3JlIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fVklSVElPX0dQVSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNJiMzNDssCiAgICAmIzM0O0RSTV9WSVJUSU9fR1BVJiMzNDssCiAgICAmIzM0O0VWRU5URkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcm1fc3luY29ial9ldmVudGZkX2lvY3RsJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfY3R4X3B1dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIGV2ZW50ZmRfY3R4X3B1dCgpIGluIGZzL2V2ZW50ZmQuYyB0byBzYWZlbHkgaGFuZGxlIElTX0VSUl9PUl9OVUxMIHBvaW50ZXJzIGFuZCBpbnRyb2R1Y2VzIHRoZSBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pIHNjb3BlZCBjbGVhbnVwIGhlbHBlciwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIHJlZmFjdG9yIHJlc291cmNlIHJlbGVhc2UgYW5kIGVycm9yIHBhdGhzIGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0YWJsZSBhbmQgZnVsbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2aXJ0aW8tZ3B1IGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzICh3aGljaCBzdXBwb3J0cyBEUklWRVJfU1lOQ09CSl9USU1FTElORSkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBjbGVhbnVwIGF0dHJpYnV0ZSBoYW5kbGluZyBhbmQgbmV3IE5VTEwvRVJSIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZmVyZW5jZSBsZWFrcywgZG91YmxlIHB1dHMsIG9yIG90aGVyIHJlZ3Jlc3Npb25zIHVuZGVyIGVycm9yIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT44bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxuXG5UaGVzZSBjaGFuZ2VzIGNvbmNlcm4gcG9pbnRlciBsaWZldGltZSBhbmQgcmVzb3VyY2UgZGVhbGxvY2F0aW9uLiBUaGUgbG9jYWwgcG9pbnRlciBgZXZfZmRfY3R4YCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBOVUxMYCwgYW5kIHRoZSBoZWFwIGFsbG9jYXRpb24gYGVudHJ5YCBjb250aW51ZXMgdG8gYmUgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iaigpYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgYnl0ZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIGFsdGVyZWQuIEFueSBwb3RlbnRpYWwgYnVncyB3b3VsZCByZWxhdGUgdG8gcmVmZXJlbmNlIGNvdW50aW5nLCByZXNvdXJjZSBsZWFrcywgb3IgcG9pbnRlciBjbGVhbnVwLCB3aGljaCBmYWxsIHVuZGVyIHN0YW5kYXJkIEtBU0FOL3JlZmNvdW50IHRyYWNraW5nIHJhdGhlciB0aGFuIEtNU0FOIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGRldGVjdGlvbi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM1ZGY0M2JlM2ViYzIxZGU0ODljNTU5OWNjYTgzYmZiYjRjZDg3OGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAxNDoyMzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKaW5kZXggYzIzYTVkZTI3ZWZmYS4uZWZjNGU4YWYyMjBjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKQEAgLTE0NjIsOSAmIzQzOzE0NjIsOSBAQCBpbnQKIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCiB7CiYjNDM7CXN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7CiAJc3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajsKLQlzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eDsKIAlzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTsKIAlpbnQgcmV0OwogCkBAIC0xNDkwLDEwICYjNDM7MTQ5MCwxMCBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpOwogCWlmICghZW50cnkpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBlcnJfa3phbGxvYzsKJiM0MzsJCWdvdG8gZXJyX2ZkZ2V0OwogCX0KIAllbnRyeS0mZ3Q7c3luY29iaiA9IHN5bmNvYmo7Ci0JZW50cnktJmd0O2V2X2ZkX2N0eCA9IGV2X2ZkX2N0eDsKJiM0MzsJZW50cnktJmd0O2V2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7CiAJZW50cnktJmd0O3BvaW50ID0gYXJncy0mZ3Q7cG9pbnQ7CiAJZW50cnktJmd0O2ZsYWdzID0gYXJncy0mZ3Q7ZmxhZ3M7CiAKQEAgLTE1MDIsOCAmIzQzOzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlyZXR1cm4gMDsKIAotZXJyX2t6YWxsb2M6Ci0JZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7CiBlcnJfZmRnZXQ6CiAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmMKaW5kZXggOWQzM2EwMjc1N2Q1Mi4uMWNkMTc0MWI4MWIxNyAxMDA2NDQKLS0tIGEvZnMvZXZlbnRmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuYwpAQCAtMTAyLDYgJiM0MzsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAgKi8KIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogewomIzQzOwlpZiAoSVNfRVJSX09SX05VTEwoY3R4KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlrcmVmX3B1dCgmYW1wO2N0eC0mZ3Q7a3JlZiwgZXZlbnRmZF9mcmVlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCmluZGV4IGUzMmJlZTQzNDVmYjkuLjY4OTM1OGMyYjBhZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2RlZmluZSBfTElOVVhfRVZFTlRGRF9ICiAKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NsZWFudXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUtZGVmcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwpAQCAtODksNSAmIzQzOzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogCWV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTsKIH0KIAomIzQzO0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKQomIzQzOwogI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDk5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIGNoYW5nZXMgdG8gYGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jYCwgYGZzL2V2ZW50ZmQuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBoYW5kbGluZyBldmVudCBmaWxlIGRlc2NyaXB0b3JzIGluIHRoZSBjb250ZXh0IG9mIERSTSBzeW5jIG9iamVjdHMuIEkmIzM5O2xsIG5lZWQgdG8gcGFyc2UgdGhlIGRpZmYgdG8gYXNjZXJ0YWluIHRoZSBzcGVjaWZpY3MuCgpGaXJzdCB0aGluZyBJIG5vdGljZSBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgYSBuZXcgbG9jYWwgdmFyaWFibGUgZGVjbGFyYXRpb246IGBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO2AuICBBaCwgdGhleSYjMzk7cmUgdXNpbmcgYSBjbGVhbnVwIGhhbmRsZXIsIGBfX2ZyZWUoZXZlbnRmZClgLiBUaGlzIGlzIGludGVyZXN0aW5nOyB0aGV5JiMzOTtyZSBhc3NvY2lhdGluZyB0aGUgYGV2ZW50ZmRfY3R4X3B1dGAgZnVuY3Rpb24gd2l0aCB0aGUgdmFyaWFibGUsIGFuZCB0aGUgY2xlYW51cCB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSB2YXJpYWJsZSBnb2VzIG91dCBvZiBzY29wZSwgb3Igd2hlbiBgbm9fZnJlZV9wdHIoKWAgaXMgY2FsbGVkIG9uIGl0LgoKUHJldmlvdXNseSwgYGV2X2ZkX2N0eGAgd2FzIGRlY2xhcmVkIGFuZCBpbml0aWFsaXplZCBzZXBhcmF0ZWx5LCBhbmQgdGhlIGZ1bmN0aW9uJiMzOTtzIGVycm9yIGhhbmRsaW5nIHVzZWQgYGV2ZW50ZmRfY3R4X3B1dGAgd2hlbiBhbiBlcnJvciBvY2N1cnJlZCwgbGlrZWx5IHRvIGZyZWUgdGhlIGV2ZW50ZmQgY29udGV4dC4gVGhpcyBwYXR0ZXJuIGlzIGZhaXJseSBjb21tb24sIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gTm93LCBpdCBzZWVtcyBsaWtlIHRoZSBjbGVhbnVwIGlzIGludGVncmF0ZWQsIG1ha2luZyB0aGUgY29kZSBtb3JlIHJvYnVzdCBhbmQgcG90ZW50aWFsbHkgc2ltcGxlci4KCkZ1cnRoZXIgZG93biwgdGhlIGNvZGUgbm93IHVzZXMgYG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eClgIHdoZW4gYXNzaWduaW5nIGl0IHRvIGBlbnRyeS0mZ3Q7ZXZfZmRfY3R4YC4gVGhpcyBpcyBjcnVjaWFsLiBJdCBwcmV2ZW50cyB0aGUgY2xlYW51cCBoYW5kbGVyIGZyb20gcnVubmluZyB3aGVuIGBlbnRyeS0mZ3Q7ZXZfZmRfY3R4YCBnb2VzIG91dCBvZiBzY29wZSwgYmVjYXVzZSB0aGUgZXZlbnRmZCBjb250ZXh0IGlzIG5vdyBtYW5hZ2VkIGVsc2V3aGVyZS4KClRoZSBjaGFuZ2UgaW4gYGZzL2V2ZW50ZmQuY2AgYWRkcyBhIGNoZWNrIHRvIGBldmVudGZkX2N0eF9wdXRgIGZvciBhIGBOVUxMYCBvciBgRVJSX1BUUmAgcG9pbnRlciwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgaXQgYWxsb3dzIGhhbmRsaW5nIG9mIGNhc2VzIHdoZXJlIHRoZSBjb250ZXh0IHdhc24mIzM5O3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4KCkZpbmFsbHksIHRoZSBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGNoYW5nZSBhZGRzIGEgYERFRklORV9GUkVFYCBtYWNybyBmb3IgYGV2ZW50ZmRgLCB3aGljaCBjbGVhcmx5IGFzc29jaWF0ZXMgdGhlIGBldmVudGZkX2N0eF9wdXRgIGZ1bmN0aW9uIHdpdGggdGhlIGBldmVudGZkX2N0eGAgc3RydWN0IGZvciB1c2Ugd2l0aCB0aGUgYF9fZnJlZWAgYXR0cmlidXRlLiBUaGlzIGlzIHRoZSBjb3JlIG9mIHRoZSBjbGVhbnVwIG1lY2hhbmlzbSBhbmQgcHJvdmlkZXMgYSBjbGVhbmVyIGFuZCBzYWZlciB3YXkgdG8gbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUgYGV2ZW50ZmRfY3R4YCBvYmplY3QuCgpJbiBzdW1tYXJ5LCB0aGlzIHBhdGNoIGlzIHJlZmFjdG9yaW5nIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBvZiBldmVudCBmaWxlIGRlc2NyaXB0b3JzIHdpdGhpbiB0aGUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGZ1bmN0aW9uLiBJdCYjMzk7cyB1c2luZyBjbGVhbnVwIGhhbmRsZXJzIHRvIGF1dG9tYXRpY2FsbHkgcmVsZWFzZSB0aGUgYGV2ZW50ZmRfY3R4YCBvbiBzY29wZSBleGl0IG9yIG1hbnVhbCBjYWxsIHRvIGBub19mcmVlX3B0cmAsIHRodXMgcmVkdWNpbmcgdGhlIGNoYW5jZSBvZiBtZW1vcnkgbGVha3MgYW5kIG1ha2luZyB0aGUgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCBtYWludGFpbmFibGUuIFRoaXMgc2VlbXMgbGlrZSBhIHBvc2l0aXZlIGNoYW5nZSB0aGF0IEkgc2hvdWxkIGRlZmluaXRlbHkgdGFrZSBub3RlIG9mLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDYwOlx0XG4xNDYxOlx0aW50XG4xNDYyOlx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuMTQ2MzpcdFx0XHRcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNDY0Olx0e1xuMTQ2NTpcdFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtcbjE0NjY6XHRcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcbjE0Njc6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbjE0Njg6XHRcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5O1xuMTQ2OTpcdFx0aW50IHJldDtcbjE0NzA6XHRcbjE0NzE6XHRcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbjE0NzI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuMTQ3MzpcdFxuMTQ3NDpcdFx0aWYgKGFyZ3MtXHUwMDNlZmxhZ3MgXHUwMDI2IH5EUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQVZBSUxBQkxFKVxuMTQ3NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0NzY6XHRcbjE0Nzc6XHRcdGlmIChhcmdzLVx1MDAzZXBhZClcbjE0Nzg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDc5Olx0XG4xNDgwOlx0XHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXHUwMDNlaGFuZGxlKTtcbjE0ODE6XHRcdGlmICghc3luY29iailcbjE0ODI6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4xNDgzOlx0XG4xNDg0Olx0XHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbjE0ODU6XHRcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuMTQ4NjpcdFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4xNDg3Olx0XHRcdGdvdG8gZXJyX2ZkZ2V0O1xuMTQ4ODpcdFx0fVxuMTQ4OTpcdFxuMTQ5MDpcdFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuMTQ5MTpcdFx0aWYgKCFlbnRyeSkge1xuMTQ5MjpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTQ5MzpcdFx0XHRnb3RvIGVycl9mZGdldDtcbjE0OTQ6XHRcdH1cbjE0OTU6XHRcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuMTQ5NjpcdFx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbjE0OTc6XHRcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbjE0OTg6XHRcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbjE0OTk6XHRcbjE1MDA6XHRcdGRybV9zeW5jb2JqX2FkZF9ldmVudGZkKHN5bmNvYmosIGVudHJ5KTtcbjE1MDE6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDI6XHRcbjE1MDM6XHRcdHJldHVybiAwO1xuMTUwNDpcdFxuMTUwNTpcdGVycl9mZGdldDpcbjE1MDY6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDc6XHRcdHJldHVybiByZXQ7XG4xNTA4Olx0fVxuMTUwOTpcdFxuMTUxMDpcdGludFxuMTUxMTpcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4xNTEyOlx0XHRcdFx0c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNTEzOlx0e1xuMTUxNDpcdFx0c3RydWN0IGRybV9zeW5jb2JqX2FycmF5ICphcmdzID0gZGF0YTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI1MQoJCQkJCQkJb3V0cHV0OiAyMzYKCQkJCQkJCXRob3VnaHRzOiA4OTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgVW5pbml0aWFsaXplZCBNZW1vcnkgUmlza3MqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGEgcmVmYWN0b3JpbmcgY2VudGVyZWQgYXJvdW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB1c2luZyB0aGUgYF9fZnJlZWAgY2xlYW51cCBhdHRyaWJ1dGUgYW5kIHRoZSBgZXZlbnRmZF9jdHhfcHV0YCBmdW5jdGlvbi4gSXQmIzM5O3MgZGVzaWduZWQgdG8gaGFuZGxlIHJlc291cmNlIGxpZmV0aW1lIGFuZCBwcmV2ZW50IHBvdGVudGlhbCBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLgoKVGhlIHBhdGNoIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6CgoxLiAgSXQgZGVmaW5lcyBgREVGSU5FX0ZSRUVgIGZvciBgZXZlbnRmZGAgY29udGV4dHMuCjIuICBJdCB1cGRhdGVzIGBldmVudGZkX2N0eF9wdXRgIHRvIHNhZmVseSBoYW5kbGUgYE5VTExgIG9yIGVycm9yIHBvaW50ZXJzLiBUaGlzIGlzIGdvb2QgcHJhY3RpY2UuCjMuICBJbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAsIHdlIGhhdmUgYSBgc3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtgIGRlY2xhcmF0aW9uLiBUaGUgb3duZXJzaGlwIGdldHMgdHJhbnNmZXJyZWQgdG8gYGVudHJ5YCB2aWEgYG5vX2ZyZWVfcHRyYC4gQ3J1Y2lhbGx5LCBlcnJvciBwYXRocyBub3cgc2FmZWx5IGZyZWUgYGV2X2ZkX2N0eGAgaWYgaXQmIzM5O3Mgbm90IGBOVUxMYCAob3IgaXQmIzM5O3MgYW4gZXJyb3IgcG9pbnRlciwgd2hpY2ggYGV2ZW50ZmRfY3R4X3B1dGAgaGFuZGxlcykuIFRoZSByZW1vdmFsIG9mIGBlcnJfa3phbGxvY2Agc2ltcGxpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcuCgpOb3csIHRoZSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgcmlza3Mgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3Iga2VybmVsIGluZm9ybWF0aW9uIGxlYWtzIHRoYXQgd291bGQgd2FycmFudCBLTVNBTj8gTGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdCBjYXJlZnVsbHk6CgoxLiAgKipLZXJuZWwgc3RydWN0dXJlcyB0byB1c2Vyc3BhY2U/KiogTm9wZS4gVGhlIGlucHV0LCBgdm9pZCAqZGF0YWAsIGNvbWVzIGZyb20gdGhlIERSTSBpb2N0bCBmcmFtZXdvcmsuIE5vIG5ldyBpbmZvcm1hdGlvbiBpcyBiZWluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLgoyLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBObyBhZ2Fpbi4gYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgTlVMTGAuCjMuICAqKkNvbXBsZXggc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyoqIGBlbnRyeWAgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jX29iamAsIHdoaWNoICp6ZXJvZXMqIHRoZSBtZW1vcnkuCjQuICAqKkJvdW5kcyBjaGVja3Mgb3IgbG9naWMgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/KiogTm8sIG5vdGhpbmcgaGVyZS4KClRoaXMgcmVmYWN0b3JpbmcgaXMgYWxsIGFib3V0IHJlc291cmNlIGNsZWFudXAgYW5kIGF2b2lkaW5nIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3PigJRzcGVjaWZpY2FsbHkgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUsIGxlYWtzLiBUaGVzZSBhcmUgKnN0YW5kYXJkKiBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgdGhhdCBLQVNBTiwgcmVmY291bnQgZGV0ZWN0b3JzLCBvciBsZWFrIGRldGVjdG9ycyB3b3VsZCBjYXRjaC4gSXQmIzM5O3Mgbm90IGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBjcml0ZXJpYSBvdXRsaW5lZCBhcmUgY2xlYXI6ICpLTVNBTiBpcyBub3QgbmVlZGVkKiBpbiB0aGlzIGNhc2UuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgdGhlIHR5cGVzIG9mIHJpc2tzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guIFRoZSBjb2RlIGNoYW5nZXMgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4gVGhlIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkIG9yIGluaXRpYWxpemVkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU49ZmFsc2VgLiBMZXQmIzM5O3MgcHJlcGFyZSB0aGUgY2FsbCB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgY2xlYW51cCBoZWxwZXIgdXNpbmcgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gYW5kIHJlZmFjdG9ycyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIHJlc291cmNlIG1hbmFnZW1lbnQgKGBfX2ZyZWVgIGFuZCBgbm9fZnJlZV9wdHJgKSBmb3IgYHN0cnVjdCBldmVudGZkX2N0eGAuIEFkZGl0aW9uYWxseSwgYGV2ZW50ZmRfY3R4X3B1dCgpYCBpcyB1cGRhdGVkIHRvIHNhZmVseSBoYW5kbGUgYE5VTExgIG9yIGVycm9yIHBvaW50ZXJzIHZpYSBgSVNfRVJSX09SX05VTEwoY3R4KWAuXG5cblRoZXNlIGNoYW5nZXMgY29uY2VybiBwb2ludGVyIGxpZmV0aW1lIGFuZCByZXNvdXJjZSBkZWFsbG9jYXRpb24uIFRoZSBsb2NhbCBwb2ludGVyIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgLCBhbmQgdGhlIGhlYXAgYWxsb2NhdGlvbiBgZW50cnlgIGNvbnRpbnVlcyB0byBiZSB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqKClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBieXRlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgYWx0ZXJlZC4gQW55IHBvdGVudGlhbCBidWdzIHdvdWxkIHJlbGF0ZSB0byByZWZlcmVuY2UgY291bnRpbmcsIHJlc291cmNlIGxlYWtzLCBvciBwb2ludGVyIGNsZWFudXAsIHdoaWNoIGZhbGwgdW5kZXIgc3RhbmRhcmQgS0FTQU4vcmVmY291bnQgdHJhY2tpbmcgcmF0aGVyIHRoYW4gS01TQU4gdW5pbml0aWFsaXplZCBtZW1vcnkgZGV0ZWN0aW9uLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxuXG5UaGVzZSBjaGFuZ2VzIGNvbmNlcm4gcG9pbnRlciBsaWZldGltZSBhbmQgcmVzb3VyY2UgZGVhbGxvY2F0aW9uLiBUaGUgbG9jYWwgcG9pbnRlciBgZXZfZmRfY3R4YCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBOVUxMYCwgYW5kIHRoZSBoZWFwIGFsbG9jYXRpb24gYGVudHJ5YCBjb250aW51ZXMgdG8gYmUgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iaigpYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgYnl0ZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIGFsdGVyZWQuIEFueSBwb3RlbnRpYWwgYnVncyB3b3VsZCByZWxhdGUgdG8gcmVmZXJlbmNlIGNvdW50aW5nLCByZXNvdXJjZSBsZWFrcywgb3IgcG9pbnRlciBjbGVhbnVwLCB3aGljaCBmYWxsIHVuZGVyIHN0YW5kYXJkIEtBU0FOL3JlZmNvdW50IHRyYWNraW5nIHJhdGhlciB0aGFuIEtNU0FOIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGRldGVjdGlvbi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6MDMuNTAxOTY5MjI5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5MjAyMjcxNTYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9WSVJUSU9fR1BVXCIsXG4gICAgXCJFVkVOVEZEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bFwiLFxuICAgIFwiZXZlbnRmZF9jdHhfcHV0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgY2xlYW51cCBoZWxwZXIgdXNpbmcgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gYW5kIHJlZmFjdG9ycyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIHJlc291cmNlIG1hbmFnZW1lbnQgKGBfX2ZyZWVgIGFuZCBgbm9fZnJlZV9wdHJgKSBmb3IgYHN0cnVjdCBldmVudGZkX2N0eGAuIEFkZGl0aW9uYWxseSwgYGV2ZW50ZmRfY3R4X3B1dCgpYCBpcyB1cGRhdGVkIHRvIHNhZmVseSBoYW5kbGUgYE5VTExgIG9yIGVycm9yIHBvaW50ZXJzIHZpYSBgSVNfRVJSX09SX05VTEwoY3R4KWAuXFxuXFxuVGhlc2UgY2hhbmdlcyBjb25jZXJuIHBvaW50ZXIgbGlmZXRpbWUgYW5kIHJlc291cmNlIGRlYWxsb2NhdGlvbi4gVGhlIGxvY2FsIHBvaW50ZXIgYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgTlVMTGAsIGFuZCB0aGUgaGVhcCBhbGxvY2F0aW9uIGBlbnRyeWAgY29udGludWVzIHRvIGJlIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmooKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGJ5dGVzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBhbHRlcmVkLiBBbnkgcG90ZW50aWFsIGJ1Z3Mgd291bGQgcmVsYXRlIHRvIHJlZmVyZW5jZSBjb3VudGluZywgcmVzb3VyY2UgbGVha3MsIG9yIHBvaW50ZXIgY2xlYW51cCwgd2hpY2ggZmFsbCB1bmRlciBzdGFuZGFyZCBLQVNBTi9yZWZjb3VudCB0cmFja2luZyByYXRoZXIgdGhhbiBLTVNBTiB1bmluaXRpYWxpemVkIG1lbW9yeSBkZXRlY3Rpb24uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6MDMuNTAxOTc2ODc5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYyMDA0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNWRmNDNiZTNlYmMyMWRlNDg5YzU1OTljY2E4M2JmYmI0Y2Q4NzhjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDE1IDE0OjIzOjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcXG5pbmRleCBjMjNhNWRlMjdlZmZhLi5lZmM0ZThhZjIyMGM4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcXG5AQCAtMTQ2Miw5ICsxNDYyLDkgQEAgaW50XFxuIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4gXFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4ge1xcbitcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XFxuIFxcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcXG4tXFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XFxuIFxcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5O1xcbiBcXHRpbnQgcmV0O1xcbiBcXG5AQCAtMTQ5MCwxMCArMTQ5MCwxMCBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuIFxcdGVudHJ5ID0ga3phbGxvY19vYmooKmVudHJ5KTtcXG4gXFx0aWYgKCFlbnRyeSkge1xcbiBcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbi1cXHRcXHRnb3RvIGVycl9remFsbG9jO1xcbitcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4gXFx0fVxcbiBcXHRlbnRyeS1cXHUwMDNlc3luY29iaiA9IHN5bmNvYmo7XFxuLVxcdGVudHJ5LVxcdTAwM2Vldl9mZF9jdHggPSBldl9mZF9jdHg7XFxuK1xcdGVudHJ5LVxcdTAwM2Vldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpO1xcbiBcXHRlbnRyeS1cXHUwMDNlcG9pbnQgPSBhcmdzLVxcdTAwM2Vwb2ludDtcXG4gXFx0ZW50cnktXFx1MDAzZWZsYWdzID0gYXJncy1cXHUwMDNlZmxhZ3M7XFxuIFxcbkBAIC0xNTAyLDggKzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLWVycl9remFsbG9jOlxcbi1cXHRldmVudGZkX2N0eF9wdXQoZXZfZmRfY3R4KTtcXG4gZXJyX2ZkZ2V0OlxcbiBcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuIFxcdHJldHVybiByZXQ7XFxuZGlmZiAtLWdpdCBhL2ZzL2V2ZW50ZmQuYyBiL2ZzL2V2ZW50ZmQuY1xcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjFjZDE3NDFiODFiMTcgMTAwNjQ0XFxuLS0tIGEvZnMvZXZlbnRmZC5jXFxuKysrIGIvZnMvZXZlbnRmZC5jXFxuQEAgLTEwMiw2ICsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXFxuICAqL1xcbiB2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcXG4ge1xcbitcXHRpZiAoSVNfRVJSX09SX05VTEwoY3R4KSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0a3JlZl9wdXQoXFx1MDAyNmN0eC1cXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXFxuaW5kZXggZTMyYmVlNDM0NWZiOS4uNjg5MzU4YzJiMGFlNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXFxuQEAgLTEwLDYgKzEwLDcgQEBcXG4gI2RlZmluZSBfTElOVVhfRVZFTlRGRF9IXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvd2FpdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xlYW51cC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJjcHUtZGVmcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGVyY3B1LmhcXHUwMDNlXFxuQEAgLTg5LDUgKzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbiBcXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XFxuIH1cXG4gXFxuK0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxcbitcXG4gI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjIzOjA0LjA4OTEwMjI2OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTA2OTk1Mzc3NDQ0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9WSVJUSU9fR1BVXCIsXG4gICAgXCJFVkVOVEZEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bFwiLFxuICAgIFwiZXZlbnRmZF9jdHhfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNWRmNDNiZTNlYmMyMWRlNDg5YzU1OTljY2E4M2JmYmI0Y2Q4NzhjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTQ6MjM6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5pbmRleCBjMjNhNWRlMjdlZmZhLi5lZmM0ZThhZjIyMGM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5AQCAtMTQ2Miw5ICsxNDYyLDkgQEAgaW50XG4gZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuIFx0XHRcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4ge1xuK1x0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtcbiBcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcbiBcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbi1cdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4O1xuIFx0c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnk7XG4gXHRpbnQgcmV0O1xuIFxuQEAgLTE0OTAsMTAgKzE0OTAsMTAgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuIFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuIFx0aWYgKCFlbnRyeSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9remFsbG9jO1xuK1x0XHRnb3RvIGVycl9mZGdldDtcbiBcdH1cbiBcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuLVx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gZXZfZmRfY3R4O1xuK1x0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbiBcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbiBcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbiBcbkBAIC0xNTAyLDggKzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfa3phbGxvYzpcbi1cdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xuIGVycl9mZGdldDpcbiBcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4xY2QxNzQxYjgxYjE3IDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4rKysgYi9mcy9ldmVudGZkLmNcbkBAIC0xMDIsNiArMTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuICAqL1xuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIHtcbitcdGlmIChJU19FUlJfT1JfTlVMTChjdHgpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRrcmVmX3B1dChcdTAwMjZjdHgtXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5AQCAtMTAsNiArMTAsNyBAQFxuICNkZWZpbmUgX0xJTlVYX0VWRU5URkRfSFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG5AQCAtODksNSArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gfVxuIFxuK0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuK1xuICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyMzowNC4wODkxMDQ0ODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMzkxNzU4NTMzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhpcyBQYXRjaCBmb3IgRXZlbnRmZCBhbmQgRFJNIFN5bmNvYmpzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRob3JvdWdobHkgZXhhbWluZSB0aGlzIHBhdGNoLCBzdGFydGluZyB3aXRoIGEgZ3JhbnVsYXIgbG9vayBhdCB0aGUgY29kZSBjaGFuZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIERSTSBzeW5jb2JqIHN1YnN5c3RlbSwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLlxuXG5GaXJzdCwgdGhlIHBhdGNoIGFsdGVycyB0aHJlZSBmaWxlcy4gSXQgbG9va3MgbGlrZTpcblxuMS4gIEluIGBmcy9ldmVudGZkLmNgLCB0aGVyZSdzIGEgc2FmZXR5IGNoZWNrIGJlaW5nIGFkZGVkIHRvIGBldmVudGZkX2N0eF9wdXRgOiBgaWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpIHJldHVybjtgLiBUaGlzIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHByb3RlY3Rpb24uIEltcG9ydGFudCwgYnV0IHN0cmFpZ2h0Zm9yd2FyZC5cblxuMi4gIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgaXMgZ2V0dGluZyBhIGNoYW5nZSB0byB0aGUgYERFRklORV9GUkVFYCBtYWNybyBmb3IgYGV2ZW50ZmRgLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGBldmVudGZkX2N0eF9wdXQoX1QpYC4gVGhpcyBtZWFucyB0aGUgbWFjcm8gaXMgbm93IHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBgZXZlbnRmZF9jdHhgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhlIG1hY3JvIGlzIGEgY3J1Y2lhbCBwYXJ0IG9mIGtlcm5lbCBtZW1vcnkgbWFuYWdlbWVudC5cblxuMy4gIEZpbmFsbHksIGFuZCBwZXJoYXBzIHRoZSBtb3N0IGludGVyZXN0aW5nIHBpZWNlLCBpcyB0aGUgY2hhbmdlIHdpdGhpbiBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgLiBUaGUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGZ1bmN0aW9uIGlzIHRoZSBjb3JlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIEhlcmUsIHRoZSBwYXRjaCBtb2RpZmllcyBob3cgYHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4YCBpcyBoYW5kbGVkLiBJdCBzZWVtcyB0aGUgY29kZSBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgYXR0cmlidXRlIGFuZCBhICBgbm9fZnJlZV9wdHJgIGZ1bmN0aW9uIGNhbGwuIEFkZGl0aW9uYWxseSwgdGhlIG9sZCBgZXJyX2t6YWxsb2NgIGxhYmVsIGFuZCBjb3JyZXNwb25kaW5nIGBldmVudGZkX2N0eF9wdXRgIGNhbGwgaGF2ZSBiZWVuIHJlbW92ZWQuIFRoaXMgaW1wbGllcyBhIGNoYW5nZSBpbiBob3cgYGV2ZW50ZmRfY3R4YCBpcyBtYW5hZ2VkIGFuZCByZWxlYXNlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgRFJNIHN5bmNvYmouIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRyb2wgZmxvdyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gY29uZmlybSB0aGUgZGV0YWlscy5cbkkgbmVlZCB0byBrZWVwIGluIG1pbmQsIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZnVuY3Rpb24gYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBjb250ZXh0LCB0aGlzIGNoYW5nZSB0byBzZWUgd2hhdCdzIHJlYWxseSBnb2luZyBvbi4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIHJhdGlvbmFsZSBmb3IgdGhlIGNoYW5nZSBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIHJlZ3Jlc3Npb24gaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTkyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6MTguMDA2NjkyMTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ2MDpcXHRcXG4xNDYxOlxcdGludFxcbjE0NjI6XFx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbjE0NjM6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNDY0OlxcdHtcXG4xNDY1OlxcdFxcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XFxuMTQ2NjpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XFxuMTQ2NzpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuMTQ2ODpcXHRcXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcXG4xNDY5OlxcdFxcdGludCByZXQ7XFxuMTQ3MDpcXHRcXG4xNDcxOlxcdFxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG4xNDcyOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4xNDczOlxcdFxcbjE0NzQ6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZWZsYWdzIFxcdTAwMjYgfkRSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BVkFJTEFCTEUpXFxuMTQ3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNDc2OlxcdFxcbjE0Nzc6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZXBhZClcXG4xNDc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE0Nzk6XFx0XFxuMTQ4MDpcXHRcXHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXFx1MDAzZWhhbmRsZSk7XFxuMTQ4MTpcXHRcXHRpZiAoIXN5bmNvYmopXFxuMTQ4MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4xNDgzOlxcdFxcbjE0ODQ6XFx0XFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cXHUwMDNlZmQpO1xcbjE0ODU6XFx0XFx0aWYgKElTX0VSUihldl9mZF9jdHgpKSB7XFxuMTQ4NjpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XFxuMTQ4NzpcXHRcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4xNDg4OlxcdFxcdH1cXG4xNDg5OlxcdFxcbjE0OTA6XFx0XFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xcbjE0OTE6XFx0XFx0aWYgKCFlbnRyeSkge1xcbjE0OTI6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xNDkzOlxcdFxcdFxcdGdvdG8gZXJyX2ZkZ2V0O1xcbjE0OTQ6XFx0XFx0fVxcbjE0OTU6XFx0XFx0ZW50cnktXFx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xcbjE0OTY6XFx0XFx0ZW50cnktXFx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XFxuMTQ5NzpcXHRcXHRlbnRyeS1cXHUwMDNlcG9pbnQgPSBhcmdzLVxcdTAwM2Vwb2ludDtcXG4xNDk4OlxcdFxcdGVudHJ5LVxcdTAwM2VmbGFncyA9IGFyZ3MtXFx1MDAzZWZsYWdzO1xcbjE0OTk6XFx0XFxuMTUwMDpcXHRcXHRkcm1fc3luY29ial9hZGRfZXZlbnRmZChzeW5jb2JqLCBlbnRyeSk7XFxuMTUwMTpcXHRcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuMTUwMjpcXHRcXG4xNTAzOlxcdFxcdHJldHVybiAwO1xcbjE1MDQ6XFx0XFxuMTUwNTpcXHRlcnJfZmRnZXQ6XFxuMTUwNjpcXHRcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuMTUwNzpcXHRcXHRyZXR1cm4gcmV0O1xcbjE1MDg6XFx0fVxcbjE1MDk6XFx0XFxuMTUxMDpcXHRpbnRcXG4xNTExOlxcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuMTUxMjpcXHRcXHRcXHRcXHRzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNTEzOlxcdHtcXG4xNTE0OlxcdFxcdHN0cnVjdCBkcm1fc3luY29ial9hcnJheSAqYXJncyA9IGRhdGE7XFxuMTUxNTpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqcztcXG4xNTE2OlxcdFxcdHVpbnQzMl90IGk7XFxuMTUxNzpcXHRcXHRpbnQgcmV0O1xcbjE1MTg6XFx0XFxuMTUxOTpcXHRcXHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjIzOjE4LjAwNjgzODk4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIyNDQwNDI2MjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyBgZnMvZXZlbnRmZC5jYCoqXG5cbk9rYXksIEknbSBkaWdnaW5nIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoIGV2ZW50ZmQsIHNvIGxldCdzIHpvb20gaW4gb24gdGhlIGBmcy9ldmVudGZkLmNgIGZpbGUuIEknbGwgZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDEwMC4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwncyBhcmNoaXRlY3R1cmUuIEhvcGVmdWxseSwgdGhlIGNvZGUgdGhlcmUgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHNwZWNpZmljIGJlaGF2aW9yIEknbSBjdXJpb3VzIGFib3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTgzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyMzo0MC40NDcyNjgyODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9ldmVudGZkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTU6XFx0XFxuICA5NjpcXHQvKipcXG4gIDk3OlxcdCAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuICA5ODpcXHQgKiBAY3R4OiBbaW5dIFBvaW50ZXIgdG8gZXZlbnRmZCBjb250ZXh0LlxcbiAgOTk6XFx0ICpcXG4gMTAwOlxcdCAqIFRoZSBldmVudGZkIGNvbnRleHQgcmVmZXJlbmNlIG11c3QgaGF2ZSBiZWVuIHByZXZpb3VzbHkgYWNxdWlyZWQgZWl0aGVyXFxuIDEwMTpcXHQgKiB3aXRoIGV2ZW50ZmRfY3R4X2ZkZ2V0KCkgb3IgZXZlbnRmZF9jdHhfZmlsZWdldCgpLlxcbiAxMDI6XFx0ICovXFxuIDEwMzpcXHR2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcXG4gMTA0OlxcdHtcXG4gMTA1OlxcdFxcdGlmIChJU19FUlJfT1JfTlVMTChjdHgpKVxcbiAxMDY6XFx0XFx0XFx0cmV0dXJuO1xcbiAxMDc6XFx0XFxuIDEwODpcXHRcXHRrcmVmX3B1dChcXHUwMDI2Y3R4LVxcdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xcbiAxMDk6XFx0fVxcbiAxMTA6XFx0RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcXG4gMTExOlxcdFxcbiAxMTI6XFx0c3RhdGljIGludCBldmVudGZkX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIDExMzpcXHR7XFxuIDExNDpcXHRcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0d2FrZV91cF9wb2xsKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgRVBPTExIVVApO1xcbiAxMTc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuIDExODpcXHRcXHRyZXR1cm4gMDtcXG4gMTE5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6NDAuNDQ3MzQyMzQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjA0NjY0MjI4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGFiaWxpdHkgQW5hbHlzaXM6IERSTSBTeW5jb2JqIGluIFFFTVUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyByZWFjaGFiaWxpdHkgcXVlc3Rpb24uIE15IHByaW1hcnkgY29uY2VybiBpcyB3aGV0aGVyIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBpcyBhY3R1YWxseSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgUUVNVSBlbnZpcm9ubWVudC4gSXQgc2VlbXMgbGlrZSBpdCBzaG91bGQgYmUsIGNvbnNpZGVyaW5nIFFFTVUgc3VwcG9ydHMgdmFyaW91cyBEUk0gZGV2aWNlcywgc3BlY2lmaWNhbGx5IHRoaW5ncyBsaWtlIHZnZW0sIHZpcnRpby1ncHUsIGFuZCB2a21zLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSByZWdpc3RyYXRpb24uIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBjb21wb25lbnRzIGFyZSByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgZWl0aGVyIGBEUklWRVJfU1lOQ09CSl9USU1FTElORWAgb3IsIG1vcmUgZGlyZWN0bHksIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBpdHNlbGYuIEtub3dpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCB3aWxsIGlsbHVtaW5hdGUgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGdyZXBwaW5nIHRvb2xzIGFuZCBodW50IGZvciB0aG9zZSBrZXl3b3JkczogYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgLiBUaGF0IHNob3VsZCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBkcml2ZXJzIG9yIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MjgsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyMzo0Ni40OTM5ODY3NjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0ODEzNDI1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fc3luY29ial9ldmVudGZkX2lvY3RsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaD0yNzY9aW50IGRybV9zeW5jb2JqX3RpbWVsaW5lX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI3ODppbnQgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNzktXFx0XFx0XFx0ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jPTY0ND1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGRybV9pb2N0bHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzEtXFx0XFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczMjpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkQsIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTczMy1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTE0NjE9aW50XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MTQ2Mjpkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTQ2My1cXHRcXHRcXHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyMzo0OC42NDIxMjY1MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozMTY1OTc2NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byBEUk0gU3luY2hyb25pemF0aW9uIE9iamVjdHMgYW5kIEV2ZW50RkQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRGAuIFRoaXMgaXMgYW4gaW9jdGwgY2FsbCB0aGF0IG9wZXJhdGVzIG9uIHRoZSBgL2Rldi9kcmkvY2FyZCpgIG9yIGAvZGV2L2RyaS9yZW5kZXJEKmAgZGV2aWNlcy4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBTeXprYWxsZXIsIHRoYXQgZnV6emluZyBiZWFzdCwgKmRpcmVjdGx5KiBzdXBwb3J0cyBgZHJtX3N5bmNvYmpgIGFuZCB0aGlzIHNwZWNpZmljIGBEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEYCBjYWxsLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbjsgU3l6a2FsbGVyJ3MgY292ZXJhZ2UgdXN1YWxseSBoaWdobGlnaHRzIGFyZWFzIG9mIHBvdGVudGlhbCBjb21wbGV4aXR5IG9yIHZ1bG5lcmFiaWxpdHkuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgYERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyBhY3R1YWxseSAqdXNlKiB0aGlzIGNhcGFiaWxpdHkuIElkZW50aWZ5aW5nIHdoaWNoIGRyaXZlcnMgaGF2ZSBlbmFibGVkIHRoYXQgc3BlY2lmaWMgZmVhdHVyZSB3aWxsIGhlbHAgbWUgbmFycm93IGRvd24gdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZSBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGVtZW50YXRpb24gc3RyYXRlZ2llcyBpbiB1c2UuIEtub3dpbmcgdGhlIGRyaXZlcnMgaW52b2x2ZWQgd2lsbCBhbGxvdyBtZSB0byB0YXJnZXQgbXkgYW5hbHlzaXMgbW9yZSBlZmZlY3RpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjIzOjUxLjgwODEwNTg3MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNzU4MTk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEUklWRVJfU1lOQ09CSl9USU1FTElORVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmM9MzI5PWNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIGFtZHhkbmFfZHJtX2RydiA9IHtcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmMtMzMwLVxcdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfR0VNIHwgRFJJVkVSX0NPTVBVVEVfQUNDRUwgfFxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYzozMzE6XFx0XFx0RFJJVkVSX1NZTkNPQkogfCBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmMtMzMyLVxcdC5mb3BzID0gXFx1MDAyNmFtZHhkbmFfZm9wcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYz0zMTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBhbWRncHVfa21zX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYy0zMTE0LVxcdCAgICBEUklWRVJfUkVOREVSIHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfU1lOQ09CSiB8XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jOjMxMTU6XFx0ICAgIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYy0zMTE2LVxcdC5vcGVuID0gYW1kZ3B1X2RyaXZlcl9vcGVuX2ttcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYz0zMTM4PWNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIGFtZGdwdV9wYXJ0aXRpb25fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jLTMxNDAtXFx0ICAgIERSSVZFUl9HRU0gfCBEUklWRVJfUkVOREVSIHwgRFJJVkVSX1NZTkNPQkogfFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYzozMTQxOlxcdCAgICBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMtMzE0Mi1cXHQub3BlbiA9IGFtZGdwdV9kcml2ZXJfb3Blbl9rbXMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM9MjM0PXN0YXRpYyBpbnQgZHJtX2dldGNhcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy0yNTItXFx0Y2FzZSBEUk1fQ0FQX1NZTkNPQkpfVElNRUxJTkU6XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjI1MzpcXHRcXHRyZXEtXFx1MDAzZXZhbHVlID0gZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtMjU0LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9OTg0PWRybV9zeW5jb2JqX3RyYW5zZmVyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy05ODktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6OTkwOlxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy05OTEtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MTM2Nj1kcm1fc3luY29ial90aW1lbGluZV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xMzc0LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjEzNzU6XFx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTEzNzYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MTQ2Mj1kcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNDcwLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjE0NzE6XFx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE0NzItXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MTU4MD1kcm1fc3luY29ial90aW1lbGluZV9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE1ODktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MTU5MDpcXHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTU5MS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0xNjUyPWludCBkcm1fc3luY29ial9xdWVyeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTY2MC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNjYxOlxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNjYyLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJpdmVyLmM9MTc2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgaTkxNV9kcm1fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcml2ZXIuYy0xNzcwLVxcdCAgICBEUklWRVJfUkVOREVSIHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDIHwgRFJJVkVSX1NZTkNPQkogfFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJpdmVyLmM6MTc3MTpcXHQgICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcml2ZXIuYy0xNzcyLVxcdC5yZWxlYXNlID0gaTkxNV9kcml2ZXJfcmVsZWFzZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfZHJ2LmM9MTM4MT1zdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgcHZyX2RybV9kcml2ZXIgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYy0xMzgyLVxcdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfR0VNIHwgRFJJVkVSX1JFTkRFUiB8XFxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYzoxMzgzOlxcdFxcdFxcdCAgIERSSVZFUl9TWU5DT0JKIHwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXFxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYy0xMzg0LVxcdC5vcGVuID0gcHZyX2RybV9kcml2ZXJfb3BlbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jPTgyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMtODM2LVxcdFxcdERSSVZFUl9TWU5DT0JKIHwgXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jOjgzNzpcXHRcXHREUklWRVJfU1lOQ09CSl9USU1FTElORSB8IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYy04MzgtXFx0XFx0MCApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zeW5jb2JqLmM9MTA9bXNtX3N5bmNvYmpfcGFyc2VfZGVwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTM3LVxcdFxcdGlmIChzeW5jb2JqX2Rlc2MucG9pbnQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zeW5jb2JqLmM6Mzg6XFx0XFx0ICAgICFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKSB7XFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTM5LVxcdFxcdFxcdHJldCA9IFVFUlIoRU9QTk9UU1VQUCwgZGV2LCBcXFwic3luY29iaiB0aW1lbGluZSB1bnN1cHBvcnRlZFxcXCIpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jPTg2PW1zbV9zeW5jb2JqX3BhcnNlX3Bvc3RfZGVwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTEyMC1cXHRcXHRcXHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYzoxMjE6XFx0XFx0XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSkge1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYy0xMjItXFx0XFx0XFx0XFx0cmV0ID0gVUVSUihFT1BOT1RTVVBQLCBkZXYsIFxcXCJzeW5jb2JqIHRpbWVsaW5lIHVuc3VwcG9ydGVkXFxcIik7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTE0MDE9ZHJpdmVyX2xlZ2FjeV9rbXMgPSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTE0MDMtXFx0XFx0XFx0IHwgRFJJVkVSX1NZTkNPQkpcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jOjE0MDQ6XFx0XFx0XFx0IHwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTE0MDUtXFx0XFx0XFx0IHwgRFJJVkVSX01PREVTRVRcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM9MTQxMT1kcml2ZXJfYXRvbWljX2ttcyA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQxMy1cXHRcXHRcXHQgfCBEUklWRVJfU1lOQ09CSlxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM6MTQxNDpcXHRcXHRcXHQgfCBEUklWRVJfU1lOQ09CSl9USU1FTElORVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQxNS1cXHRcXHRcXHQgfCBEUklWRVJfTU9ERVNFVFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kcnYuYz0xNzkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBwYW50aG9yX2RybV9kcml2ZXIgPSB7XFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kcnYuYy0xNzk0LVxcdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfUkVOREVSIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9TWU5DT0JKIHxcXG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2Rydi5jOjE3OTU6XFx0XFx0XFx0ICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kcnYuYy0xNzk2LVxcdC5vcGVuID0gcGFudGhvcl9vcGVuLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jPTMyOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jLTMzMy1cXHQuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9BVE9NSUMgfFxcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9kcnYuYzozMzQ6XFx0XFx0XFx0ICAgRFJJVkVSX1NZTkNPQkogfCBEUklWRVJfU1lOQ09CSl9USU1FTElORSB8IERSSVZFUl9DVVJTT1JfSE9UU1BPVCxcXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmMtMzM1LVxcdC5vcGVuID0gdmlydGlvX2dwdV9kcml2ZXJfb3BlbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz0zOTY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIHJlZ3VsYXJfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTQwMC1cXHQgICAgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9TWU5DT0JKIHxcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NDAxOlxcdCAgICBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNDAyLVxcdC5vcGVuID0geGVfZmlsZV9vcGVuLFxcbi0tXFxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oPTU4PWVudW0gZHJtX2RyaXZlcl9mZWF0dXJlIHtcXG4tLVxcbmluY2x1ZGUvZHJtL2RybV9kcnYuaC05Ni1cXHQvKipcXG5pbmNsdWRlL2RybS9kcm1fZHJ2Lmg6OTc6XFx0ICogQERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FOlxcbmluY2x1ZGUvZHJtL2RybV9kcnYuaC05OC1cXHQgKlxcbi0tXFxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oLTEwMS1cXHQgKi9cXG5pbmNsdWRlL2RybS9kcm1fZHJ2Lmg6MTAyOlxcdERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FICAgICAgICAgPSBCSVQoNiksXFxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oLTEwMy1cXHQvKipcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6NTMuNjM1Njk3NzExWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQ0ODkwODE4ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgRXZlbnRmZCBhbmQgaXRzIEludGVyYWN0aW9uIHdpdGggVmlydGlvLUdQVSoqXG5cbk9rYXksIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEkndmUgc3BvdHRlZCBzb21ldGhpbmcgaW4gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jYCwgdGhhdCBoYXMgdGhlIGBEUklWRVJfU1lOQ09CSiB8IERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FYCBmbGFnIHNldC4gUmlnaHQsIFZpcnRpby1HUFUg4oCTIHRoYXQncyBhIGtleSB2aXJ0dWFsIGRldmljZSBpbiBRRU1VLCBzbyB0aGF04oCZcyBkaXJlY3RseSByZWxldmFudCB0byBteSBhcmVhIG9mIGV4cGVydGlzZS4gQW5kIHRoZW4gSSBzZWUgYGV2ZW50ZmRfY3R4X3B1dGAgbWVudGlvbmVkLiBOb3csIGBldmVudGZkLmNgIGlzIGNvcmUgVkZTLCB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBgZXZlbnRmZGAgc3Vic3lzdGVtIGxpdmVzLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgY2FsbGluZyBgZXZlbnRmZF9jdHhfcHV0YC4gVGhlIGZhY3QgdGhhdCBpdCdzIHJlbGF0ZWQgdG8gVmlydGlvLUdQVSBtZWFucyBpdCBjb3VsZCBiZSByZWFsbHkgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcy4gU28sIGxldCdzIGZpbmQgb3V0LiBUaW1lIHRvIGZpcmUgdXAgdGhlIGdyZXAgYW5kIGdldCBhIGxpc3Qgb2YgYWxsIGNhbGwgc2l0ZXMgZm9yIGBldmVudGZkX2N0eF9wdXRgLiBHb3R0YSB0cmFjZSBkb3duIHRoZSBleGVjdXRpb24gcGF0aCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjgyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjI0OjM4LjUyNjUyMDcxMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwOTY5NTQ3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJldmVudGZkX2N0eF9wdXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MTYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz0yNzI1PXZvaWQga3ZtX2h2X2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3MzEtXFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFxcdTAwMjZodi1cXHUwMDNlY29ubl90b19ldnQsIGV2ZW50ZmQsIGkpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjI3MzI6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzMzLVxcdGlkcl9kZXN0cm95KFxcdTAwMjZodi1cXHUwMDNlY29ubl90b19ldnQpO1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI3MzY9c3RhdGljIGludCBrdm1faHZfZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgY29ubl9pZCwgaW50IGZkKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NTUtXFx0XFx0cmV0ID0gLUVFWElTVDtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Mjc1NjpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NTctXFx0cmV0dXJuIHJldDtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz0yNzYwPXN0YXRpYyBpbnQga3ZtX2h2X2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgY29ubl9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzcyLVxcdHN5bmNocm9uaXplX3NyY3UoXFx1MDAyNmt2bS1cXHUwMDNlc3JjdSk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjI3NzM6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzc0LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTIxMzQ9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMTk5LVxcdGlmIChldmVudGZkKVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjAwOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjIwMS1vdXRfbm9ldmVudGZkOlxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTIyMDY9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgcG9ydClcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjE4LVxcdGlmICghZXZ0Y2huZmQtXFx1MDAzZWRlbGl2ZXIucG9ydC5wb3J0KVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjE5OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyMjAtXFx0a2ZyZWUoZXZ0Y2huZmQpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTIyMjQ9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfcmVzZXQoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNTctXFx0XFx0aWYgKCFldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXFxuYXJjaC94ODYva3ZtL3hlbi5jOjIyNTg6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVxcdTAwM2VkZWxpdmVyLmV2ZW50ZmQuY3R4KTtcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI1OS1cXHRcXHRrZnJlZShldnRjaG5mZCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjM1Nj12b2lkIGt2bV94ZW5fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjM2NC1cXHRcXHRpZiAoIWV2dGNobmZkLVxcdTAwM2VkZWxpdmVyLnBvcnQucG9ydClcXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjM2NTpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXFx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xcbmFyY2gveDg2L2t2bS94ZW4uYy0yMzY2LVxcdFxcdGtmcmVlKGV2dGNobmZkKTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmM9NDYwPXN0YXRpYyB2b2lkIGhwcml2X3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmMtNTM2LVxcdGlmIChocHJpdi1cXHUwMDNlbm90aWZpZXJfZXZlbnQuZXZlbnRmZClcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjUzNzpcXHRcXHRldmVudGZkX2N0eF9wdXQoaHByaXYtXFx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmMtNTM4LVxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmM9NzkzPXN0YXRpYyBpbnQgZXZlbnRmZF91bnJlZ2lzdGVyKHN0cnVjdCBobF9mcHJpdiAqaHByaXYsIHN0cnVjdCBobF9pbmZvX2FyZ3MgKmFyZ3MpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfaW9jdGwuYy04MDAtXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmM6ODAxOlxcdGV2ZW50ZmRfY3R4X3B1dChocHJpdi1cXHUwMDNlbm90aWZpZXJfZXZlbnQuZXZlbnRmZCk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmMtODAyLVxcdGhwcml2LVxcdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvZnBnYS9kZmwuYz0xODY5PXN0YXRpYyBpbnQgZG9fc2V0X2lycV90cmlnZ2VyKHN0cnVjdCBkZmxfZmVhdHVyZSAqZmVhdHVyZSwgdW5zaWduZWQgaW50IGlkeCxcXG4tLVxcbmRyaXZlcnMvZnBnYS9kZmwuYy0xODgwLVxcdFxcdGtmcmVlKGZlYXR1cmUtXFx1MDAzZWlycV9jdHhbaWR4XS5uYW1lKTtcXG5kcml2ZXJzL2ZwZ2EvZGZsLmM6MTg4MTpcXHRcXHRldmVudGZkX2N0eF9wdXQoZmVhdHVyZS1cXHUwMDNlaXJxX2N0eFtpZHhdLnRyaWdnZXIpO1xcbmRyaXZlcnMvZnBnYS9kZmwuYy0xODgyLVxcdFxcdGZlYXR1cmUtXFx1MDAzZWlycV9jdHhbaWR4XS50cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvZnBnYS9kZmwuYy0xOTA2LVxcbmRyaXZlcnMvZnBnYS9kZmwuYzoxOTA3OlxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTkwOC1mcmVlX25hbWU6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0zMDM9c3luY29ial9ldmVudGZkX2VudHJ5X2ZyZWUoc3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnkpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzA0LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMDU6XFx0ZXZlbnRmZF9jdHhfcHV0KGVudHJ5LVxcdTAwM2Vldl9mZF9jdHgpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMwNi1cXHRkbWFfZmVuY2VfcHV0KGVudHJ5LVxcdTAwM2VmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYz02OTA9c3RhdGljIHZvaWQgaW50ZWxfdmdwdV9yZWxlYXNlX21zaV9ldmVudGZkX2N0eChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jLTY5NS1cXHRpZiAodHJpZ2dlcikge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jOjY5NjpcXHRcXHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMtNjk3LVxcdFxcdHZncHUtXFx1MDAzZW1zaV90cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9MjU0PXN0YXRpYyB2b2lkIG1zaHZfaXJxZmRfc2h1dGRvd24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNjctXFx0XFx0bXNodl9pcnFmZF9yZXNhbXBsZXJfc2h1dGRvd24oaXJxZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6MjY4OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cXHUwMDNlaXJxZmRfcmVzYW1wbGVmZCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNjktXFx0fVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNzMtXFx0ICovXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzoyNzQ6XFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVxcdTAwM2VpcnFmZF9ldmVudGZkX2N0eCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNzUtXFx0a2ZyZWUoaXJxZmQpO1xcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz0zOTM9c3RhdGljIGludCBtc2h2X2lycWZkX2Fzc2lnbihzdHJ1Y3QgbXNodl9wYXJ0aXRpb24gKnB0LFxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MjktXFx0aWYgKHJlc2FtcGxlZmQgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUihyZXNhbXBsZWZkKSlcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjUzMDpcXHRcXHRldmVudGZkX2N0eF9wdXQocmVzYW1wbGVmZCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzEtXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzItXFx0aWYgKGV2ZW50ZmQgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUihldmVudGZkKSlcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjUzMzpcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzQtXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTU0Mz1zdGF0aWMgaW50IG1zaHZfaXJxZmRfZGVhc3NpZ24oc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTYyLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NTYzOlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTU2NC1cXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NjMzPXN0YXRpYyB2b2lkIGlvZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBtc2h2X2lvZXZlbnRmZCAqcCwgdTY0IHBhcnRpdGlvbl9pZClcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNjM2LVxcdFxcdG1zaHZfdW5yZWdpc3Rlcl9kb29yYmVsbChwYXJ0aXRpb25faWQsIHAtXFx1MDAzZWlvdm50ZmRfZG9vcmJlbGxfaWQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NjM3OlxcdGV2ZW50ZmRfY3R4X3B1dChwLVxcdTAwM2Vpb3ZudGZkX2V2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNjM4LVxcdGtmcmVlKHApO1xcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz02NzM9c3RhdGljIGludCBtc2h2X2Fzc2lnbl9pb2V2ZW50ZmQoc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNzY3LWZhaWw6XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo3Njg6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNzY5LVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz03NzM9c3RhdGljIGludCBtc2h2X2RlYXNzaWduX2lvZXZlbnRmZChzdHJ1Y3QgbXNodl9wYXJ0aXRpb24gKnB0LFxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy04MTQtXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo4MTU6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtODE2LVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmM9OTczPXN0YXRpYyBpbnQgbXNodl92dGxfc2ludF9pb2N0bF9zZXRfZXZlbnRmZChzdHJ1Y3QgbXNodl92dGxfc2V0X2V2ZW50ZmQgX191c2VyICphcmcpXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfdnRsX21haW4uYy05OTUtXFx0XFx0c3luY2hyb25pemVfcmN1KCk7XFxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmM6OTk2OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChvbGRfZXZlbnRmZCk7XFxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmMtOTk3LVxcdH1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yMDcyPXN0YXRpYyBpbnQgVVZFUkJTX0hBTkRMRVIoTUxYNV9JQl9NRVRIT0RfREVWWF9TVUJTQ1JJQkVfRVZFTlQpKFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIyNDktXFx0XFx0aWYgKGV2ZW50X3N1Yi1cXHUwMDNlZXZlbnRmZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MjI1MDpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRfc3ViLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjI1MS1cXHRcXHR1dmVyYnNfdW9iamVjdF9wdXQoXFx1MDAyNmV2ZW50X3N1Yi1cXHUwMDNlZXZfZmlsZS1cXHUwMDNldW9iaik7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9Mjk0MD1zdGF0aWMgdm9pZCBkZXZ4X2ZyZWVfc3Vic2NyaXB0aW9uKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI5NDUtXFx0aWYgKGV2ZW50X3N1Yi1cXHUwMDNlZXZlbnRmZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6Mjk0NjpcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRfc3ViLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjk0Ny1cXHR1dmVyYnNfdW9iamVjdF9wdXQoXFx1MDAyNmV2ZW50X3N1Yi1cXHUwMDNlZXZfZmlsZS1cXHUwMDNldW9iaik7XFxuLS1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM9MTkxPXN0YXRpYyB2b2lkIGlycV9mcmVlKHZvaWQgKnByaXZhdGUpXFxuLS1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMTk0LVxcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYzoxOTU6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2X2N0eCk7XFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTE5Ni19XFxuLS1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM9MTk4PXN0YXRpYyBsb25nIGFmdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0yNTktXFx0XFx0aWYgKHJjKVxcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYzoyNjA6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2X2N0eCk7XFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTI2MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM9NDEwPXN0YXRpYyBpbnQgdmZpb19jY3dfbWRldl9zZXRfaXJxcyhzdHJ1Y3QgdmZpb19jY3dfcHJpdmF0ZSAqcHJpdmF0ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMtNDYwLVxcdFxcdFxcdGlmICgqY3R4KVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM6NDYxOlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCgqY3R4KTtcXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ2Mi1cXHRcXHRcXHQqY3R4ID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMtNDcwLVxcdFxcdFxcdGlmICgqY3R4KVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM6NDcxOlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCgqY3R4KTtcXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ3Mi1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMTcyPXN0YXRpYyBpbnQgdmZpb19hcF9zZXRfcmVxdWVzdF9pcnEoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTg3LVxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIxODg6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVxcdTAwM2VyZXFfdHJpZ2dlcik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIxODktXFx0XFx0bWF0cml4X21kZXYtXFx1MDAzZXJlcV90cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTk1LVxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIxOTY6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVxcdTAwM2VyZXFfdHJpZ2dlcik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIxOTctXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjIwNj1zdGF0aWMgaW50IHZmaW9fYXBfc2V0X2NmZ19jaGFuZ2VfaXJxKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyMjAtXFx0XFx0aWYgKG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyMjE6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjIyLVxcdFxcdG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyMjgtXFx0XFx0aWYgKG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyMjk6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjMwLVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYz0yMjg5PXN0YXRpYyB2b2lkIGZmc19kYXRhX2NsZWFyKHN0cnVjdCBmZnNfZGF0YSAqZmZzKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYy0yMzEzLVxcdGlmIChmZnMtXFx1MDAzZWZmc19ldmVudGZkKSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYzoyMzE0OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChmZnMtXFx1MDAzZWZmc19ldmVudGZkKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9mcy5jLTIzMTUtXFx0XFx0ZmZzLVxcdTAwM2VmZnNfZXZlbnRmZCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTQ5Nj1zdGF0aWMgdm9pZCB2ZHVzZV9kZXZfcmVzZXQoc3RydWN0IHZkdXNlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy01MzItXFx0XFx0XFx0aWYgKHZxLVxcdTAwM2VraWNrZmQpXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo1MzM6XFx0XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZxLVxcdTAwM2VraWNrZmQpO1xcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtNTM0LVxcdFxcdFxcdHZxLVxcdTAwM2VraWNrZmQgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYz0xMTk5PXN0YXRpYyBpbnQgdmR1c2Vfa2lja2ZkX3NldHVwKHN0cnVjdCB2ZHVzZV9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtMTIxOS1cXHRpZiAodnEtXFx1MDAzZWtpY2tmZClcXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jOjEyMjA6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZxLVxcdTAwM2VraWNrZmQpO1xcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtMTIyMS1cXHR2cS1cXHUwMDNla2lja2ZkID0gY3R4O1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM9NTg9c3RhdGljIGludCB2ZmlvX2NkeF9tc2lfc2V0X3ZlY3Rvcl9zaWduYWwoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTcxLVxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0ubmFtZSk7XFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6NzI6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXFx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0udHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtNzMtXFx0XFx0dmRldi1cXHUwMDNlY2R4X2lycXNbdmVjdG9yXS50cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTkzLVxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0ubmFtZSk7XFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6OTQ6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTk1LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYz02MT1zdGF0aWMgaW50IHZmaW9fc2V0X3RyaWdnZXIoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTcyLVxcdFxcdGtmcmVlKGlycS1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmM6NzM6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGlycS1cXHUwMDNldHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmMtNzQtXFx0XFx0aXJxLVxcdTAwM2V0cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTk2LVxcdFxcdGtmcmVlKGlycS1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmM6OTc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTk4LVxcdFxcdGlycS1cXHUwMDNldHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00ND1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9ldmVudGZkX3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDgtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NDk6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQtXFx1MDAzZWN0eCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTAtXFx0a2ZyZWUoZXZlbnRmZCk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00MTM9c3RhdGljIGludCB2ZmlvX3BjaV9jb3JlX3BtX2VudHJ5X3dpdGhfd2FrZXVwKFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDM4LVxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NDM5OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChlZmRjdHgpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ0MC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTQ0ND1zdGF0aWMgdm9pZCBfX3ZmaW9fcGNpX3J1bnRpbWVfcG1fZXhpdChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NTAtXFx0XFx0aWYgKHZkZXYtXFx1MDAzZXBtX3dha2VfZXZlbnRmZF9jdHgpIHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo0NTE6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXFx1MDAzZXBtX3dha2VfZXZlbnRmZF9jdHgpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ1Mi1cXHRcXHRcXHR2ZGV2LVxcdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4ID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz0zMjQ9c3RhdGljIGludCB2ZmlvX2ludHhfc2V0X3NpZ25hbChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzQyLVxcdFxcdHZmaW9fdmlycWZkX2ZsdXNoX3RocmVhZChcXHUwMDI2Y3R4LVxcdTAwM2V1bm1hc2spO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzozNDM6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG9sZCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTM0NC1cXHR9XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9MzQ5PXN0YXRpYyB2b2lkIHZmaW9faW50eF9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNjItXFx0XFx0aWYgKGN0eC1cXHUwMDNldHJpZ2dlcilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6MzYzOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChjdHgtXFx1MDAzZXRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNjQtXFx0XFx0a2ZyZWUoY3R4LVxcdTAwM2VuYW1lKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz00NDc9c3RhdGljIGludCB2ZmlvX21zaV9zZXRfdmVjdG9yX3NpZ25hbChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNDY1LVxcdFxcdGtmcmVlKGN0eC1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjQ2NjpcXHRcXHRldmVudGZkX2N0eF9wdXQoY3R4LVxcdTAwM2V0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNDY3LVxcdFxcdHZmaW9faXJxX2N0eF9mcmVlKHZkZXYsIGN0eCwgdmVjdG9yKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy01MjUtb3V0X3B1dF9ldmVudGZkX2N0eDpcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6NTI2OlxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNTI3LW91dF9mcmVlX25hbWU6XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NjM0PXN0YXRpYyBpbnQgdmZpb19wY2lfc2V0X2ludHhfdHJpZ2dlcihzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNjYyLVxcdFxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgdHJpZ2dlcilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6NjYzOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNjY0LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTczND1zdGF0aWMgaW50IHZmaW9fcGNpX3NldF9jdHhfdHJpZ2dlcl9zaW5nbGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTc5My1cXHRcXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo3OTQ6XFx0XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGVmZGN0eCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTc5NS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jPTE4Mj1zdGF0aWMgaW50IHZmaW9fc2V0X3RyaWdnZXIoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LCBpbnQgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xODktXFx0XFx0ZGlzYWJsZV9pcnEoaXJxLVxcdTAwM2Vod2lycSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTkwOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpcnEtXFx1MDAzZXRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE5MS1cXHRcXHRpcnEtXFx1MDAzZXRyaWdnZXIgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM9MzUxPXZvaWQgdmZpb19wbGF0Zm9ybV9pcnFfY2xlYW51cChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zNjAtXFx0XFx0XFx0aWYgKHZkZXYtXFx1MDAzZWlycXNbaV0udHJpZ2dlcilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzozNjE6XFx0XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXFx1MDAzZWlycXNbaV0udHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMzYyLVxcdFxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZWlycXNbaV0ubmFtZSk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM9ODU9c3RhdGljIHZvaWQgdmlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmZpby92aXJxZmQuYy05MS1cXHRmbHVzaF93b3JrKFxcdTAwMjZ2aXJxZmQtXFx1MDAzZWluamVjdCk7XFxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jOjkyOlxcdGV2ZW50ZmRfY3R4X3B1dCh2aXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMvdmZpby92aXJxZmQuYy05My1cXG4tLVxcbmRyaXZlcnMvdmZpby92aXJxZmQuYz0xMTE9aW50IHZmaW9fdmlycWZkX2VuYWJsZSh2b2lkICpvcGFxdWUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtMTg0LWVycl9idXN5OlxcbmRyaXZlcnMvdmZpby92aXJxZmQuYzoxODU6XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jLTE4Ni1lcnJfZmQ6XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYz01MTk9c3RhdGljIHZvaWQgdmhvc3RfdmRwYV9jb25maWdfcHV0KHN0cnVjdCB2aG9zdF92ZHBhICp2KVxcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmMtNTIxLVxcdGlmICh2LVxcdTAwM2Vjb25maWdfY3R4KSB7XFxuZHJpdmVycy92aG9zdC92ZHBhLmM6NTIyOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2LVxcdTAwM2Vjb25maWdfY3R4KTtcXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01MjMtXFx0XFx0di1cXHUwMDNlY29uZmlnX2N0eCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYz01Mjc9c3RhdGljIGxvbmcgdmhvc3RfdmRwYV9zZXRfY29uZmlnX2NhbGwoc3RydWN0IHZob3N0X3ZkcGEgKnYsIHUzMiBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01NDEtXFx0aWYgKCFJU19FUlJfT1JfTlVMTChjdHgpKVxcbmRyaXZlcnMvdmhvc3QvdmRwYS5jOjU0MjpcXHRcXHRldmVudGZkX2N0eF9wdXQoY3R4KTtcXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01NDMtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MTIwMz12b2lkIHZob3N0X2Rldl9jbGVhbnVwKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjA4LVxcdFxcdGlmIChkZXYtXFx1MDAzZXZxc1tpXS1cXHUwMDNlZXJyb3JfY3R4KVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjA5OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXFx1MDAzZXZxc1tpXS1cXHUwMDNlZXJyb3JfY3R4KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxMC1cXHRcXHRpZiAoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWtpY2spXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxMi1cXHRcXHRpZiAoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWNhbGxfY3R4LmN0eClcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIxMzpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWNhbGxfY3R4LmN0eCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTQtXFx0XFx0dmhvc3RfdnFfcmVzZXQoZGV2LCBkZXYtXFx1MDAzZXZxc1tpXSk7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxNy1cXHRpZiAoZGV2LVxcdTAwM2Vsb2dfY3R4KVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjE4OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXFx1MDAzZWxvZ19jdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjE5LVxcdGRldi1cXHUwMDNlbG9nX2N0eCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjE1MD1sb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI3NC1cXHRpZiAoIUlTX0VSUl9PUl9OVUxMKGN0eCkpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjIyNzU6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzYtXFx0aWYgKGZpbGVwKVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTIzMjE9bG9uZyB2aG9zdF9kZXZfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yNDE5LVxcdFxcdGlmIChjdHgpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjI0MjA6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTI0MjEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYz00Mz1zdGF0aWMgdm9pZCBhY3JuX2lvZXZlbnRmZF9zaHV0ZG93bihzdHJ1Y3QgYWNybl92bSAqdm0sIHN0cnVjdCBoc21faW9ldmVudGZkICpwKVxcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtNDYtXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM6NDc6XFx0ZXZlbnRmZF9jdHhfcHV0KHAtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTQ4LVxcdGxpc3RfZGVsKFxcdTAwMjZwLVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jPTc2PXN0YXRpYyBpbnQgYWNybl9pb2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBhY3JuX3ZtICp2bSxcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE0Mi1mYWlsOlxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjE0MzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTQ0LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYz0xNDc9c3RhdGljIGludCBhY3JuX2lvZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy0xNjgtXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM6MTY5OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy0xNzAtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jPTYwPXN0YXRpYyB2b2lkIGhzbV9pcnFmZF9zaHV0ZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtNzItXFx0ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoaXJxZmQtXFx1MDAzZWV2ZW50ZmQsIFxcdTAwMjZpcnFmZC1cXHUwMDNld2FpdCwgXFx1MDAyNmNudCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzo3MzpcXHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtNzQtXFx0a2ZyZWUoaXJxZmQpO1xcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz0xMTE9c3RhdGljIGludCBhY3JuX2lycWZkX2Fzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sIHN0cnVjdCBhY3JuX2lycWZkICphcmdzKVxcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xNzAtZmFpbDpcXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jOjE3MTpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xNzItb3V0Olxcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz0xNzc9c3RhdGljIGludCBhY3JuX2lycWZkX2RlYXNzaWduKHN0cnVjdCBhY3JuX3ZtICp2bSxcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTk1LVxcdG11dGV4X3VubG9jayhcXHUwMDI2dm0tXFx1MDAzZWlycWZkc19sb2NrKTtcXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jOjE5NjpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xOTctXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9OTEyPXN0YXRpYyB2b2lkIGlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy05MjEtXFx0ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoa2lycWZkLVxcdTAwM2VldmVudGZkLCBcXHUwMDI2a2lycWZkLVxcdTAwM2V3YWl0LCBcXHUwMDI2Y250KTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6OTIyOlxcdGV2ZW50ZmRfY3R4X3B1dChraXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy05MjMtXFx0a2ZyZWUoa2lycWZkKTtcXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz05NzY9c3RhdGljIGludCBwcml2Y21kX2lycWZkX2Fzc2lnbihzdHJ1Y3QgcHJpdmNtZF9pcnFmZCAqaXJxZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA0NC1lcnJvcl9ldmVudGZkOlxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMDQ1OlxcdGV2ZW50ZmRfY3R4X3B1dChraXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMDQ2LVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTEwNTI9c3RhdGljIGludCBwcml2Y21kX2lycWZkX2RlYXNzaWduKHN0cnVjdCBwcml2Y21kX2lycWZkICppcnFmZClcXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMDcyLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMDczOlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA3NC1cXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xMzQ2PXN0YXRpYyB2b2lkIGlvZXZlbnRmZF9mcmVlKHN0cnVjdCBwcml2Y21kX2tlcm5lbF9pb2V2ZW50ZmQgKmtpb2V2ZW50ZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTM0OC1cXHRsaXN0X2RlbChcXHUwMDI2a2lvZXZlbnRmZC1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjEzNDk6XFx0ZXZlbnRmZF9jdHhfcHV0KGtpb2V2ZW50ZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMzUwLVxcdGtmcmVlKGtpb2V2ZW50ZmQpO1xcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTEzNTM9c3RhdGljIGludCBwcml2Y21kX2lvZXZlbnRmZF9hc3NpZ24oc3RydWN0IHByaXZjbWRfaW9ldmVudGZkICppb2V2ZW50ZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQwMy1lcnJvcl9ldmVudGZkOlxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxNDA0OlxcdGV2ZW50ZmRfY3R4X3B1dChraW9ldmVudGZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQwNS1cXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xNDExPXN0YXRpYyBpbnQgcHJpdmNtZF9pb2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IHByaXZjbWRfaW9ldmVudGZkICppb2V2ZW50ZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQ1NC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmlvcmVxX2xvY2spO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxNDU1OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQ1Ni1cXG4tLVxcbmZzL2Fpby5jPTExNTY9c3RhdGljIGlubGluZSB2b2lkIGlvY2JfZGVzdHJveShzdHJ1Y3QgYWlvX2tpb2NiICppb2NiKVxcbi0tXFxuZnMvYWlvLmMtMTE1OC1cXHRpZiAoaW9jYi1cXHUwMDNla2lfZXZlbnRmZClcXG5mcy9haW8uYzoxMTU5OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpb2NiLVxcdTAwM2VraV9ldmVudGZkKTtcXG5mcy9haW8uYy0xMTYwLVxcdGlmIChpb2NiLVxcdTAwM2VraV9maWxwKVxcbi0tXFxuZnMvZXZlbnRmZC5jPTg5PXN0YXRpYyB2b2lkIGV2ZW50ZmRfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4tLVxcbmZzL2V2ZW50ZmQuYy05Ni0vKipcXG5mcy9ldmVudGZkLmM6OTc6ICogZXZlbnRmZF9jdHhfcHV0IC0gUmVsZWFzZXMgYSByZWZlcmVuY2UgdG8gdGhlIGludGVybmFsIGV2ZW50ZmQgY29udGV4dC5cXG5mcy9ldmVudGZkLmMtOTgtICogQGN0eDogW2luXSBQb2ludGVyIHRvIGV2ZW50ZmQgY29udGV4dC5cXG4tLVxcbmZzL2V2ZW50ZmQuYy0xMDItICovXFxuZnMvZXZlbnRmZC5jOjEwMzp2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcXG5mcy9ldmVudGZkLmMtMTA0LXtcXG4tLVxcbmZzL2V2ZW50ZmQuYy0xMDktfVxcbmZzL2V2ZW50ZmQuYzoxMTA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcXG5mcy9ldmVudGZkLmMtMTExLVxcbmZzL2V2ZW50ZmQuYz0xMTI9c3RhdGljIGludCBldmVudGZkX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9ldmVudGZkLmMtMTE2LVxcdHdha2VfdXBfcG9sbChcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIEVQT0xMSFVQKTtcXG5mcy9ldmVudGZkLmM6MTE3OlxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmZzL2V2ZW50ZmQuYy0xMTgtXFx0cmV0dXJuIDA7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaD0zMT1zdHJ1Y3QgZmlsZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTM0LVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oOjM1OnZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KTtcXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC0zNi1zdHJ1Y3QgZmlsZSAqZXZlbnRmZF9mZ2V0KGludCBmZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWxfbWFzayhzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX19wb2xsX3QgbWFzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTY0LVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oOjY1OnN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtNjYte1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9ODg9c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbi0tXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtOTItXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg6OTM6REVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtOTQtXFxuLS1cXG5pb191cmluZy9ldmVudGZkLmM9Mjg9c3RhdGljIHZvaWQgaW9fZXZlbnRmZF9mcmVlKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxcbi0tXFxuaW9fdXJpbmcvZXZlbnRmZC5jLTMxLVxcbmlvX3VyaW5nL2V2ZW50ZmQuYzozMjpcXHRldmVudGZkX2N0eF9wdXQoZXZfZmQtXFx1MDAzZWNxX2V2X2ZkKTtcXG5pb191cmluZy9ldmVudGZkLmMtMzMtXFx0a2ZyZWUoZXZfZmQpO1xcbi0tXFxubW0vbWVtY29udHJvbC12MS5jPTEwMjA9c3RhdGljIHZvaWQgbWVtY2dfZXZlbnRfcmVtb3ZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xMDMyLVxcbm1tL21lbWNvbnRyb2wtdjEuYzoxMDMzOlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudC1cXHUwMDNlZXZlbnRmZCk7XFxubW0vbWVtY29udHJvbC12MS5jLTEwMzQtXFx0a2ZyZWUoZXZlbnQpO1xcbi0tXFxubW0vbWVtY29udHJvbC12MS5jPTEwOTQ9c3RhdGljIHNzaXplX3QgbWVtY2dfd3JpdGVfZXZlbnRfY29udHJvbChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTIyNy1vdXRfcHV0X2V2ZW50ZmQ6XFxubW0vbWVtY29udHJvbC12MS5jOjEyMjg6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50LVxcdTAwM2VldmVudGZkKTtcXG5tbS9tZW1jb250cm9sLXYxLmMtMTIyOS1vdXRfa2ZyZWU6XFxuLS1cXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmM9MTUzND1zdGF0aWMgdm9pZCBtdHR5X2Rpc2FibGVfaW50eChzdHJ1Y3QgbWRldl9zdGF0ZSAqbWRldl9zdGF0ZSlcXG4tLVxcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTM2LVxcdGlmIChtZGV2X3N0YXRlLVxcdTAwM2VpbnR4X2V2dGZkKSB7XFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jOjE1Mzc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1kZXZfc3RhdGUtXFx1MDAzZWludHhfZXZ0ZmQpO1xcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTM4LVxcdFxcdG1kZXZfc3RhdGUtXFx1MDAzZWludHhfZXZ0ZmQgPSBOVUxMO1xcbi0tXFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jPTE1NDQ9c3RhdGljIHZvaWQgbXR0eV9kaXNhYmxlX21zaShzdHJ1Y3QgbWRldl9zdGF0ZSAqbWRldl9zdGF0ZSlcXG4tLVxcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTQ2LVxcdGlmIChtZGV2X3N0YXRlLVxcdTAwM2Vtc2lfZXZ0ZmQpIHtcXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmM6MTU0NzpcXHRcXHRldmVudGZkX2N0eF9wdXQobWRldl9zdGF0ZS1cXHUwMDNlbXNpX2V2dGZkKTtcXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTU0OC1cXHRcXHRtZGV2X3N0YXRlLVxcdTAwM2Vtc2lfZXZ0ZmQgPSBOVUxMO1xcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jPTEyMz1pcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG52aXJ0L2t2bS9ldmVudGZkLmMtMTQ2LVxcdFxcdGlycWZkX3Jlc2FtcGxlcl9zaHV0ZG93bihpcnFmZCk7XFxudmlydC9rdm0vZXZlbnRmZC5jOjE0NzpcXHRcXHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXFx1MDAzZXJlc2FtcGxlZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNDgtXFx0fVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jLTE1NS0jZW5kaWZcXG52aXJ0L2t2bS9ldmVudGZkLmM6MTU2OlxcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cXHUwMDNlZXZlbnRmZCk7XFxudmlydC9rdm0vZXZlbnRmZC5jLTE1Ny1cXHRrZnJlZShpcnFmZCk7XFxuLS1cXG52aXJ0L2t2bS9ldmVudGZkLmM9MzcxPWt2bV9pcnFmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycWZkICphcmdzKVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jLTUxMi1cXHRpZiAocmVzYW1wbGVmZCBcXHUwMDI2XFx1MDAyNiAhSVNfRVJSKHJlc2FtcGxlZmQpKVxcbnZpcnQva3ZtL2V2ZW50ZmQuYzo1MTM6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHJlc2FtcGxlZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTQtXFxudmlydC9rdm0vZXZlbnRmZC5jLTUxNS1cXHRpZiAoZXZlbnRmZCBcXHUwMDI2XFx1MDAyNiAhSVNfRVJSKGV2ZW50ZmQpKVxcbnZpcnQva3ZtL2V2ZW50ZmQuYzo1MTY6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTctXFxuLS1cXG52aXJ0L2t2bS9ldmVudGZkLmM9NTkwPWt2bV9pcnFmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxZmQgKmFyZ3MpXFxuLS1cXG52aXJ0L2t2bS9ldmVudGZkLmMtNjA2LVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2a3ZtLVxcdTAwM2VpcnFmZHMubG9jayk7XFxudmlydC9rdm0vZXZlbnRmZC5jOjYwNzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxudmlydC9rdm0vZXZlbnRmZC5jLTYwOC1cXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyNDo0MC4yMzYyMjIwMTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTIzODc3MDc2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgZXZlbnRmZF9jdHhfcHV0YCBpcyBhbGwgb3ZlciB0aGUga2VybmVsLCBodWg/ICBLVk0sIEFJTywgaW9fdXJpbmcsIERSTSBzeW5jb2Jqcywgdmhvc3QsIGV2ZW4gVVNCIGdhZGdldCBzdHVmZuKApiB0aGF0J3MgYSAqbG90KiBvZiBwbGFjZXMuICBJdCdzIG9idmlvdXNseSBhIGNvcmUgZnVuY3Rpb24uIEFscmlnaHQsIEknbSBhbHJlYWR5IHRyYWNraW5nIGFsbCB0aGVzZSBjYWxscy5cblxuU28sIHRoZSBwYXRjaCBpcyBhZGRpbmcgYGlmIChJU19FUlJfT1JfTlVMTChjdHgpKSByZXR1cm47YCB0byBgZXZlbnRmZF9jdHhfcHV0KClgLiAgVGhhdCBsb29rcyBsaWtlIGEgZGVmZW5zaXZlIGNoZWNrLCBndWFyZGluZyBhZ2FpbnN0IGEgYmFkIHBvaW50ZXIuICBNYWtlcyBzZW5zZSwgcGFydGljdWxhcmx5IGdpdmVuIHRoZSBicm9hZCB1c2FnZSBvZiB0aGUgZnVuY3Rpb24uICBJIHdvbmRlciwgdGhvdWdoLCBhcmUgdGhlcmUgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHM/ICBJdCdzIGdvb2QgdGhhdCB0aGV5IGFyZSBmb2N1c2luZyBvbiBhZGRpbmcgdGhpcy5cblxuV2FpdCBhIHNlY29uZOKApiBiZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRoYXQncyBjYWxsaW5nIGl0LCBJIHNob3VsZCBhbHNvIGNoZWNrIGlmIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgaGFzIHRoZSBkdW1teSBzdGF0aWMgaW5saW5lIGZvciB3aGVuIGAhQ09ORklHX0VWRU5URkRgLiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZml4IGlzIGNvcnJlY3RseSBpbXBsZW1lbnRlZC4gQ2hlY2tpbmcgdGhhdCB0aGUgaGVhZGVyIGd1YXJkIHByZXZlbnRzIHRoZSBpc3N1ZXMgb24ga2VybmVscyB0aGF0IGRvbid0IGV2ZW4gdXNlIGV2ZW50ZmQgd291bGQgYmUgYSBnb29kIHN0ZXAgaGVyZS4gIExldCBtZSBqdW1wIG92ZXIgdG8gdGhvc2UgbGluZXMgYW5kIG1ha2Ugc3VyZSB0aGUgaW5saW5lIGlzIHdoYXQgSSBleHBlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTUzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjI0OjUyLjYyMzkzMjUyNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA1NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1NTpcXHRcXG4gIDU2OlxcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGV2ZW50ZmRfY3R4ICpldmVudGZkX2N0eF9mZGdldChpbnQgZmQpXFxuICA1NzpcXHR7XFxuICA1ODpcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTtcXG4gIDU5OlxcdH1cXG4gIDYwOlxcdFxcbiAgNjE6XFx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXFxuICA2MjpcXHR7XFxuICA2MzpcXHR9XFxuICA2NDpcXHRcXG4gIDY1OlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuICA2NjpcXHR7XFxuICA2NzpcXHRcXG4gIDY4OlxcdH1cXG4gIDY5OlxcdFxcbiAgNzA6XFx0c3RhdGljIGlubGluZSBpbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsXFxuICA3MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHR3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIF9fdTY0ICpjbnQpXFxuICA3MjpcXHR7XFxuICA3MzpcXHRcXHRyZXR1cm4gLUVOT1NZUztcXG4gIDc0OlxcdH1cXG4gIDc1OlxcdFxcbiAgNzY6XFx0c3RhdGljIGlubGluZSBib29sIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQodm9pZClcXG4gIDc3OlxcdHtcXG4gIDc4OlxcdFxcdHJldHVybiB0cnVlO1xcbiAgNzk6XFx0fVxcbiAgODA6XFx0XFxuICA4MTpcXHRzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcXG4gIDgyOlxcdHtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0fVxcbiAgODU6XFx0XFxuICA4NjpcXHQjZW5kaWZcXG4gIDg3OlxcdFxcbiAgODg6XFx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbiAgODk6XFx0e1xcbiAgOTA6XFx0XFx0ZXZlbnRmZF9zaWduYWxfbWFzayhjdHgsIDApO1xcbiAgOTE6XFx0fVxcbiAgOTI6XFx0XFxuICA5MzpcXHRERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSlcXG4gIDk0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyNDo1Mi42MjM5OTc2MTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODE1NTYyODYzOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBDcmFzaCBWdWxuZXJhYmlsaXR5IGFuZCBpdHMgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwb3RlbnRpYWwga2VybmVsIGlzc3VlLCBhbmQgaXQncyBhbGwgYWJvdXQgaG93IGBldmVudGZkYCBjb250ZXh0cyBhcmUgaGFuZGxlZCBpbiB0aGUgRFJNIChEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIpIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIHN5bmMgb2JqZWN0cy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24uXG5cbkkgc3RhcnRlZCBieSBsb29raW5nIGF0IGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAsIHdoZXJlIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGlzIGRlZmluZWQgZm9yIGBldmVudGZkX2N0eGAsIGFuZCB0aGVuIEkgdHJhY2VkIGl0cyB1c2FnZSBpbiBgZnMvZXZlbnRmZC5jYCBhbmQgc3BlY2lmaWNhbGx5IGBldmVudGZkX2N0eF9wdXRgLiBUaGlzIGZ1bmN0aW9uLCBjcnVjaWFsbHksIGRlY3JlbWVudHMgYSByZWZlcmVuY2UgY291bnRlciAoYGtyZWZgKSBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50ZmQgY29udGV4dC5cblxuVGhlIGNydXggb2YgdGhlIGlzc3VlIGlzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBhbmQgYGV2ZW50ZmRfY3R4X3B1dGAuICBUaGUgZnVuY3Rpb24gYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIHJldHJpZXZlcyBhbiBgZXZlbnRmZF9jdHhgIHVzaW5nIGBldmVudGZkX2N0eF9mZGdldGAuIFRoZSBjb2RlIHVzZXMgdGhlIGBfX2ZyZWVgIGF0dHJpYnV0ZSB0byBjYWxsIGBldmVudGZkX2N0eF9wdXRgIG9uIGV4aXQuIElmIGBldmVudGZkX2N0eF9mZGdldGAgZmFpbHMgKHJldHVybmluZyBhbiBlcnJvciBwb2ludGVyIGxpa2UgYC1FQkFERmAgb3IgYC1FSU5WQUxgKSwgdGhlIGZ1bmN0aW9uIGp1bXBzIHRvIGBlcnJfZmRnZXRgLCB0cmlnZ2VyaW5nIHRoZSBjbGVhbnVwIG9uIHRoZSBlcnJvciBwb2ludGVyLlxuXG5IZXJlJ3MgdGhlIHByb2JsZW0gSSBzZWUuICpCZWZvcmUqIHRoZSBmaXgsIGBldmVudGZkX2N0eF9wdXRgICpkaWRuJ3QqIGNoZWNrIGlmIHRoZSBgZXZlbnRmZF9jdHhgIHBvaW50ZXIgd2FzIGFuIGVycm9yIHBvaW50ZXIgKHVzaW5nIGBJU19FUlJfT1JfTlVMTGApLiBUaGlzIG1lYW50IHRoYXQsIGlmIGBldmVudGZkX2N0eF9mZGdldGAgZmFpbGVkLCBjYWxsaW5nIGBldmVudGZkX2N0eF9wdXRgIG9uIHRoZSByZXR1cm5lZCBlcnJvciBwb2ludGVyIHdvdWxkIGxlYWQgdG8gYW4gYXR0ZW1wdCB0byBkZXJlZmVyZW5jZSBhIGdhcmJhZ2UgcG9pbnRlciwgY2F1c2luZyBhIGtlcm5lbCBjcmFzaCAoc3BlY2lmaWNhbGx5LCBhIHBhZ2UgZmF1bHQgYmVjYXVzZSBgY3R4LVx1MDAzZWtyZWZgIHdvdWxkIGJlIGludmFsaWQpLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby5cblxuVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IGZpeGVzIHRoaXMgYnkgYWRkaW5nIGBpZiAoSVNfRVJSX09SX05VTEwoY3R4KSkgcmV0dXJuO2AgYXQgdGhlIGJlZ2lubmluZyBvZiBgZXZlbnRmZF9jdHhfcHV0YC4gVGhpcyBzaW1wbGUgY2hlY2sgbWFrZXMgdGhlIGZ1bmN0aW9uIHNhZmUgdG8gY2FsbCB3aXRoIGVycm9yIHBvaW50ZXJzLCBwcmV2ZW50aW5nIHRoZSBkZXJlZmVyZW5jZSBhbmQgdGhlIGNyYXNoLiAgSXQncyBhIHRleHRib29rIGV4YW1wbGUgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5nLCBhbmQgYSBjcml0aWNhbCBmaXggZm9yIGEgc2VyaW91cyB2dWxuZXJhYmlsaXR5LlxuXG5JIGFsc28gc2VlIHRoYXQgb3RoZXIgZmFpbHVyZSBwYXRocyBhcmUgaGFuZGxlZCBjb3JyZWN0bHksIHN1Y2ggYXMgaWYgYGt6YWxsb2Nfb2JqYCBmYWlscy4gSW4gdGhvc2UgY2FzZXMsIHRoZSBjaGVjayBhbHNvIHNhZmVseSBoYW5kbGVzIHRoZSBgZXZlbnRmZF9jdHhfcHV0YCBjYWxsLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgY29kZSBwYXRoIHJlYWNoYWJsZT8gVGhlIGFuc3dlciBpcyBZRVMhICBgRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRGAgaXMgZXhwb3NlZCB0aHJvdWdoIHZpcnRpby1ncHUgKGFuZCBwb3RlbnRpYWxseSBvdGhlciB2aXJ0dWFsIERSTSBkZXZpY2VzKS4gVGhpcyBtZWFucyBhIHVzZXItc3BhY2UgYXBwbGljYXRpb24gY291bGQgdHJpZ2dlciB0aGlzIGNvZGUsIHBvdGVudGlhbGx5IGV4cGxvaXRpbmcgdGhpcyB2dWxuZXJhYmlsaXR5IChiZWZvcmUgdGhlIGZpeCkgdG8gY3Jhc2ggdGhlIGtlcm5lbCBvciB3b3JzZS4gIEkgbmVlZCB0byBjaGVjayBpZiB2a21zIGhhcyBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk1MSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDozODoyOC4xODY4NjUxMjlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0ODgwMjkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2a21zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0NzA4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0zNjE9c291cmNlIFxcXCJkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWdcXFwiXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MzYyOnNvdXJjZSBcXFwiZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNjMtc291cmNlIFxcXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTg2PW9iai0kKENPTkZJR19EUk1fVkdFTSlcXHQrPSB2Z2VtL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODc6b2JqLSQoQ09ORklHX0RSTV9WS01TKVxcdCs9IHZrbXMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE4OC1vYmotJChDT05GSUdfRFJNX05PVVZFQVUpICs9bm91dmVhdS9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTE0OD1hbWRncHUteSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMTQ5LVxcdGRjZV92MTBfMC5vIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZToxNTA6XFx0YW1kZ3B1X3ZrbXMub1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTE1MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oPTYyMT1zdHJ1Y3QgYW1kZ3B1X2RldmljZSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC03MDctXFx0Ym9vbFxcdFxcdFxcdFxcdGVuYWJsZV92aXJ0dWFsX2Rpc3BsYXk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6NzA4OlxcdHN0cnVjdCBhbWRncHVfdmttc19vdXRwdXQgICAgICAgKmFtZGdwdV92a21zX291dHB1dDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC03MDktXFx0c3RydWN0IGFtZGdwdV9tb2RlX2luZm9cXHRcXHRtb2RlX2luZm87XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmMtMTAyLSNpbmNsdWRlIFxcXCJqcGVnX3Y0XzBfNS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYzoxMDM6I2luY2x1ZGUgXFxcImFtZGdwdV92a21zLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTEwNC0jaW5jbHVkZSBcXFwibWVzX3YxMV8wLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmM9MjY0Mj1zdGF0aWMgdm9pZCBhbWRncHVfZGlzY292ZXJ5X3NldF9zcmlvdl9kaXNwbGF5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NDQtXFx0YW1kZ3B1X2RldmljZV9zZXRfc3Jpb3ZfdmlydHVhbF9kaXNwbGF5KGFkZXYpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYzoyNjQ1OlxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NDYtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jPTI2NDk9c3RhdGljIGludCBhbWRncHVfZGlzY292ZXJ5X3NldF9kaXNwbGF5X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYy0yNjUxLVxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jOjI2NTI6XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmMtMjY1My1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTgtI2luY2x1ZGUgXFxcIml2c3JjaWQvaXZzcmNpZF92aXNsYW5kczMwLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxOTojaW5jbHVkZSBcXFwiYW1kZ3B1X3ZrbXMuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTIwLSNpbmNsdWRlIFxcXCJhbWRncHVfZGlzcGxheS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0yNC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI1OiAqIERPQzogYW1kZ3B1X3ZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI2LSAqXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyNzogKiBUaGUgYW1kZ3B1IHZrbXMgaW50ZXJmYWNlIHByb3ZpZGVzIGEgdmlydHVhbCBLTVMgaW50ZXJmYWNlIGZvciBzZXZlcmFsIHVzZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjgtICogY2FzZXM6IGRldmljZXMgd2l0aG91dCBkaXNwbGF5IGhhcmR3YXJlLCBwbGF0Zm9ybXMgd2hlcmUgdGhlIGFjdHVhbCBkaXNwbGF5XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMxLSAqIHVzYWJsZS4gV2UgcHJldmlvdXNseSBlbXVsYXRlZCBhIGxlZ2FjeSBLTVMgaW50ZXJmYWNlLCBidXQgdGhlcmUgd2FzIGEgZGVzaXJlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozMjogKiB0byBtb3ZlIHRvIHRoZSBhdG9taWMgS01TIGludGVyZmFjZS4gVGhlIHZrbXMgZHJpdmVyIGRpZCBldmVyeXRoaW5nIHdlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMy0gKiBuZWVkZWQsIGJ1dCB3ZSB3YW50ZWQgS01TIHN1cHBvcnQgbmF0aXZlbHkgaW4gdGhlIGRyaXZlciB3aXRob3V0IGJ1ZmZlclxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzQtICogc2hhcmluZyBhbmQgdGhlIGFiaWxpdHkgdG8gc3VwcG9ydCBhbiBpbnN0YW5jZSBvZiBWS01TIHBlciBkZXZpY2UuIFdlIGZpcnN0XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozNTogKiBsb29rZWQgYXQgc3BsaXR0aW5nIHZrbXMgaW50byBhIHN0dWIgZHJpdmVyIGFuZCBhIGhlbHBlciBtb2R1bGUgdGhhdCBvdGhlclxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzYtICogZHJpdmVycyBjb3VsZCB1c2UgdG8gaW1wbGVtZW50IGEgdmlydHVhbCBkaXNwbGF5LCBidXQgdGhpcyBzdHJhdGVneSBlbmRlZCB1cFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzctICogYmVpbmcgbWVzc3kgZHVlIHRvIGRyaXZlciBzcGVjaWZpYyBjYWxsYmFja3MgbmVlZGVkIGZvciBidWZmZXIgbWFuYWdlbWVudC5cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjM4OiAqIFVsdGltYXRlbHksIGl0IHByb3ZlZCBlYXNpZXIgdG8gaW1wb3J0IHRoZSB2a21zIGNvZGUgYXMgaXQgbW9zdGx5IHVzZWQgY29yZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzktICogZHJtIGhlbHBlcnMgYW55d2F5Llxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQyOnN0YXRpYyBjb25zdCB1MzIgYW1kZ3B1X3ZrbXNfZm9ybWF0c1tdID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDMtXFx0RFJNX0ZPUk1BVF9YUkdCODg4OCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDUtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo0NjpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGFtZGdwdV92a21zX2NydGNfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00Ny1cXHQuc2V0X2NvbmZpZyAgICAgICAgICAgICA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU1LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgYW1kZ3B1X3ZrbXNfY3J0Y19oZWxwZXJfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01Ny1cXHREUk1fQ1JUQ19IRUxQRVJfVkJMQU5LX0ZVTkNTLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01OS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjYwOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTYxLVxcdFxcdFxcdCAgc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwgc3RydWN0IGRybV9wbGFuZSAqY3Vyc29yKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy02Ny1cXHRyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRldiwgY3J0YywgcHJpbWFyeSwgY3Vyc29yLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Njg6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmFtZGdwdV92a21zX2NydGNfZnVuY3MsIE5VTEwpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNjktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy03My1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjc0OlxcdGRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgXFx1MDAyNmFtZGdwdV92a21zX2NydGNfaGVscGVyX2Z1bmNzKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTc1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy04NS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjg2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBhbWRncHVfdmttc19jb25uZWN0b3JfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy04Ny1cXHQuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtOTMtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo5NDpzdGF0aWMgaW50IGFtZGdwdV92a21zX2Nvbm5fZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy05NS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTEzOC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjEzOTpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGFtZGdwdV92a21zX2Nvbm5faGVscGVyX2Z1bmNzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTQwOlxcdC5nZXRfbW9kZXMgICAgPSBhbWRncHVfdmttc19jb25uX2dldF9tb2RlcyxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTE0MS19O1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTQyLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGFtZGdwdV92a21zX3BsYW5lX2Z1bmNzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTQ0LVxcdC51cGRhdGVfcGxhbmVcXHRcXHQ9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTUxLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTUyOnN0YXRpYyB2b2lkIGFtZGdwdV92a21zX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNTMtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqb2xkX3N0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNTctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxNTg6c3RhdGljIGludCBhbWRncHVfdmttc19wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNTktXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2F0b21pY19jb21taXQgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xODctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxODg6c3RhdGljIGludCBhbWRncHVfdmttc19wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTg5LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0yNTctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyNTg6c3RhdGljIHZvaWQgYW1kZ3B1X3ZrbXNfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI1OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI4NS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI4NjpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgYW1kZ3B1X3ZrbXNfcHJpbWFyeV9oZWxwZXJfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyODc6XFx0LmF0b21pY191cGRhdGVcXHRcXHQ9IGFtZGdwdV92a21zX3BsYW5lX2F0b21pY191cGRhdGUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyODg6XFx0LmF0b21pY19jaGVja1xcdFxcdD0gYW1kZ3B1X3ZrbXNfcGxhbmVfYXRvbWljX2NoZWNrLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mjg5OlxcdC5wcmVwYXJlX2ZiXFx0XFx0PSBhbWRncHVfdmttc19wcmVwYXJlX2ZiLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MjkwOlxcdC5jbGVhbnVwX2ZiXFx0XFx0PSBhbWRncHVfdmttc19jbGVhbnVwX2ZiLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjkxLX07XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0yOTItXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyOTM6c3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmFtZGdwdV92a21zX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldixcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI5NC1cXHRcXHRcXHRcXHRcXHRcXHRlbnVtIGRybV9wbGFuZV90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMwNC1cXHRyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGV2LCBwbGFuZSwgMSBcXHUwMDNjXFx1MDAzYyBpbmRleCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMwNTpcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmFtZGdwdV92a21zX3BsYW5lX2Z1bmNzLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzA2OlxcdFxcdFxcdFxcdCAgICAgICBhbWRncHVfdmttc19mb3JtYXRzLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzA3OlxcdFxcdFxcdFxcdCAgICAgICBBUlJBWV9TSVpFKGFtZGdwdV92a21zX2Zvcm1hdHMpLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzA4LVxcdFxcdFxcdFxcdCAgICAgICBOVUxMLCB0eXBlLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzEzLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzE0OlxcdGRybV9wbGFuZV9oZWxwZXJfYWRkKHBsYW5lLCBcXHUwMDI2YW1kZ3B1X3ZrbXNfcHJpbWFyeV9oZWxwZXJfZnVuY3MpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzE1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYz0zMTk9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBkcm1fZW5jb2Rlcl9mdW5jc19jbGVhbnVwID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMjItXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozMjM6c3RhdGljIGludCBhbWRncHVfdmttc19vdXRwdXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3RcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMyNDpcXHRcXHRcXHRcXHQgICBhbWRncHVfdmttc19vdXRwdXQgKm91dHB1dCwgaW50IGluZGV4KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzI1LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzMxLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzMyOlxcdHByaW1hcnkgPSBhbWRncHVfdmttc19wbGFuZV9pbml0KGRldiwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwgaW5kZXgpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzMzLVxcdGlmIChJU19FUlIocHJpbWFyeSkpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMzNS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMzNjpcXHRyZXQgPSBhbWRncHVfdmttc19jcnRjX2luaXQoZGV2LCBjcnRjLCBwcmltYXJ5LCBjdXJzb3IpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzM3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMzOS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjM0MDpcXHRyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IsIFxcdTAwMjZhbWRncHVfdmttc19jb25uZWN0b3JfZnVuY3MsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNDEtXFx0XFx0XFx0XFx0IERSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFMKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzQ2LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzQ3OlxcdGRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsIFxcdTAwMjZhbWRncHVfdmttc19jb25uX2hlbHBlcl9mdW5jcyk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNDgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM4Mi1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjM4Mzpjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGFtZGdwdV92a21zX21vZGVfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zODQtXFx0LmZiX2NyZWF0ZSA9IGFtZGdwdV9kaXNwbGF5X3VzZXJfZnJhbWVidWZmZXJfY3JlYXRlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zODgtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozODk6c3RhdGljIGludCBhbWRncHVfdmttc19zd19pbml0KHN0cnVjdCBhbWRncHVfaXBfYmxvY2sgKmlwX2Jsb2NrKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzkwLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzkzLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mzk0OlxcdGFkZXYtXFx1MDAzZWFtZGdwdV92a21zX291dHB1dCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgYW1kZ3B1X3ZrbXNfb3V0cHV0LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzk1LVxcdFxcdFxcdFxcdFxcdFxcdGFkZXYtXFx1MDAzZW1vZGVfaW5mby5udW1fY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozOTY6XFx0aWYgKCFhZGV2LVxcdTAwM2VhbWRncHVfdmttc19vdXRwdXQpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zOTctXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQwMC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQwMTpcXHRhZGV2X3RvX2RybShhZGV2KS1cXHUwMDNlbW9kZV9jb25maWcuZnVuY3MgPSBcXHUwMDI2YW1kZ3B1X3ZrbXNfbW9kZV9mdW5jcztcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDE2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGV2LVxcdTAwM2Vtb2RlX2luZm8ubnVtX2NydGM7IGkrKykge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDE3OlxcdFxcdHIgPSBhbWRncHVfdmttc19vdXRwdXRfaW5pdChhZGV2X3RvX2RybShhZGV2KSwgXFx1MDAyNmFkZXYtXFx1MDAzZWFtZGdwdV92a21zX291dHB1dFtpXSwgaSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MTgtXFx0XFx0aWYgKHIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQzMS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQzMjpzdGF0aWMgaW50IGFtZGdwdV92a21zX3N3X2Zpbmkoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MzMte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00NDEtXFx0ZHJtX2VkaWRfZnJlZShhZGV2LVxcdTAwM2Vtb2RlX2luZm8uYmlvc19oYXJkY29kZWRfZWRpZCk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo0NDI6XFx0a2ZyZWUoYWRldi1cXHUwMDNlYW1kZ3B1X3ZrbXNfb3V0cHV0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ0My1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDQ1LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDQ2OnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfaHdfaW5pdChzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaylcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ0Ny17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ4My1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ4NDpzdGF0aWMgaW50IGFtZGdwdV92a21zX2h3X2Zpbmkoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00ODUte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00ODgtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo0ODk6c3RhdGljIGludCBhbWRncHVfdmttc19zdXNwZW5kKHN0cnVjdCBhbWRncHVfaXBfYmxvY2sgKmlwX2Jsb2NrKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDkwLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTAwLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTAxOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfcmVzdW1lKHN0cnVjdCBhbWRncHVfaXBfYmxvY2sgKmlwX2Jsb2NrKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTAyLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTA0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTA1OlxcdHIgPSBhbWRncHVfdmttc19od19pbml0KGlwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUwNi1cXHRpZiAocilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTEwLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTExOnN0YXRpYyBib29sIGFtZGdwdV92a21zX2lzX2lkbGUoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MTIte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MTUtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MTY6c3RhdGljIGludCBhbWRncHVfdmttc19zZXRfY2xvY2tnYXRpbmdfc3RhdGUoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2ssXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MTctXFx0XFx0XFx0XFx0XFx0ICBlbnVtIGFtZF9jbG9ja2dhdGluZ19zdGF0ZSBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTIxLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTIyOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKHN0cnVjdCBhbWRncHVfaXBfYmxvY2sgKmlwX2Jsb2NrLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTIzLVxcdFxcdFxcdFxcdFxcdCAgZW51bSBhbWRfcG93ZXJnYXRpbmdfc3RhdGUgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUyNy1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUyODpzdGF0aWMgY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBhbWRncHVfdmttc19pcF9mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUyOTpcXHQubmFtZSA9IFxcXCJhbWRncHVfdmttc1xcXCIsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MzA6XFx0LnN3X2luaXQgPSBhbWRncHVfdmttc19zd19pbml0LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTMxOlxcdC5zd19maW5pID0gYW1kZ3B1X3ZrbXNfc3dfZmluaSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzMjpcXHQuaHdfaW5pdCA9IGFtZGdwdV92a21zX2h3X2luaXQsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MzM6XFx0Lmh3X2ZpbmkgPSBhbWRncHVfdmttc19od19maW5pLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM0OlxcdC5zdXNwZW5kID0gYW1kZ3B1X3ZrbXNfc3VzcGVuZCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzNTpcXHQucmVzdW1lID0gYW1kZ3B1X3ZrbXNfcmVzdW1lLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM2OlxcdC5pc19pZGxlID0gYW1kZ3B1X3ZrbXNfaXNfaWRsZSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzNzpcXHQuc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlID0gYW1kZ3B1X3ZrbXNfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM4OlxcdC5zZXRfcG93ZXJnYXRpbmdfc3RhdGUgPSBhbWRncHVfdmttc19zZXRfcG93ZXJnYXRpbmdfc3RhdGUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MzktfTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU0MC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjU0MTpjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gYW1kZ3B1X3ZrbXNfaXBfYmxvY2sgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01NDItXFx0LnR5cGUgPSBBTURfSVBfQkxPQ0tfVFlQRV9EQ0UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU0NS1cXHQucmV2ID0gMCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjU0NjpcXHQuZnVuY3MgPSBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfZnVuY3MsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01NDctfTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmgtMTEtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaDoxMjojZGVmaW5lIGRybV9jcnRjX3RvX2FtZGdwdV92a21zX291dHB1dCh0YXJnZXQpIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oOjEzOlxcdGNvbnRhaW5lcl9vZih0YXJnZXQsIHN0cnVjdCBhbWRncHVfdmttc19vdXRwdXQsIGNydGMuYmFzZSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oLTE0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmg6MTU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBhbWRncHVfdmttc19pcF9ibG9jaztcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oLTE2LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmg6MTc6c3RydWN0IGFtZGdwdV92a21zX291dHB1dCB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaC0xOC1cXHRzdHJ1Y3QgYW1kZ3B1X2NydGMgY3J0YztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTczLSNpbmNsdWRlIFxcXCJhbWRncHVfYW1ka2ZkLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmM6NzQ6I2luY2x1ZGUgXFxcImFtZGdwdV92a21zLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtNzUtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYz0yMTg2PWludCBjaWtfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIxOTYtXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmM6MjE5NzpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIxOTgtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy0yMjE0LVxcdFxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jOjIyMTU6XFx0XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy0yMjE2LSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtMjIzMi1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYzoyMjMzOlxcdFxcdFxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtMjIzNC0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIyNTItXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmM6MjI1MzpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIyNTQtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9udi5jLTYxLSNpbmNsdWRlIFxcXCJqcGVnX3YzXzAuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9udi5jOjYyOiNpbmNsdWRlIFxcXCJhbWRncHVfdmttcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L252LmMtNjMtI2luY2x1ZGUgXFxcIm14Z3B1X252LmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTcyLSNpbmNsdWRlIFxcXCJhbWRncHVfZG0uaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jOjczOiNpbmNsdWRlIFxcXCJhbWRncHVfdmttcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtNzQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jPTI2ODc9aW50IHNpX3NldF9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI2OTktXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYzoyNzAwOlxcdFxcdFxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYy0yNzAxLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDX1NJKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYy0yNzE3LVxcdFxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmM6MjcxODpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjcxOS0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQ19TSSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjczNC1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jOjI3MzU6XFx0XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI3MzYtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jLTc1LSNpbmNsdWRlIFxcXCJzbXVpb192MTNfMC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NvYzE1LmM6NzY6I2luY2x1ZGUgXFxcImFtZGdwdV92a21zLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc29jMTUuYy03Ny0jaW5jbHVkZSBcXFwibXhncHVfYWkuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtNzktI2VuZGlmXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzo4MDojaW5jbHVkZSBcXFwiYW1kZ3B1X3ZrbXMuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTgxLSNpbmNsdWRlIFxcXCJteGdwdV92aS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYz0yMDQ4PWludCB2aV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDYxLVxcdFxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmM6MjA2MjpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjA2My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjA3MS1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jOjIwNzI6XFx0XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIwNzMtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIwOTEtXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMDkyOlxcdFxcdFxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDkzLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMTE0LVxcdFxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmM6MjExNTpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjExNi0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjEzMC1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jOjIxMzE6XFx0XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIxMzItI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIxNDktXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMTUwOlxcdFxcdFxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMTUxLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL2lndF9ydW5uZXIuc2g9MjU9Y2FzZSBcXFwiJERSSVZFUl9OQU1FXFxcIiBpblxcbmRyaXZlcnMvZ3B1L2RybS9jaS9pZ3RfcnVubmVyLnNoOjI2OiAgICBhbWRncHV8dmttc3xwYW50aG9yKVxcbmRyaXZlcnMvZ3B1L2RybS9jaS9pZ3RfcnVubmVyLnNoLTI3LSAgICAgICAgIyBDYW5ub3QgdXNlIEhXQ0lfS0VSTkVMX01PRFVMRVMgYXMgYXQgdGhhdCBwb2ludCB3ZSBkb24ndCBoYXZlIHRoZSBtb2R1bGUgaW4gL2xpYlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3Rlc3QueW1sPTQ2OT12aXJ0aW9fZ3B1Om5vbmU6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWwtNDc2LVxcbmRyaXZlcnMvZ3B1L2RybS9jaS90ZXN0LnltbDo0Nzc6dmttczpub25lOlxcbmRyaXZlcnMvZ3B1L2RybS9jaS90ZXN0LnltbC00NzgtICBleHRlbmRzOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3Rlc3QueW1sLTQ4MC0gIHZhcmlhYmxlczpcXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWw6NDgxOiAgICBEUklWRVJfTkFNRTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS90ZXN0LnltbC00ODItICAgIEdQVV9WRVJTSU9OOiBub25lXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjE6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0yLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9Nj1rbXNfY3Vyc29yX2xlZ2FjeUBsb25nLW5vbmJsb2NraW5nLW1vZGVzZXQtdnMtY3Vyc29yLWF0b21pY1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNy1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojg6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC05LSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MTM9a21zX2ZsaXBAYmFzaWMtZmxpcC12cy13Zl92YmxhbmtcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTE0LVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MTU6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xNi0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTIwPWttc19mbGlwQGZsaXAtdnMtZXhwaXJlZC12YmxhbmstaW50ZXJydXB0aWJsZVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMjEtXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDoyMjojIEJvYXJkIE5hbWU6IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTIzLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9Mjc9a21zX2ZsaXBAZmxpcC12cy13Zl92YmxhbmstaW50ZXJydXB0aWJsZVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMjgtXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDoyOTojIEJvYXJkIE5hbWU6IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTMwLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MzQ9a21zX2ZsaXBAcGxhaW4tZmxpcC1mYi1yZWNyZWF0ZS1pbnRlcnJ1cHRpYmxlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0zNS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjM2OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMzctIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD00MT1rbXNfZmxpcEBwbGFpbi1mbGlwLXRzLWNoZWNrXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC00Mi1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjQzOiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNDQtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD00OD1rbXNfZmxpcEBwbGFpbi1mbGlwLXRzLWNoZWNrLWludGVycnVwdGlibGVcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTQ5LVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6NTA6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC01MS0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTU1PWttc19mbGlwQGZsaXAtdnMtYWJzb2x1dGUtd2ZfdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC01Ni1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjU3OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNTgtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD02Mj1rbXNfZmxpcEBmbGlwLXZzLWFic29sdXRlLXdmX3ZibGFuay1pbnRlcnJ1cHRpYmxlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC02My1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjY0OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNjUtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD02OT1rbXNfZmxpcEBmbGlwLXZzLWJsb2NraW5nLXdmLXZibGFua1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNzAtXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo3MTojIEJvYXJkIE5hbWU6IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTcyLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9NzY9a21zX2N1cnNvcl9sZWdhY3lAZmxpcC12cy1jdXJzb3ItdmFyeWluZy1zaXplXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC03Ny1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojc4OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNzktIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD04Mz1rbXNfZmxpcEBmbGlwLXZzLWV4cGlyZWQtdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC04NC1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojg1OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtODYtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD05MD1rbXNfcGlwZV9jcmNfYmFzaWNAbm9uYmxvY2tpbmctY3JjLWZyYW1lLXNlcXVlbmNlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC05MS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjkyOiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtOTMtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvMjM2NGE2YmYtZTZiYy00NzQxLThjNzgtY2VhOGJkYjA2ZTAzQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD05Nz1rbXNfZmxpcEBtb2Rlc2V0LXZzLXZibGFuay1yYWNlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC05OC1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojk5OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMTAwLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsL2Y3ZDcyZWQ5LWE3ODMtNDZkNy1iNzVkLTU0MDcyYmRhMzJhM0Bjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MTA0PWttc19waXBlX2NyY19iYXNpY0BzdXNwZW5kLXJlYWQtY3JjXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMDUtXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDoxMDY6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMDctIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvOThkM2JhNTQtYmNiOS00MWFiLWFkYjEtYTE4YmE2MWVlMmU0QGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD0xMTE9a21zX3BsYW5lQHBsYW5lLXBhbm5pbmctYm90dG9tLXJpZ2h0LXN1c3BlbmRcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTExMi1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjExMzojIEJvYXJkIE5hbWU6IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTExNC0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC9iNThkMTVlYi0wOTRkLTRhYzItYWFkMy04M2U1MThjMmY1NWRAY29sbGFib3JhLmNvbS9ULyN1XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTojIGtlZXBzIHByaW50aW5nIHZrbXNfdmJsYW5rX3NpbXVsYXRlOiB2YmxhbmsgdGltZXIgb3ZlcnJ1biBhbmQgbmV2ZXIgZW5kc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0yLWttc19pbnZhbGlkX21vZGVAaW50LW1heC1jbG9ja1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0PTY9a21zX2N1cnNvcl9jcmMuKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEwLSMgSGFyZHdhcmUgbmFtZTogQ2hyb21pdW1PUyBjcm9zdm0sIEJJT1MgMFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxMTojIFdvcmtxdWV1ZTogdmttc19jb21wb3NlciB2a21zX2NvbXBvc2VyX3dvcmtlciBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTI6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MWM3LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xMy0jIENvZGU6IGM5IDBmIDg0IDZhIDAxIDAwIDAwIDhiIDQyIDMwIDJiIDQyIDI4IDQxIDM5IGM1IDBmIDhjIDZmIDAxIDAwIDAwIDQ5IDgzIGM3IDAxIDQ5IDM5IGRmIDc0IDNiIDRiIDhiIDM0IGZjIDQ4IDhiIDk2IDQ4IDAxIDAwIDAwIFxcdTAwM2M4YlxcdTAwM2UgNDIgNzggODkgYzEgLi4uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMjgtIyAgPyBhc21fZXhjX3BhZ2VfZmF1bHQrMHgyNi8weDMwXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjI5OiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MWM3LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDozMDojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDJhMy8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMzEtIyAgPyBzcnNvX3JldHVybl90aHVuaysweDUvMHg1ZlxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDozMjojICB2a21zX2NvbXBvc2VyX3dvcmtlcisweDIwNS8weDI0MCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMzMtIyAgcHJvY2Vzc19vbmVfd29yaysweDFmNC8weDZiMFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTQyLSMgIFxcdTAwM2MvVEFTS1xcdTAwM2VcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6NDM6IyBNb2R1bGVzIGxpbmtlZCBpbjogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC00NC0jIENSMjogMDAwMDAwMDAwMDAwMDA3OFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC00NS0jIC0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDo0NjojIFJJUDogMDAxMDpjb21wb3NlX2FjdGl2ZV9wbGFuZXMrMHgxYzcvMHg0ZTAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTQ3LSMgQ29kZTogYzkgMGYgODQgNmEgMDEgMDAgMDAgOGIgNDIgMzAgMmIgNDIgMjggNDEgMzkgYzUgMGYgOGMgNmYgMDEgMDAgMDAgNDkgODMgYzcgMDEgNDkgMzkgZGYgNzQgM2IgNGIgOGIgMzQgZmMgNDggOGIgOTYgNDggMDEgMDAgMDAgXFx1MDAzYzhiXFx1MDAzZSA0MiA3OCA4OSBjMSAuLi5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC02MS0jIEhhcmR3YXJlIG5hbWU6IENocm9taXVtT1MgY3Jvc3ZtLCBCSU9TIDBcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6NjI6IyBXb3JrcXVldWU6IHZrbXNfY29tcG9zZXIgdmttc19jb21wb3Nlcl93b3JrZXIgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjYzOiMgUklQOiAwMDEwOmNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDFjNy8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNjQtIyBDb2RlOiBjOSAwZiA4NCA2YSAwMSAwMCAwMCA4YiA0MiAzMCAyYiA0MiAyOCA0MSAzOSBjNSAwZiA4YyA2ZiAwMSAwMCAwMCA0OSA4MyBjNyAwMSA0OSAzOSBkZiA3NCAzYiA0YiA4YiAzNCBmYyA0OCA4YiA5NiA0OCAwMSAwMCAwMCBcXHUwMDNjOGJcXHUwMDNlIDQyIDc4IDg5IGMxIC4uLlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTc5LSMgID8gYXNtX2V4Y19wYWdlX2ZhdWx0KzB4MjYvMHgzMFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDo4MDojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDFjNy8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6ODE6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMrMHgyYTMvMHg0ZTAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTgyLSMgID8gc3Jzb19yZXR1cm5fdGh1bmsrMHg1LzB4NWZcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6ODM6IyAgdmttc19jb21wb3Nlcl93b3JrZXIrMHgyMDUvMHgyNDAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTg0LSMgIHByb2Nlc3Nfb25lX3dvcmsrMHgxZjQvMHg2YjBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05My0jICBcXHUwMDNjL1RBU0tcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0Ojk0OiMgTW9kdWxlcyBsaW5rZWQgaW46IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtOTUtIyBDUjI6IDAwMDAwMDAwMDAwMDAwNzhcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtOTYtIyAtLS1bIGVuZCB0cmFjZSAwMDAwMDAwMDAwMDAwMDAwIF0tLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6OTc6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MWM3LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05OC0jIENvZGU6IGM5IDBmIDg0IDZhIDAxIDAwIDAwIDhiIDQyIDMwIDJiIDQyIDI4IDQxIDM5IGM1IDBmIDhjIDZmIDAxIDAwIDAwIDQ5IDgzIGM3IDAxIDQ5IDM5IGRmIDc0IDNiIDRiIDhiIDM0IGZjIDQ4IDhiIDk2IDQ4IDAxIDAwIDAwIFxcdTAwM2M4YlxcdTAwM2UgNDIgNzggODkgYzEgLi4uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTEyLSMgSGFyZHdhcmUgbmFtZTogQ2hyb21pdW1PUyBjcm9zdm0sIEJJT1MgMFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxMTM6IyBXb3JrcXVldWU6IHZrbXNfY29tcG9zZXIgdmttc19jb21wb3Nlcl93b3JrZXIgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjExNDojIFJJUDogMDAxMDpjb21wb3NlX2FjdGl2ZV9wbGFuZXMrMHgzNDQvMHg0ZTAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTExNS0jIENvZGU6IDZhIDM0IDBmIDhlIDkxIGZlIGZmIGZmIDQ0IDg5IGVhIDQ4IDhkIDdjIDI0IDQ4IGU4IDcxIGYwIGZmIGZmIDRiIDhiIDA0IGZjIDQ4IDhiIDRjIDI0IDUwIDQ4IDhiIDdjIDI0IDQwIDQ4IDhiIDgwIDQ4IDAxIDAwIDAwIFxcdTAwM2M0OFxcdTAwM2UgNjMgNzAgMTggOGIuLi5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xMzAtIyAgPyBhc21fZXhjX3BhZ2VfZmF1bHQrMHgyNi8weDMwXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjEzMTojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDM0NC8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTMyOiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MzJmLzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xMzMtIyAgPyBzcnNvX3JldHVybl90aHVuaysweDUvMHg1ZlxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxMzQ6IyAgdmttc19jb21wb3Nlcl93b3JrZXIrMHgyMDUvMHgyNDAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEzNS0jICBwcm9jZXNzX29uZV93b3JrKzB4MjAxLzB4NmMwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ0LSMgIFxcdTAwM2MvVEFTS1xcdTAwM2VcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTQ1OiMgTW9kdWxlcyBsaW5rZWQgaW46IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ2LSMgQ1IyOiAwMDAwMDAwMDAwMDAwMDE4XFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE0Ny0jIC0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxNDg6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MzQ0LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xNDktIyBDb2RlOiA2YSAzNCAwZiA4ZSA5MSBmZSBmZiBmZiA0NCA4OSBlYSA0OCA4ZCA3YyAyNCA0OCBlOCA3MSBmMCBmZiBmZiA0YiA4YiAwNCBmYyA0OCA4YiA0YyAyNCA1MCA0OCA4YiA3YyAyNCA0MCA0OCA4YiA4MCA0OCAwMSAwMCAwMCBcXHUwMDNjNDhcXHUwMDNlIDYzIDcwIDE4IDhiLi4uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ9MTYwPWttc19jdXJzb3JfZWRnZV93YWxrQDEyOHgxMjgtcmlnaHQtZWRnZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE2My0jIEhhcmR3YXJlIG5hbWU6IENocm9taXVtT1MgY3Jvc3ZtLCBCSU9TIDBcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTY0OiMgV29ya3F1ZXVlOiB2a21zX2NvbXBvc2VyIHZrbXNfY29tcG9zZXJfd29ya2VyIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxNjU6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MzQ0LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xNjYtIyBDb2RlOiA2YSAzNCAwZiA4ZSA5MSBmZSBmZiBmZiA0NCA4OSBlYSA0OCA4ZCA3YyAyNCA0OCBlOCA3MSBmMCBmZiBmZiA0YiA4YiAwNCBmYyA0OCA4YiA0YyAyNCA1MCA0OCA4YiA3YyAyNCA0MCA0OCA4YiA4MCA0OCAwMSAwMCAwMCBcXHUwMDNjNDhcXHUwMDNlIDYzIDcwIDE4IDhiLi4uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTgzLSMgID8gYXNtX2V4Y19wYWdlX2ZhdWx0KzB4MjYvMHgzMFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxODQ6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMrMHgzNDQvMHg0ZTAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE4NTojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDMyZi8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTg2LSMgID8gc3Jzb19yZXR1cm5fdGh1bmsrMHg1LzB4NWZcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTg3OiMgIHZrbXNfY29tcG9zZXJfd29ya2VyKzB4MjA1LzB4MjQwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xODgtIyAgcHJvY2Vzc19vbmVfd29yaysweDIwMS8weDZjMFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE5Ny0jICBcXHUwMDNjL1RBU0tcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE5ODojIE1vZHVsZXMgbGlua2VkIGluOiB2a21zXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM4OjI5LjAzNTY3NTg0NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1MTAyMzkyMjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgVktNUyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgcmVhbGx5IHVuZGVyc3RhbmQgd2hhdCB0aGUgVmlydHVhbCBLTVMgZHJpdmVyLCBgdmttc19kcnYuY2AsIGJyaW5ncyB0byB0aGUgdGFibGUuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGNhcGFiaWxpdGllcy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgb2YgY2hlY2tpbmcgb3V0IGBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jYCB0byBkbyBhIGRlZXAgZGl2ZSBhbmQgZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGUgZHJpdmVyJ3MgZmVhdHVyZSBzZXQuIFRoaXMgd2lsbCBoZWxwIGluZm9ybSBhIGJldHRlciBhcmNoaXRlY3R1cmFsIHBsYW4uIFNvLCBJ4oCZbSBnb2luZyB0byBzdGFydCBieSBnb2luZyB0aHJvdWdoIHRoZSBjb2RlLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhpcyB0aGluZyAqYWN0dWFsbHkqIGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODg3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzg6MzQuMTM4MDcxNjA2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYzOTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcml2ZXJfZmVhdHVyZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3ZrbXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmM9OTM9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIHZrbXNfZHJpdmVyID0ge1xcbmRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmM6OTQ6XFx0LmRyaXZlcl9mZWF0dXJlc1xcdD0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDIHwgRFJJVkVSX0dFTSxcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jLTk1LVxcdC5mb3BzXFx0XFx0XFx0PSBcXHUwMDI2dmttc19kcml2ZXJfZm9wcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzg6MzQuMTg2NzIwMTA1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjk3OTc0NTM2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRGlnZ2luZyBpbnRvIFN5bmNocm9uaXphdGlvbiBPYmplY3RzKipcblxuQWxyaWdodCwgc28gYHZrbXNgIGlzIGdpdmluZyBtZSBzb21lIHRyb3VibGUgd2l0aCBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgLiBUaGF0J3MgYSBiaXQgdW5leHBlY3RlZC4gQnV0LCBob2xkIG9uIGEgbWludXRlLCBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgYHZpcnRpb19ncHVgIG1pZ2h0IHN1cHBvcnQgaXQuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0LiBIbW0sIGxldCBtZSBqdXN0IG9wZW4gdGhlIHNvdXJjZSB0cmVlLi4uXG5cbk9rYXksIG5vdywgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYHZnZW1gIGp1c3QgaW4gY2FzZSBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuY2AgYW5kIHNlZSBpZiB0aGUgdGltZWxpbmUgc3VwcG9ydCBpcyBpbiB0aGVyZSwgb3IgaWYgSSBzaG91bGQgZXZlbiBleHBlY3QgaXQgdG8gYmUuIEJldHRlciB0byBiZSB0aG9yb3VnaCwgSSBzdXBwb3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDIyMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM4OjQzLjk4NDE3NjgzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA5MzU3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJpdmVyX2ZlYXR1cmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92Z2VtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jPTExMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgdmdlbV9kcml2ZXIgPSB7XFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYzoxMTE6XFx0LmRyaXZlcl9mZWF0dXJlc1xcdFxcdD0gRFJJVkVSX0dFTSB8IERSSVZFUl9SRU5ERVIsXFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYy0xMTItXFx0Lm9wZW5cXHRcXHRcXHRcXHQ9IHZnZW1fb3BlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzg6NDQuMDM1MTIyMTA1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI0NDc1ODg1OTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZpcnRpby1HUFUgYW5kIFN5bmNvYmo6IEEgU3l6a2FsbGVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdmlydGlvLWdwdSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgaXRzIGRyaXZlciBpbXBsZW1lbnRhdGlvbiAoYGRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9kcnYuY2ApLiBJdCdzIGEgc3RhbmRhcmQgdmlydGlvIGhhcmR3YXJlIGNvbXBvbmVudCB0aGF0J3Mgd2VsbC1zdXBwb3J0ZWQgaW4gUUVNVS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzZWUgaXQncyBhIG1vZGVzZXR0aW5nIGRyaXZlciwgc3VwcG9ydHMgR0VNLCByZW5kZXJpbmcsIGF0b21pYyBvcGVyYXRpb25zLCBzeW5jIG9iamVjdHMsIHRpbWVsaW5lcyBhbmQgZXZlbiBjdXJzb3IgaG90IHNwb3RzLlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCBgZXZlbnRmZGAuIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBjb3JlIGZpbGVzeXN0ZW0gKGBmcy9ldmVudGZkLmNgKSwgd2l0aCBmdW5jdGlvbnMgbGlrZSBgZXZlbnRmZF9jdHhfcHV0YCBsaXZpbmcgdGhlcmUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBkb2VzIHN5emthbGxlciwgbXkgZ28tdG8gZnV6emluZyB0b29sLCBoYXZlIERSTSBpb2N0bHMgZW5hYmxlZD8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IHN1cHBvcnQgYERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkRgP1xuXG5BIHF1aWNrIGNoZWNrIGNvbmZpcm1zIGl0ISBTeXprYWxsZXIgKmRvZXMqIGhhdmUgZGVzY3JpcHRpb25zIGZvciBgZHJtX3N5bmNvYmpfZXZlbnRmZGAgaW4gaXRzIGBzeXMvbGludXgvZHJtLnR4dGAgZmlsZS4gUGVyZmVjdCEgSXQgZXZlbiBoYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uOiBgaW9jdGwkRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRChmZCBmZF9kcm0sIGNtZCBjb25zdFtEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEXSwgYXJnIHB0cltpbiwgZHJtX3N5bmNvYmpfZXZlbnRmZF0pYC5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzLiBXaGF0IGNvbmZpZ3VyYXRpb25zIGFjdHVhbGx5IGVuYWJsZSBgZHJtX3N5bmNvYmouY2A/IEdvdHRhIGRpZyB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGVzLiBUaW1lIHRvIGdyZXAgZm9yIGBkcm1fc3luY29iai5vYCBpbiB0aGUgYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWAgdG8gZmluZCBvdXQuIFRoaXMgaXMgYWxsIHZlcnkgcHJvbWlzaW5nIGZvciBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDU5OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDozOTowOC41MTEwMTEzMTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzI0NzcyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fc3luY29ialxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTM1PWRybS15IDo9IFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS02OC1cXHRkcm1fcmVjdC5vIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6Njk6XFx0ZHJtX3N5bmNvYmoubyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTcwLVxcdGRybV9zeXNmcy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzk6MDkuMDQ0MjY5MDY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjY2NDA0ODgzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBJbnF1aXJ5OiBEUk0gU3luYyBPYmplY3RzIGFuZCBFdmVudEZEKipcblxuT2theSwgc28gYGRybV9zeW5jb2JqLm9gIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChEUk0pIGVjb3N5c3RlbSDigJMgYnVpbHQgaW4gd2hlbmV2ZXIgYENPTkZJR19EUk1gIGlzIHR1cm5lZCBvbiwgd2hpY2ggaXMgZ29vZCB0byByZW1lbWJlciBmb3IgZnV0dXJlIGRlYnVnZ2luZy4gSXQncyBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5LCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBrZXkuIEFuZCwgdG8gYmUgc3BlY2lmaWMsIGB2aXJ0aW8tZ3B1YCdzIGluY2x1c2lvbiBpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfRFJNX1ZJUlRJT19HUFVgLCBzbyBJJ2xsIGtlZXAgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiBtaW5kLlxuXG5Ob3csIG15IGN1cnJlbnQgZm9jdXMgaXMgb24gYGZzL2V2ZW50ZmQuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgaXMgYW4gb3ZlcmxhcCBpbiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBmcy9NYWtlZmlsZWAgdG8gc2VlIGhvdyBgZXZlbnRmZC5vYCBpcyBoYW5kbGVkIGF0IGJ1aWxkIHRpbWUuIEEgcXVpY2sgZ3JlcCBzaG91bGQgcmV2ZWFsIGFueSByZWxldmFudCBydWxlcyBvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlc2Ugb3RoZXIgRFJNIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzkzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzk6MTUuNjg0NzYwMTk4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgxODQzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXZlbnRmZFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9NYWtlZmlsZT0yOD1vYmotJChDT05GSUdfVElNRVJGRClcXHRcXHQrPSB0aW1lcmZkLm9cXG5mcy9NYWtlZmlsZToyOTpvYmotJChDT05GSUdfRVZFTlRGRClcXHRcXHQrPSBldmVudGZkLm9cXG5mcy9NYWtlZmlsZS0zMC1vYmotJChDT05GSUdfQUlPKSAgICAgICAgICAgICAgICs9IGFpby5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM5OjE1LjgyMjk1MjA1NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2NzU0MjkwNTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIFZpcnR1YWxpemVkIEdyYXBoaWNzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gZ3JhcGhpY3MgYW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBldmVudGZkIGFuZCBEUk0gYXJlIGludGVncmF0ZWQsIGdpdmVuIHRoZWlyIGltcG9ydGFuY2UgaW4gbW9kZXJuIGdyYXBoaWNzIHN0YWNrcy4gSSB3YW50IHRvIGRlbHZlIGludG8gdGhpcyBpbnRlcmFjdGlvbiBmdXJ0aGVyLlxuXG5JJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgQ09ORklHX0RSTV9WSVJUSU9fR1BVYCBvcHRpb24uIFRoaXMgc2VlbXMgbGlrZSB0aGUga2V5IHRvIHZpcnR1YWxpemVkIGdyYXBoaWNzIHRocm91Z2ggdGhlIHZpcnRpbyBpbnRlcmZhY2UuIFRvIHVuZGVyc3RhbmQgaG93IGl0J3MgY29uZmlndXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCBJJ2xsIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIEtjb25maWcgZmlsZSBub3cuIFRoaXMgd2lsbCBsaWtlbHkgc2hvdyBtZSB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgYENPTkZJR19EUk1fVklSVElPX0dQVWAsIHdoaWNoIGZlYXR1cmVzIGNhbiBiZSBlbmFibGVkLCBhbmQgaG93IGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHZpcnRpby1iYXNlZCB2aXJ0dWFsaXplZCBHUFVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTc2OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM5OjIyLjU3NzI0NjA5M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBEUk1fVklSVElPX0dQVVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBHUFUgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgVklSVElPX01FTlUgXFx1MDAyNlxcdTAwMjYgTU1VXFxuICAgNTpcXHRcXHRzZWxlY3QgVklSVElPXFxuICAgNjpcXHRcXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG4gICA3OlxcdFxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbiAgIDg6XFx0XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuICAgOTpcXHRcXHRzZWxlY3QgVklSVElPX0RNQV9TSEFSRURfQlVGRkVSXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgICBUaGlzIGlzIHRoZSB2aXJ0dWFsIEdQVSBkcml2ZXIgZm9yIHZpcnRpby4gIEl0IGNhbiBiZSB1c2VkIHdpdGhcXG4gIDEyOlxcdFxcdCAgIFFFTVUgYmFzZWQgVk1NcyAobGlrZSBLVk0gb3IgWGVuKS5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICAgSWYgdW5zdXJlIHNheSBNLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb25maWcgRFJNX1ZJUlRJT19HUFVfS01TXFxuICAxNzpcXHRcXHRib29sIFxcXCJWaXJ0aW8gR1BVIGRyaXZlciBtb2Rlc2V0dGluZyBzdXBwb3J0XFxcIlxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBEUk1fVklSVElPX0dQVVxcbiAgMTk6XFx0XFx0ZGVmYXVsdCB5XFxuICAyMDpcXHRcXHRoZWxwXFxuICAyMTpcXHRcXHQgICBFbmFibGUgbW9kZXNldHRpbmcgc3VwcG9ydCBmb3IgdmlydGlvIEdQVSBkcml2ZXIuICBUaGlzIGNhbiBiZVxcbiAgMjI6XFx0XFx0ICAgZGlzYWJsZWQgaW4gY2FzZXMgd2hlcmUgb25seSBcXFwiaGVhZGxlc3NcXFwiIHVzYWdlIG9mIHRoZSBHUFUgaXNcXG4gIDIzOlxcdFxcdCAgIHJlcXVpcmVkLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHQgICBJZiB1bnN1cmUsIHNheSBZLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDozOToyMi41NzczMjkwMjNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODk2MjYzMzgyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGYsIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRVZFTlRGRCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhpcyBgQ09ORklHX0VWRU5URkRgIHNpdHVhdGlvbi4gTXkgZmlyc3QgbW92ZSBpcyB0byBjb25maXJtIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgd2hhdCBjb250ZXh0IGl0J3MgaW4uIExldCdzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBvYnZpb3VzIGxvY2F0aW9uOiB0aGUgYGZzL0tjb25maWdgIGZpbGUuIEdpdmVuIHRoZSBuYW1lLCBpdCdzIGhpZ2hseSBsaWtlbHkgaXQncyBhIGZpbGVzeXN0ZW0tcmVsYXRlZCBmZWF0dXJlLiBOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvdmVyIGFsbCBiYXNlcyBpbiB0aGUgaW5pdGlhbCBzY29waW5nLCBJJ2xsIHF1aWNrbHkgZ3JlcCBhY3Jvc3MgYGluaXQvS2NvbmZpZ2AgdG9vLCBqdXN0IGluIGNhc2UgaXQncyBkZWNsYXJlZCB0aGVyZS4gR3JhYmJpbmcgYSBzaW1wbGUgc2VhcmNoIHRlcm0gbGlrZSBgY29uZmlnIEVWRU5URkRgIHNob3VsZCB5aWVsZCB0aGUgcHJlY2lzZSBkZWZpbml0aW9uIGluIGVpdGhlciBmaWxlLiBJJ20gYWltaW5nIGZvciBhIHF1aWNrIGFuZCB0YXJnZXRlZCBzY2FuIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDEwLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDozOTozMS41Mzk5NjY2ODZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDU2MjM0NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVWRU5URkRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTE5MjM9Y29uZmlnIFRJTUVSRkRcXG4tLVxcbmluaXQvS2NvbmZpZy0xOTMxLVxcbmluaXQvS2NvbmZpZzoxOTMyOmNvbmZpZyBFVkVOVEZEXFxuaW5pdC9LY29uZmlnLTE5MzMtXFx0Ym9vbCBcXFwiRW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFxcXCIgaWYgRVhQRVJUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM5OjMzLjc0NTU5NjU3MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyOTIwMzI0NjgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKktjb25maWcgRGl2ZTogSW52ZXN0aWdhdGluZyBhIFNwZWNpZmljIFllYXIqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIFwiV2hlcmUgc2hvdWxkIEkgc3RhcnQgbG9va2luZyB0byB1bmRlcnN0YW5kIG9yIGFkZHJlc3Mgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHllYXIgMTkzMiB3aXRoaW4gdGhpcyBjb250ZXh0P1wiIE15IGd1dCByZWFjdGlvbiBpcyB0byBjaGVjayB0aGUgYGluaXQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvIHBsYWNlIGZvciBjb3JlIHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBidWlsZCBzeXN0ZW0uIExldCdzIHNlZSBpZiAxOTMyIGlzIGRlZmluZWQgdGhlcmUsIG9yIGlmIHRoZXJlJ3MgYW55IGluZGljYXRpb24gb2YgaXRzIHJlbGV2YW5jZSB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyB0aGUgbW9zdCBsb2dpY2FsIGZpcnN0IHN0ZXAgd2hlbiBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjczMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQwOjAyLjk0ODg0NzEzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5pdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MzAsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE5MzA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbjE5MzE6XFx0XFxuMTkzMjpcXHRjb25maWcgRVZFTlRGRFxcbjE5MzM6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFxcXCIgaWYgRVhQRVJUXFxuMTkzNDpcXHRcXHRkZWZhdWx0IHlcXG4xOTM1OlxcdFxcdGhlbHBcXG4xOTM2OlxcdFxcdCAgRW5hYmxlIHRoZSBldmVudGZkKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gcmVjZWl2ZSBib3RoXFxuMTkzNzpcXHRcXHQgIGtlcm5lbCBub3RpZmljYXRpb24gKGllLiBLQUlPKSBvciB1c2Vyc3BhY2Ugbm90aWZpY2F0aW9ucy5cXG4xOTM4OlxcdFxcbjE5Mzk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbjE5NDA6XFx0XFxuMTk0MTpcXHRjb25maWcgU0hNRU1cXG4xOTQyOlxcdFxcdGJvb2wgXFxcIlVzZSBmdWxsIHNobWVtIGZpbGVzeXN0ZW1cXFwiIGlmIEVYUEVSVFxcbjE5NDM6XFx0XFx0ZGVmYXVsdCB5XFxuMTk0NDpcXHRcXHRkZXBlbmRzIG9uIE1NVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDo0MDowMi45NDg5NzQ1NDRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTIwNjA1ODE5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZ1bmN0aW9uIENhbGwgU2NvcGUgZm9yIEZ1enppbmcgUHJpb3JpdGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIGxvb2tpbmcgYXQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBldmVudGZkcyAoYENPTkZJR19FVkVOVEZEYCksIERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlciAoYENPTkZJR19EUk1gKSwgYW5kIHNwZWNpZmljYWxseSB0aGUgVmlydElPIEdQVSBpbiBEUk0gKGBDT05GSUdfRFJNX1ZJUlRJT19HUFVgKS4gVGhlIHRhc2sgaXMgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGNoYW5nZXMuIEkgc2VlIHR3byBmdW5jdGlvbnMgd2VyZSBtb2RpZmllZDogYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGluIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY2AgYW5kIGBldmVudGZkX2N0eF9wdXRgIGluIGBmcy9ldmVudGZkLmNgLlxuXG5Ob3csIHRoZSByZWQgZmxhZyBnb2VzIHVwLiBUaGUgZG9jdW1lbnRhdGlvbiB3YXJucyBhZ2FpbnN0IGxpc3RpbmcgXCJ1YmlxdWl0b3VzIGxpZmVjeWNsZSBob3QtcGF0aHMuXCIgSSBoYXZlIHRvIGFzayBteXNlbGY6IElzIGBldmVudGZkX2N0eF9wdXRgIHViaXF1aXRvdXM/IEl0J3MgY2FsbGVkIHdoZW4gYW4gZXZlbnRmZCBjb250ZXh0IGlzIGNsb3NlZCBvciByZWxlYXNlZCwgc28gbm8sIGl0J3MgcHJldHR5IHNwZWNpZmljLiBJdCdzIG5vdCBtZW1vcnkgYWxsb2NhdGlvbiwgYSBwYWdlIGZhdWx0IGhhbmRsZXIsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uLlxuXG5CdXQsIGFuZCB0aGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCwgY291bGQgaXQgYmUgY2FsbGVkIGJ5ICphbG1vc3QgZXZlcnkgcHJvZ3JhbSogaW4gdGhlIGNvcnB1cz8gTm8sIGl0J3Mgb25seSBwcm9ncmFtcyB0aGF0IHVzZSBldmVudGZkLCBzdWNoIGFzIEtWTSwgaW9fdXJpbmcgZXZlbnRmZCwgdmhvc3QsIERSTSBzeW5jb2JqIGV2ZW50ZmQsIGV0Yy4gU28gd2UncmUgaW4gdGhlIGNsZWFyIHRoZXJlLlxuXG5XaGF0IGFib3V0IGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYD8gSXQncyB0aGUgZXhhY3QgZW50cnlwb2ludCBmdW5jdGlvbiB0aGF0J3MgYmVlbiBtb2RpZmllZCEgUGVyZmVjdCwgdGhhdCdzIGRlZmluaXRlbHkgYSB0YXJnZXQuXG5cbkNhbiBJIGluY2x1ZGUgYGV2ZW50ZmRfY3R4X3B1dGAgYXMgd2VsbD8gTGV0J3MgY2hlY2sgdGhlIGd1aWRhbmNlOiBcIkxpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cyBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cIiBCaW5nbywgdGhlIHBhdGNoIG1vZGlmaWVzICpib3RoKiBgZXZlbnRmZF9jdHhfcHV0YCBhbmQgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLiBTbywgdGhleSBib3RoIGZpdCB0aGUgZGVzY3JpcHRpb24uXG5cblRoZXNlIGFyZW4ndCBzdGF0aWMgZnVuY3Rpb25zLCB0aGV5IHdlcmUgbW9kaWZpZWQsIGFuZCBub3QgdWJpcXVpdG91cy4gTGV0J3MgbWFrZSBzdXJlIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBpcyBub24tc3RhdGljOiBJIGNhbiBzZWUgaXQncyBleHBvc2VkIHZpYSBgZHJtX2lvY3Rsc2AgYW5kIGBldmVudGZkX2N0eF9wdXRgIGlzIGBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpYC4gR29vZC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBoYXZlIHRvIGNoZWNrIGZvciBvdGhlciBjaGFuZ2VkIGZ1bmN0aW9ucy4gSSBzZWUgYERFRklORV9GUkVFYCBpbiBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIHdpdGggYGV2ZW50ZmRfY3R4X3B1dGAuIFRoaXMgaXMgZGVmaW5pbmcgYSBjbGVhbnVwIGZ1bmN0aW9uIHN1Y2ggYXMgYGZyZWVfZXZlbnRmZGAgb3IgYGNsYXNzX2V2ZW50ZmRfZGVzdHJ1Y3RvcmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBERUZJTkVfRlJFRWAgaXMgdXNlZC4gSSdsbCBjaGVjayBgaW5jbHVkZS9saW51eC9jbGVhbnVwLmhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzExNywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQwOjE1LjAwOTU2MTI1MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNDk0NTk5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIERFRklORV9GUkVFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy94ZnNfdHJhY2UuaD0zMTE1PURFQ0xBUkVfRVZFTlRfQ0xBU1MoeGZzX2ZyZWVfZXh0ZW50X2RlZmVycmVkX2NsYXNzLFxcbi0tXFxuZnMveGZzL3hmc190cmFjZS5oLTMxNDItKTtcXG5mcy94ZnMveGZzX3RyYWNlLmg6MzE0MzojZGVmaW5lIERFRklORV9GUkVFX0VYVEVOVF9ERUZFUlJFRF9FVkVOVChuYW1lKSBcXFxcXFxuZnMveGZzL3hmc190cmFjZS5oLTMxNDQtREVGSU5FX0VWRU5UKHhmc19mcmVlX2V4dGVudF9kZWZlcnJlZF9jbGFzcywgbmFtZSwgXFxcXFxcbi0tXFxuZnMveGZzL3hmc190cmFjZS5oPTU4OTc9REVDTEFSRV9FVkVOVF9DTEFTUyh4ZnNfZnJlZWJsb2Nrc19yZXN2X2NsYXNzLFxcbi0tXFxuZnMveGZzL3hmc190cmFjZS5oLTU5MjQtKVxcbmZzL3hmcy94ZnNfdHJhY2UuaDo1OTI1OiNkZWZpbmUgREVGSU5FX0ZSRUVCTE9DS1NfUkVTVl9FVkVOVChuYW1lKSBcXFxcXFxuZnMveGZzL3hmc190cmFjZS5oLTU5MjYtREVGSU5FX0VWRU5UKHhmc19mcmVlYmxvY2tzX3Jlc3ZfY2xhc3MsIG5hbWUsIFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvY2xlYW51cC5oLTIwOS1cXG5pbmNsdWRlL2xpbnV4L2NsZWFudXAuaDoyMTA6I2RlZmluZSBERUZJTkVfRlJFRShfbmFtZSwgX3R5cGUsIF9mcmVlKSBcXFxcXFxuaW5jbHVkZS9saW51eC9jbGVhbnVwLmgtMjExLVxcdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBfX2ZyZWVfIyNfbmFtZSh2b2lkICpwKSB7IF90eXBlIF9UID0gKihfdHlwZSAqKXA7IF9mcmVlOyB9XFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kbWEuaD0yMDY9REVDTEFSRV9FVkVOVF9DTEFTUyhkbWFfZnJlZV9jbGFzcyxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RtYS5oLTIzNy1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kbWEuaDoyMzg6I2RlZmluZSBERUZJTkVfRlJFRV9FVkVOVChuYW1lKSBcXFxcXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvZG1hLmgtMjM5LURFRklORV9FVkVOVChkbWFfZnJlZV9jbGFzcywgbmFtZSwgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDo0MDoxNi43NDQ1MTM4NTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzcyMTk4NDU3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGludm9sdmVzIGBERUZJTkVfRlJFRWAsIHdoaWNoIGV4cGFuZHMgdG8gYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLCBtZWFuaW5nIGl0J3Mgbm90IGEgc3RhbmRhbG9uZSBzeW1ib2wgaW4gdm1saW51eC4gQ3J1Y2lhbGx5LCB0aGUgY2FsbGVyIGluIHRoaXMgc3BlY2lmaWMgaW5zdGFuY2UgaXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLlxuXG5GaXJzdCwgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQncyB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUsIGV4ZWN1dGFibGUgY29kZSwgc28gdGhhdCBpcyBvdXIgY3JpdGVyaWEuIFRoZSBzdGF0ZWQgZ29hbHMgZm9yIHBhdGNoIGZ1enppbmcgYXJlIHRvIGZpbmQgYnVncywgcmVncmVzc2lvbnMsIGFuZCBzdWNoLiBUaGUgcHJpbWFyeSBodXJkbGUgaXMgcmVhY2hhYmlsaXR5LiBUaGlzIGNvZGUgaXMgaW5kZWVkIHJlYWNoYWJsZS4gV2Ugc2hvdWxkIG5ldmVyIGJsaW5kbHkgdHJ1c3QgY2xhaW1zIG9mIFwibm8gZnVuY3Rpb25hbCBjaGFuZ2VcIiBvciByZWZhY3RvcmluZzsgbGV0J3MgZGlnIGRlZXBlci5cblxuVGhpcyBwYXRjaCBtb2RpZmllcyBjb2RlIGluIGBmcy9ldmVudGZkLmNgIChWRlMvc3lzY2FsbCBsZXZlbCkgYW5kIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY2AgKERSTSBzeW5jb2JqIGlvY3RsKS4gIFRoZSBgZXZlbnRmZF9jdHhfcHV0KClgIGZ1bmN0aW9uIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGhhbmRsZSBgSVNfRVJSX09SX05VTEwoY3R4KWAsIHdoaWNoIGNvdWxkIGV4cG9zZSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIGVycm9yIGhhbmRsaW5nIGlzc3Vlcywgb3IgbWVtb3J5IGlzc3VlcyBpbiB0aGUgY2FzZSB0aGUgY2xlYW51cCBpc24ndCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIERSTSBzeW5jb2JqIGlvY3RsIGlzIHJlYWNoYWJsZSB2aWEgRFJNIGRldmljZXMgc3VwcG9ydGluZyBzeW5jb2JqIHRpbWVsaW5lcywgc3BlY2lmaWNhbGx5IHZpcnRpby1ncHUgaW4gUUVNVS4gIFRoaXMgcmVmYWN0b3JpbmcgdXNlcyBhIGNsZWFudXAuaCBSQUlJLCBzcGVjaWZpY2FsbHkgYF9fZnJlZShldmVudGZkKWAuIEl0J3MgYSBjb21iaW5hdGlvbiBvZiBhIGNvcmUgc3Vic3lzdGVtIChldmVudGZkKSBhbmQgYSByZWFjaGFibGUgZHJpdmVyIGZyYW1ld29yayAoRFJNIHN5bmNvYmogLyB2aXJ0aW8tZ3B1KS4gU2luY2UgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgd2UgY29uc2lkZXIgaXQgdG8gYmUgd29ydGggZnV6emluZy5cblxuTmV4dCwgd2UgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFdlIG5lZWQgYEVWRU5URkRgIHRvIGVuYWJsZSB0aGUgYGZzL2V2ZW50ZmQuY2AgY29kZSwgYERSTWAgdG8gZW5hYmxlIHRoZSBEUk0gc3Vic3lzdGVtLCBhbmQgYERSTV9WSVJUSU9fR1BVYCB3aGljaCBhbGxvd3MgdGhlIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBmdW5jdGlvbiB0byBiZSBleGVyY2lzZWQgdGhyb3VnaCB2aXJ0aW8tZ3B1IGluIFFFTVUuIFRoZXNlIGFyZSBhbGwgYm9vbGVhbiBjb25maWdzLCBkZWZpbmVkIGFwcHJvcHJpYXRlbHkgaW4gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuXG5cblRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YC4gVGhlc2UgYXJlIHRoZSBvbmx5IHR3byBDIGZ1bmN0aW9ucyBkaXJlY3RseSB0b3VjaGVkIGJ5IHRoZSBjaGFuZ2VzLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXJhbWV0ZXJzIGZvciBgc2V0LXJlc3VsdHNgIHNob3VsZCBiZTpcblxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIkRSTVwiLCBcIkRSTV9WSVJUSU9fR1BVXCIsIFwiRVZFTlRGRFwiXWBcbiogICBgRm9jdXNTeW1ib2xzYDogYFtcImRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxcIiwgXCJldmVudGZkX2N0eF9wdXRcIl1gXG4qICAgYFJlYXNvbmluZ2A6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiBib3RoIGEgY29yZSBmaWxlc3lzdGVtIGNvbXBvbmVudCAoZXZlbnRmZCkgYW5kIGEgZHJpdmVyIGZyYW1ld29yayAoRFJNIHN5bmNvYmopLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgdmlydGlvLWdwdSBkcml2ZXIgd2l0aGluIFFFTVUuIFRoaXMgaXMgYSByZWZhY3RvcmluZywgaW50cm9kdWNpbmcgUkFJSSBjbGVhbnVwIHdoaWNoIGhhbmRsZXMgdGhlIGBfX2ZyZWVgIGxvZ2ljIHRvIHRoZSBldmVudGZkLCB3aGljaCBjb3VsZCBleHBvc2UgZXJyb3JzIGR1ZSB0byBpbmNvcnJlY3RseSBoYW5kbGVkIG51bGwgb3IgZXJyb3IgY29uZGl0aW9ucyBvciBtZW1vcnkgY29ycnVwdGlvbi5cbiogICBgV29ydGhGdXp6aW5nYDogYHRydWVgXG5cbkFscmlnaHQsIHRoYXQgY292ZXJzIGFsbCB0aGUgYmFzZXMuIEkgdGhpbmsgd2UncmUgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDkzMiwiT3V0cHV0VG9rZW5zIjoyMDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NDA6NTMuOTY0MzYzMjk2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg1MDg0MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX1ZJUlRJT19HUFVcIixcbiAgICBcIkVWRU5URkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fc3luY29ial9ldmVudGZkX2lvY3RsXCIsXG4gICAgXCJldmVudGZkX2N0eF9wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGV2ZW50ZmRfY3R4X3B1dCgpIGluIGZzL2V2ZW50ZmQuYyB0byBzYWZlbHkgaGFuZGxlIElTX0VSUl9PUl9OVUxMIHBvaW50ZXJzIGFuZCBpbnRyb2R1Y2VzIHRoZSBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pIHNjb3BlZCBjbGVhbnVwIGhlbHBlciwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIHJlZmFjdG9yIHJlc291cmNlIHJlbGVhc2UgYW5kIGVycm9yIHBhdGhzIGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0YWJsZSBhbmQgZnVsbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2aXJ0aW8tZ3B1IGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzICh3aGljaCBzdXBwb3J0cyBEUklWRVJfU1lOQ09CSl9USU1FTElORSkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBjbGVhbnVwIGF0dHJpYnV0ZSBoYW5kbGluZyBhbmQgbmV3IE5VTEwvRVJSIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZmVyZW5jZSBsZWFrcywgZG91YmxlIHB1dHMsIG9yIG90aGVyIHJlZ3Jlc3Npb25zIHVuZGVyIGVycm9yIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX1ZJUlRJT19HUFVcIixcbiAgICBcIkVWRU5URkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fc3luY29ial9ldmVudGZkX2lvY3RsXCIsXG4gICAgXCJldmVudGZkX2N0eF9wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGV2ZW50ZmRfY3R4X3B1dCgpIGluIGZzL2V2ZW50ZmQuYyB0byBzYWZlbHkgaGFuZGxlIElTX0VSUl9PUl9OVUxMIHBvaW50ZXJzIGFuZCBpbnRyb2R1Y2VzIHRoZSBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pIHNjb3BlZCBjbGVhbnVwIGhlbHBlciwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIHJlZmFjdG9yIHJlc291cmNlIHJlbGVhc2UgYW5kIGVycm9yIHBhdGhzIGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0YWJsZSBhbmQgZnVsbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2aXJ0aW8tZ3B1IGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzICh3aGljaCBzdXBwb3J0cyBEUklWRVJfU1lOQ09CSl9USU1FTElORSkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBjbGVhbnVwIGF0dHJpYnV0ZSBoYW5kbGluZyBhbmQgbmV3IE5VTEwvRVJSIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZmVyZW5jZSBsZWFrcywgZG91YmxlIHB1dHMsIG9yIG90aGVyIHJlZ3Jlc3Npb25zIHVuZGVyIGVycm9yIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDo0MDo1NC4wNDI4ODIxNTVaIiwiU2VxIjozNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTQ4MTc4NzU3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQwOjU0LjA0MzQ1Nzg1NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjUyMTQ4MTIwNTY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxcblxcblRoZXNlIGNoYW5nZXMgY29uY2VybiBwb2ludGVyIGxpZmV0aW1lIGFuZCByZXNvdXJjZSBkZWFsbG9jYXRpb24uIFRoZSBsb2NhbCBwb2ludGVyIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgLCBhbmQgdGhlIGhlYXAgYWxsb2NhdGlvbiBgZW50cnlgIGNvbnRpbnVlcyB0byBiZSB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqKClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBieXRlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgYWx0ZXJlZC4gQW55IHBvdGVudGlhbCBidWdzIHdvdWxkIHJlbGF0ZSB0byByZWZlcmVuY2UgY291bnRpbmcsIHJlc291cmNlIGxlYWtzLCBvciBwb2ludGVyIGNsZWFudXAsIHdoaWNoIGZhbGwgdW5kZXIgc3RhbmRhcmQgS0FTQU4vcmVmY291bnQgdHJhY2tpbmcgcmF0aGVyIHRoYW4gS01TQU4gdW5pbml0aWFsaXplZCBtZW1vcnkgZGV0ZWN0aW9uLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM1ZGY0M2JlM2ViYzIxZGU0ODljNTU5OWNjYTgzYmZiYjRjZDg3OGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNDoyMzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbmluZGV4IGMyM2E1ZGUyN2VmZmEuLmVmYzRlOGFmMjIwYzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbkBAIC0xNDYyLDkgKzE0NjIsOSBAQCBpbnRcbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRcdFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcbiB7XG4rXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ5MCwxMCArMTQ5MCwxMCBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRlbnRyeSA9IGt6YWxsb2Nfb2JqKCplbnRyeSk7XG4gXHRpZiAoIWVudHJ5KSB7XG4gXHRcdHJldCA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZXJyX2t6YWxsb2M7XG4rXHRcdGdvdG8gZXJyX2ZkZ2V0O1xuIFx0fVxuIFx0ZW50cnktXHUwMDNlc3luY29iaiA9IHN5bmNvYmo7XG4tXHRlbnRyeS1cdTAwM2Vldl9mZF9jdHggPSBldl9mZF9jdHg7XG4rXHRlbnRyeS1cdTAwM2Vldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpO1xuIFx0ZW50cnktXHUwMDNlcG9pbnQgPSBhcmdzLVx1MDAzZXBvaW50O1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgPSBhcmdzLVx1MDAzZWZsYWdzO1xuIFxuQEAgLTE1MDIsOCArMTUwMiw2IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbiBcbiBcdHJldHVybiAwO1xuIFxuLWVycl9remFsbG9jOlxuLVx0ZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7XG4gZXJyX2ZkZ2V0OlxuIFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xuIFx0cmV0dXJuIHJldDtcbmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmNcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjFjZDE3NDFiODFiMTcgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudGZkLmNcbisrKyBiL2ZzL2V2ZW50ZmQuY1xuQEAgLTEwMiw2ICsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG4gICovXG4gdm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4ge1xuK1x0aWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpXG4rXHRcdHJldHVybjtcbitcbiBcdGtyZWZfcHV0KFx1MDAyNmN0eC1cdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbmluZGV4IGUzMmJlZTQzNDVmYjkuLjY4OTM1OGMyYjBhZTcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuKysrIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbkBAIC0xMCw2ICsxMCw3IEBAXG4gI2RlZmluZSBfTElOVVhfRVZFTlRGRF9IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY2xlYW51cC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtZGVmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbkBAIC04OSw1ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbiBcdGV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTtcbiB9XG4gXG4rREVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXG4rXG4gI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQwOjU0LjA0MzQ1ODg4NVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0OTU1ODM0MTE1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSSBzZWUgY2hhbmdlcyB0byBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgLCBgZnMvZXZlbnRmZC5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAuICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGhhbmRsaW5nIGV2ZW50IGZpbGUgZGVzY3JpcHRvcnMgaW4gdGhlIGNvbnRleHQgb2YgRFJNIHN5bmMgb2JqZWN0cy4gSSdsbCBuZWVkIHRvIHBhcnNlIHRoZSBkaWZmIHRvIGFzY2VydGFpbiB0aGUgc3BlY2lmaWNzLlxuXG5GaXJzdCB0aGluZyBJIG5vdGljZSBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgYSBuZXcgbG9jYWwgdmFyaWFibGUgZGVjbGFyYXRpb246IGBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO2AuICBBaCwgdGhleSdyZSB1c2luZyBhIGNsZWFudXAgaGFuZGxlciwgYF9fZnJlZShldmVudGZkKWAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IHRoZXkncmUgYXNzb2NpYXRpbmcgdGhlIGBldmVudGZkX2N0eF9wdXRgIGZ1bmN0aW9uIHdpdGggdGhlIHZhcmlhYmxlLCBhbmQgdGhlIGNsZWFudXAgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgdmFyaWFibGUgZ29lcyBvdXQgb2Ygc2NvcGUsIG9yIHdoZW4gYG5vX2ZyZWVfcHRyKClgIGlzIGNhbGxlZCBvbiBpdC5cblxuUHJldmlvdXNseSwgYGV2X2ZkX2N0eGAgd2FzIGRlY2xhcmVkIGFuZCBpbml0aWFsaXplZCBzZXBhcmF0ZWx5LCBhbmQgdGhlIGZ1bmN0aW9uJ3MgZXJyb3IgaGFuZGxpbmcgdXNlZCBgZXZlbnRmZF9jdHhfcHV0YCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLCBsaWtlbHkgdG8gZnJlZSB0aGUgZXZlbnRmZCBjb250ZXh0LiBUaGlzIHBhdHRlcm4gaXMgZmFpcmx5IGNvbW1vbiwgc28gaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE5vdywgaXQgc2VlbXMgbGlrZSB0aGUgY2xlYW51cCBpcyBpbnRlZ3JhdGVkLCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByb2J1c3QgYW5kIHBvdGVudGlhbGx5IHNpbXBsZXIuXG5cbkZ1cnRoZXIgZG93biwgdGhlIGNvZGUgbm93IHVzZXMgYG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eClgIHdoZW4gYXNzaWduaW5nIGl0IHRvIGBlbnRyeS1cdTAwM2Vldl9mZF9jdHhgLiBUaGlzIGlzIGNydWNpYWwuIEl0IHByZXZlbnRzIHRoZSBjbGVhbnVwIGhhbmRsZXIgZnJvbSBydW5uaW5nIHdoZW4gYGVudHJ5LVx1MDAzZWV2X2ZkX2N0eGAgZ29lcyBvdXQgb2Ygc2NvcGUsIGJlY2F1c2UgdGhlIGV2ZW50ZmQgY29udGV4dCBpcyBub3cgbWFuYWdlZCBlbHNld2hlcmUuXG5cblRoZSBjaGFuZ2UgaW4gYGZzL2V2ZW50ZmQuY2AgYWRkcyBhIGNoZWNrIHRvIGBldmVudGZkX2N0eF9wdXRgIGZvciBhIGBOVUxMYCBvciBgRVJSX1BUUmAgcG9pbnRlciwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgaXQgYWxsb3dzIGhhbmRsaW5nIG9mIGNhc2VzIHdoZXJlIHRoZSBjb250ZXh0IHdhc24ndCBwcm9wZXJseSBpbml0aWFsaXplZC4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuXG5cbkZpbmFsbHksIHRoZSBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGNoYW5nZSBhZGRzIGEgYERFRklORV9GUkVFYCBtYWNybyBmb3IgYGV2ZW50ZmRgLCB3aGljaCBjbGVhcmx5IGFzc29jaWF0ZXMgdGhlIGBldmVudGZkX2N0eF9wdXRgIGZ1bmN0aW9uIHdpdGggdGhlIGBldmVudGZkX2N0eGAgc3RydWN0IGZvciB1c2Ugd2l0aCB0aGUgYF9fZnJlZWAgYXR0cmlidXRlLiBUaGlzIGlzIHRoZSBjb3JlIG9mIHRoZSBjbGVhbnVwIG1lY2hhbmlzbSBhbmQgcHJvdmlkZXMgYSBjbGVhbmVyIGFuZCBzYWZlciB3YXkgdG8gbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUgYGV2ZW50ZmRfY3R4YCBvYmplY3QuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgcmVmYWN0b3JpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IG9mIGV2ZW50IGZpbGUgZGVzY3JpcHRvcnMgd2l0aGluIHRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24uIEl0J3MgdXNpbmcgY2xlYW51cCBoYW5kbGVycyB0byBhdXRvbWF0aWNhbGx5IHJlbGVhc2UgdGhlIGBldmVudGZkX2N0eGAgb24gc2NvcGUgZXhpdCBvciBtYW51YWwgY2FsbCB0byBgbm9fZnJlZV9wdHJgLCB0aHVzIHJlZHVjaW5nIHRoZSBjaGFuY2Ugb2YgbWVtb3J5IGxlYWtzIGFuZCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByZWFkYWJsZSBhbmQgbWFpbnRhaW5hYmxlLiBUaGlzIHNlZW1zIGxpa2UgYSBwb3NpdGl2ZSBjaGFuZ2UgdGhhdCBJIHNob3VsZCBkZWZpbml0ZWx5IHRha2Ugbm90ZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQ5OjA5LjYyNjg3NTMxOFoiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ2MDpcXHRcXG4xNDYxOlxcdGludFxcbjE0NjI6XFx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbjE0NjM6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNDY0OlxcdHtcXG4xNDY1OlxcdFxcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XFxuMTQ2NjpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XFxuMTQ2NzpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuMTQ2ODpcXHRcXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcXG4xNDY5OlxcdFxcdGludCByZXQ7XFxuMTQ3MDpcXHRcXG4xNDcxOlxcdFxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG4xNDcyOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4xNDczOlxcdFxcbjE0NzQ6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZWZsYWdzIFxcdTAwMjYgfkRSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BVkFJTEFCTEUpXFxuMTQ3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNDc2OlxcdFxcbjE0Nzc6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZXBhZClcXG4xNDc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE0Nzk6XFx0XFxuMTQ4MDpcXHRcXHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXFx1MDAzZWhhbmRsZSk7XFxuMTQ4MTpcXHRcXHRpZiAoIXN5bmNvYmopXFxuMTQ4MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4xNDgzOlxcdFxcbjE0ODQ6XFx0XFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cXHUwMDNlZmQpO1xcbjE0ODU6XFx0XFx0aWYgKElTX0VSUihldl9mZF9jdHgpKSB7XFxuMTQ4NjpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XFxuMTQ4NzpcXHRcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4xNDg4OlxcdFxcdH1cXG4xNDg5OlxcdFxcbjE0OTA6XFx0XFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xcbjE0OTE6XFx0XFx0aWYgKCFlbnRyeSkge1xcbjE0OTI6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xNDkzOlxcdFxcdFxcdGdvdG8gZXJyX2ZkZ2V0O1xcbjE0OTQ6XFx0XFx0fVxcbjE0OTU6XFx0XFx0ZW50cnktXFx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xcbjE0OTY6XFx0XFx0ZW50cnktXFx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XFxuMTQ5NzpcXHRcXHRlbnRyeS1cXHUwMDNlcG9pbnQgPSBhcmdzLVxcdTAwM2Vwb2ludDtcXG4xNDk4OlxcdFxcdGVudHJ5LVxcdTAwM2VmbGFncyA9IGFyZ3MtXFx1MDAzZWZsYWdzO1xcbjE0OTk6XFx0XFxuMTUwMDpcXHRcXHRkcm1fc3luY29ial9hZGRfZXZlbnRmZChzeW5jb2JqLCBlbnRyeSk7XFxuMTUwMTpcXHRcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuMTUwMjpcXHRcXG4xNTAzOlxcdFxcdHJldHVybiAwO1xcbjE1MDQ6XFx0XFxuMTUwNTpcXHRlcnJfZmRnZXQ6XFxuMTUwNjpcXHRcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuMTUwNzpcXHRcXHRyZXR1cm4gcmV0O1xcbjE1MDg6XFx0fVxcbjE1MDk6XFx0XFxuMTUxMDpcXHRpbnRcXG4xNTExOlxcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuMTUxMjpcXHRcXHRcXHRcXHRzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNTEzOlxcdHtcXG4xNTE0OlxcdFxcdHN0cnVjdCBkcm1fc3luY29ial9hcnJheSAqYXJncyA9IGRhdGE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQ5OjA5LjYyNjk5MTU0OFoiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNTg5NzY0NTEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGEgcmVmYWN0b3JpbmcgY2VudGVyZWQgYXJvdW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB1c2luZyB0aGUgYF9fZnJlZWAgY2xlYW51cCBhdHRyaWJ1dGUgYW5kIHRoZSBgZXZlbnRmZF9jdHhfcHV0YCBmdW5jdGlvbi4gSXQncyBkZXNpZ25lZCB0byBoYW5kbGUgcmVzb3VyY2UgbGlmZXRpbWUgYW5kIHByZXZlbnQgcG90ZW50aWFsIGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXG5cblRoZSBwYXRjaCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOlxuXG4xLiAgSXQgZGVmaW5lcyBgREVGSU5FX0ZSRUVgIGZvciBgZXZlbnRmZGAgY29udGV4dHMuXG4yLiAgSXQgdXBkYXRlcyBgZXZlbnRmZF9jdHhfcHV0YCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycy4gVGhpcyBpcyBnb29kIHByYWN0aWNlLlxuMy4gIEluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCwgd2UgaGF2ZSBhIGBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO2AgZGVjbGFyYXRpb24uIFRoZSBvd25lcnNoaXAgZ2V0cyB0cmFuc2ZlcnJlZCB0byBgZW50cnlgIHZpYSBgbm9fZnJlZV9wdHJgLiBDcnVjaWFsbHksIGVycm9yIHBhdGhzIG5vdyBzYWZlbHkgZnJlZSBgZXZfZmRfY3R4YCBpZiBpdCdzIG5vdCBgTlVMTGAgKG9yIGl0J3MgYW4gZXJyb3IgcG9pbnRlciwgd2hpY2ggYGV2ZW50ZmRfY3R4X3B1dGAgaGFuZGxlcykuIFRoZSByZW1vdmFsIG9mIGBlcnJfa3phbGxvY2Agc2ltcGxpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSByaXNrcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBrZXJuZWwgaW5mb3JtYXRpb24gbGVha3MgdGhhdCB3b3VsZCB3YXJyYW50IEtNU0FOPyBMZXQncyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3QgY2FyZWZ1bGx5OlxuXG4xLiAgKipLZXJuZWwgc3RydWN0dXJlcyB0byB1c2Vyc3BhY2U/KiogTm9wZS4gVGhlIGlucHV0LCBgdm9pZCAqZGF0YWAsIGNvbWVzIGZyb20gdGhlIERSTSBpb2N0bCBmcmFtZXdvcmsuIE5vIG5ldyBpbmZvcm1hdGlvbiBpcyBiZWluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLlxuMi4gICoqQ29uZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/KiogTm8gYWdhaW4uIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgLlxuMy4gICoqQ29tcGxleCBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHM/KiogYGVudHJ5YCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2Nfb2JqYCwgd2hpY2ggKnplcm9lcyogdGhlIG1lbW9yeS5cbjQuICAqKkJvdW5kcyBjaGVja3Mgb3IgbG9naWMgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/KiogTm8sIG5vdGhpbmcgaGVyZS5cblxuVGhpcyByZWZhY3RvcmluZyBpcyBhbGwgYWJvdXQgcmVzb3VyY2UgY2xlYW51cCBhbmQgYXZvaWRpbmcgbWVtb3J5IG1hbmFnZW1lbnQgYnVnc+KAlHNwZWNpZmljYWxseSB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSwgbGVha3MuIFRoZXNlIGFyZSAqc3RhbmRhcmQqIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyB0aGF0IEtBU0FOLCByZWZjb3VudCBkZXRlY3RvcnMsIG9yIGxlYWsgZGV0ZWN0b3JzIHdvdWxkIGNhdGNoLiBJdCdzIG5vdCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBjcml0ZXJpYSBvdXRsaW5lZCBhcmUgY2xlYXI6ICpLTVNBTiBpcyBub3QgbmVlZGVkKiBpbiB0aGlzIGNhc2UuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgdGhlIHR5cGVzIG9mIHJpc2tzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guIFRoZSBjb2RlIGNoYW5nZXMgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4gVGhlIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkIG9yIGluaXRpYWxpemVkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU49ZmFsc2VgLiBMZXQncyBwcmVwYXJlIHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNTEsIk91dHB1dFRva2VucyI6MjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODk4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NDk6MzUuNTI0NjQxNDAzWiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgY2xlYW51cCBoZWxwZXIgdXNpbmcgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gYW5kIHJlZmFjdG9ycyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIHJlc291cmNlIG1hbmFnZW1lbnQgKGBfX2ZyZWVgIGFuZCBgbm9fZnJlZV9wdHJgKSBmb3IgYHN0cnVjdCBldmVudGZkX2N0eGAuIEFkZGl0aW9uYWxseSwgYGV2ZW50ZmRfY3R4X3B1dCgpYCBpcyB1cGRhdGVkIHRvIHNhZmVseSBoYW5kbGUgYE5VTExgIG9yIGVycm9yIHBvaW50ZXJzIHZpYSBgSVNfRVJSX09SX05VTEwoY3R4KWAuXFxuXFxuVGhlc2UgY2hhbmdlcyBjb25jZXJuIHBvaW50ZXIgbGlmZXRpbWUgYW5kIHJlc291cmNlIGRlYWxsb2NhdGlvbi4gVGhlIGxvY2FsIHBvaW50ZXIgYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgTlVMTGAsIGFuZCB0aGUgaGVhcCBhbGxvY2F0aW9uIGBlbnRyeWAgY29udGludWVzIHRvIGJlIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmooKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGJ5dGVzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBhbHRlcmVkLiBBbnkgcG90ZW50aWFsIGJ1Z3Mgd291bGQgcmVsYXRlIHRvIHJlZmVyZW5jZSBjb3VudGluZywgcmVzb3VyY2UgbGVha3MsIG9yIHBvaW50ZXIgY2xlYW51cCwgd2hpY2ggZmFsbCB1bmRlciBzdGFuZGFyZCBLQVNBTi9yZWZjb3VudCB0cmFja2luZyByYXRoZXIgdGhhbiBLTVNBTiB1bmluaXRpYWxpemVkIG1lbW9yeSBkZXRlY3Rpb24uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxcblxcblRoZXNlIGNoYW5nZXMgY29uY2VybiBwb2ludGVyIGxpZmV0aW1lIGFuZCByZXNvdXJjZSBkZWFsbG9jYXRpb24uIFRoZSBsb2NhbCBwb2ludGVyIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgLCBhbmQgdGhlIGhlYXAgYWxsb2NhdGlvbiBgZW50cnlgIGNvbnRpbnVlcyB0byBiZSB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqKClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBieXRlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgYWx0ZXJlZC4gQW55IHBvdGVudGlhbCBidWdzIHdvdWxkIHJlbGF0ZSB0byByZWZlcmVuY2UgY291bnRpbmcsIHJlc291cmNlIGxlYWtzLCBvciBwb2ludGVyIGNsZWFudXAsIHdoaWNoIGZhbGwgdW5kZXIgc3RhbmRhcmQgS0FTQU4vcmVmY291bnQgdHJhY2tpbmcgcmF0aGVyIHRoYW4gS01TQU4gdW5pbml0aWFsaXplZCBtZW1vcnkgZGV0ZWN0aW9uLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 14:03:39 +0000 UTC FinishedAt: 2026-09-15 14:49:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "14d6074f52d3af2b27565e6957b92dceeb8b00da", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_VIRTIO_GPU", "EVENTFD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "14d6074f52d3af2b27565e6957b92dceeb8b00da", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_VIRTIO_GPU", "EVENTFD" ], "series_id": "75e7a1fd-118b-49fe-a70b-ada051e28d79" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "drm_syncobj_eventfd_ioctl", "eventfd_ctx_put" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "", "base_commit": "14d6074f52d3af2b27565e6957b92dceeb8b00da", "base_tree": "drm-next" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUk0mIzM0OywKICAgICYjMzQ7RFJNX1ZJUlRJT19HUFUmIzM0OywKICAgICYjMzQ7RVZFTlRGRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9jdHhfcHV0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxuXG5UaGVzZSBjaGFuZ2VzIGNvbmNlcm4gcG9pbnRlciBsaWZldGltZSBhbmQgcmVzb3VyY2UgZGVhbGxvY2F0aW9uLiBUaGUgbG9jYWwgcG9pbnRlciBgZXZfZmRfY3R4YCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBOVUxMYCwgYW5kIHRoZSBoZWFwIGFsbG9jYXRpb24gYGVudHJ5YCBjb250aW51ZXMgdG8gYmUgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iaigpYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgYnl0ZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIGFsdGVyZWQuIEFueSBwb3RlbnRpYWwgYnVncyB3b3VsZCByZWxhdGUgdG8gcmVmZXJlbmNlIGNvdW50aW5nLCByZXNvdXJjZSBsZWFrcywgb3IgcG9pbnRlciBjbGVhbnVwLCB3aGljaCBmYWxsIHVuZGVyIHN0YW5kYXJkIEtBU0FOL3JlZmNvdW50IHRyYWNraW5nIHJhdGhlciB0aGFuIEtNU0FOIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGRldGVjdGlvbi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM1ZGY0M2JlM2ViYzIxZGU0ODljNTU5OWNjYTgzYmZiYjRjZDg3OGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNDoyMzowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5pbmRleCBjMjNhNWRlMjdlZmZhLi5lZmM0ZThhZjIyMGM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5AQCAtMTQ2Miw5ICYjNDM7MTQ2Miw5IEBAIGludFxuIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbiBcdFx0XHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ5MCwxMCAmIzQzOzE0OTAsMTAgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuIFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuIFx0aWYgKCFlbnRyeSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9remFsbG9jO1xuJiM0MztcdFx0Z290byBlcnJfZmRnZXQ7XG4gXHR9XG4gXHRlbnRyeS1cdTAwM2VzeW5jb2JqID0gc3luY29iajtcbi1cdGVudHJ5LVx1MDAzZWV2X2ZkX2N0eCA9IGV2X2ZkX2N0eDtcbiYjNDM7XHRlbnRyeS1cdTAwM2Vldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpO1xuIFx0ZW50cnktXHUwMDNlcG9pbnQgPSBhcmdzLVx1MDAzZXBvaW50O1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgPSBhcmdzLVx1MDAzZWZsYWdzO1xuIFxuQEAgLTE1MDIsOCAmIzQzOzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfa3phbGxvYzpcbi1cdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xuIGVycl9mZGdldDpcbiBcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4xY2QxNzQxYjgxYjE3IDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9ldmVudGZkLmNcbkBAIC0xMDIsNiAmIzQzOzEwMiw5IEBAIHN0YXRpYyB2b2lkIGV2ZW50ZmRfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcbiAgKi9cbiB2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbiB7XG4mIzQzO1x0aWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0a3JlZl9wdXQoXHUwMDI2Y3R4LVx1MDAzZWtyZWYsIGV2ZW50ZmRfZnJlZSk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuaW5kZXggZTMyYmVlNDM0NWZiOS4uNjg5MzU4YzJiMGFlNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuQEAgLTEwLDYgJiM0MzsxMCw3IEBAXG4gI2RlZmluZSBfTElOVVhfRVZFTlRGRF9IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG5AQCAtODksNSAmIzQzOzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIFx0ZXZlbnRmZF9zaWduYWxfbWFzayhjdHgsIDApO1xuIH1cbiBcbiYjNDM7REVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXG4mIzQzO1xuICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MjM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fVklSVElPX0dQVSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM1ZGY0M2JlM2ViYzIxZGU0ODljNTU5OWNjYTgzYmZiYjRjZDg3OGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAxNDoyMzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKaW5kZXggYzIzYTVkZTI3ZWZmYS4uZWZjNGU4YWYyMjBjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKQEAgLTE0NjIsOSAmIzQzOzE0NjIsOSBAQCBpbnQKIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCiB7CiYjNDM7CXN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7CiAJc3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajsKLQlzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eDsKIAlzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTsKIAlpbnQgcmV0OwogCkBAIC0xNDkwLDEwICYjNDM7MTQ5MCwxMCBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpOwogCWlmICghZW50cnkpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBlcnJfa3phbGxvYzsKJiM0MzsJCWdvdG8gZXJyX2ZkZ2V0OwogCX0KIAllbnRyeS0mZ3Q7c3luY29iaiA9IHN5bmNvYmo7Ci0JZW50cnktJmd0O2V2X2ZkX2N0eCA9IGV2X2ZkX2N0eDsKJiM0MzsJZW50cnktJmd0O2V2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7CiAJZW50cnktJmd0O3BvaW50ID0gYXJncy0mZ3Q7cG9pbnQ7CiAJZW50cnktJmd0O2ZsYWdzID0gYXJncy0mZ3Q7ZmxhZ3M7CiAKQEAgLTE1MDIsOCAmIzQzOzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlyZXR1cm4gMDsKIAotZXJyX2t6YWxsb2M6Ci0JZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7CiBlcnJfZmRnZXQ6CiAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmMKaW5kZXggOWQzM2EwMjc1N2Q1Mi4uMWNkMTc0MWI4MWIxNyAxMDA2NDQKLS0tIGEvZnMvZXZlbnRmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuYwpAQCAtMTAyLDYgJiM0MzsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAgKi8KIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogewomIzQzOwlpZiAoSVNfRVJSX09SX05VTEwoY3R4KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlrcmVmX3B1dCgmYW1wO2N0eC0mZ3Q7a3JlZiwgZXZlbnRmZF9mcmVlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCmluZGV4IGUzMmJlZTQzNDVmYjkuLjY4OTM1OGMyYjBhZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2RlZmluZSBfTElOVVhfRVZFTlRGRF9ICiAKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NsZWFudXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUtZGVmcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwpAQCAtODksNSAmIzQzOzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogCWV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTsKIH0KIAomIzQzO0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKQomIzQzOwogI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTkyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGlzIFBhdGNoIGZvciBFdmVudGZkIGFuZCBEUk0gU3luY29ianMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhpcyBwYXRjaCwgc3RhcnRpbmcgd2l0aCBhIGdyYW51bGFyIGxvb2sgYXQgdGhlIGNvZGUgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBtb2RpZmljYXRpb25zLCBwYXJ0aWN1bGFybHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBEUk0gc3luY29iaiBzdWJzeXN0ZW0sIGdpdmVuIG15IGV4cGVydGlzZS4KCkZpcnN0LCB0aGUgcGF0Y2ggYWx0ZXJzIHRocmVlIGZpbGVzLiBJdCBsb29rcyBsaWtlOgoKMS4gIEluIGBmcy9ldmVudGZkLmNgLCB0aGVyZSYjMzk7cyBhIHNhZmV0eSBjaGVjayBiZWluZyBhZGRlZCB0byBgZXZlbnRmZF9jdHhfcHV0YDogYGlmIChJU19FUlJfT1JfTlVMTChjdHgpKSByZXR1cm47YC4gVGhpcyBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIHBvc3NpYmxlIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBwcm90ZWN0aW9uLiBJbXBvcnRhbnQsIGJ1dCBzdHJhaWdodGZvcndhcmQuCgoyLiAgYGluY2x1ZGUvbGludXgvZXZlbnRmZC5oYCBpcyBnZXR0aW5nIGEgY2hhbmdlIHRvIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGZvciBgZXZlbnRmZGAsIHNwZWNpZmljYWxseSBhZGRpbmcgYGV2ZW50ZmRfY3R4X3B1dChfVClgLiBUaGlzIG1lYW5zIHRoZSBtYWNybyBpcyBub3cgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIGBldmVudGZkX2N0eGAuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSB0aGUgbWFjcm8gaXMgYSBjcnVjaWFsIHBhcnQgb2Yga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50LgoKMy4gIEZpbmFsbHksIGFuZCBwZXJoYXBzIHRoZSBtb3N0IGludGVyZXN0aW5nIHBpZWNlLCBpcyB0aGUgY2hhbmdlIHdpdGhpbiBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgLiBUaGUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGZ1bmN0aW9uIGlzIHRoZSBjb3JlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIEhlcmUsIHRoZSBwYXRjaCBtb2RpZmllcyBob3cgYHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4YCBpcyBoYW5kbGVkLiBJdCBzZWVtcyB0aGUgY29kZSBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgYXR0cmlidXRlIGFuZCBhICBgbm9fZnJlZV9wdHJgIGZ1bmN0aW9uIGNhbGwuIEFkZGl0aW9uYWxseSwgdGhlIG9sZCBgZXJyX2t6YWxsb2NgIGxhYmVsIGFuZCBjb3JyZXNwb25kaW5nIGBldmVudGZkX2N0eF9wdXRgIGNhbGwgaGF2ZSBiZWVuIHJlbW92ZWQuIFRoaXMgaW1wbGllcyBhIGNoYW5nZSBpbiBob3cgYGV2ZW50ZmRfY3R4YCBpcyBtYW5hZ2VkIGFuZCByZWxlYXNlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgRFJNIHN5bmNvYmouIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRyb2wgZmxvdyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gY29uZmlybSB0aGUgZGV0YWlscy4KSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBmdW5jdGlvbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlIGNvbnRleHQsIHRoaXMgY2hhbmdlIHRvIHNlZSB3aGF0JiMzOTtzIHJlYWxseSBnb2luZyBvbi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSByYXRpb25hbGUgZm9yIHRoZSBjaGFuZ2UgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCByZWdyZXNzaW9uIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDYwOlx0XG4xNDYxOlx0aW50XG4xNDYyOlx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuMTQ2MzpcdFx0XHRcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNDY0Olx0e1xuMTQ2NTpcdFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtcbjE0NjY6XHRcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcbjE0Njc6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbjE0Njg6XHRcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5O1xuMTQ2OTpcdFx0aW50IHJldDtcbjE0NzA6XHRcbjE0NzE6XHRcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbjE0NzI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuMTQ3MzpcdFxuMTQ3NDpcdFx0aWYgKGFyZ3MtXHUwMDNlZmxhZ3MgXHUwMDI2IH5EUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQVZBSUxBQkxFKVxuMTQ3NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0NzY6XHRcbjE0Nzc6XHRcdGlmIChhcmdzLVx1MDAzZXBhZClcbjE0Nzg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDc5Olx0XG4xNDgwOlx0XHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXHUwMDNlaGFuZGxlKTtcbjE0ODE6XHRcdGlmICghc3luY29iailcbjE0ODI6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4xNDgzOlx0XG4xNDg0Olx0XHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbjE0ODU6XHRcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuMTQ4NjpcdFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4xNDg3Olx0XHRcdGdvdG8gZXJyX2ZkZ2V0O1xuMTQ4ODpcdFx0fVxuMTQ4OTpcdFxuMTQ5MDpcdFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuMTQ5MTpcdFx0aWYgKCFlbnRyeSkge1xuMTQ5MjpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTQ5MzpcdFx0XHRnb3RvIGVycl9mZGdldDtcbjE0OTQ6XHRcdH1cbjE0OTU6XHRcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuMTQ5NjpcdFx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbjE0OTc6XHRcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbjE0OTg6XHRcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbjE0OTk6XHRcbjE1MDA6XHRcdGRybV9zeW5jb2JqX2FkZF9ldmVudGZkKHN5bmNvYmosIGVudHJ5KTtcbjE1MDE6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDI6XHRcbjE1MDM6XHRcdHJldHVybiAwO1xuMTUwNDpcdFxuMTUwNTpcdGVycl9mZGdldDpcbjE1MDY6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDc6XHRcdHJldHVybiByZXQ7XG4xNTA4Olx0fVxuMTUwOTpcdFxuMTUxMDpcdGludFxuMTUxMTpcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4xNTEyOlx0XHRcdFx0c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNTEzOlx0e1xuMTUxNDpcdFx0c3RydWN0IGRybV9zeW5jb2JqX2FycmF5ICphcmdzID0gZGF0YTtcbjE1MTU6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzO1xuMTUxNjpcdFx0dWludDMyX3QgaTtcbjE1MTc6XHRcdGludCByZXQ7XG4xNTE4Olx0XG4xNTE5Olx0XHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE4MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIGBmcy9ldmVudGZkLmNgKioKCk9rYXksIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGggZXZlbnRmZCwgc28gbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIGBmcy9ldmVudGZkLmNgIGZpbGUuIEkmIzM5O2xsIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSAxMDAuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCYjMzk7cyBhcmNoaXRlY3R1cmUuIEhvcGVmdWxseSwgdGhlIGNvZGUgdGhlcmUgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHNwZWNpZmljIGJlaGF2aW9yIEkmIzM5O20gY3VyaW91cyBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V2ZW50ZmQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTU6XHRcbiAgOTY6XHQvKipcbiAgOTc6XHQgKiBldmVudGZkX2N0eF9wdXQgLSBSZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxuICA5ODpcdCAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXG4gIDk5Olx0ICpcbiAxMDA6XHQgKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxuIDEwMTpcdCAqIHdpdGggZXZlbnRmZF9jdHhfZmRnZXQoKSBvciBldmVudGZkX2N0eF9maWxlZ2V0KCkuXG4gMTAyOlx0ICovXG4gMTAzOlx0dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gMTA0Olx0e1xuIDEwNTpcdFx0aWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpXG4gMTA2Olx0XHRcdHJldHVybjtcbiAxMDc6XHRcbiAxMDg6XHRcdGtyZWZfcHV0KFx1MDAyNmN0eC1cdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xuIDEwOTpcdH1cbiAxMTA6XHRFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xuIDExMTpcdFxuIDExMjpcdHN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIDExMzpcdHtcbiAxMTQ6XHRcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG4gMTE1Olx0XG4gMTE2Olx0XHR3YWtlX3VwX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExIVVApO1xuIDExNzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG4gMTE4Olx0XHRyZXR1cm4gMDtcbiAxMTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGFiaWxpdHkgQW5hbHlzaXM6IERSTSBTeW5jb2JqIGluIFFFTVUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHJlYWNoYWJpbGl0eSBxdWVzdGlvbi4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIHdoZXRoZXIgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGlzIGFjdHVhbGx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBRRU1VIGVudmlyb25tZW50LiBJdCBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZSwgY29uc2lkZXJpbmcgUUVNVSBzdXBwb3J0cyB2YXJpb3VzIERSTSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgdGhpbmdzIGxpa2UgdmdlbSwgdmlydGlvLWdwdSwgYW5kIHZrbXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgcmVnaXN0cmF0aW9uLiBJIG5lZWQgdG8gaWRlbnRpZnkgd2hpY2ggY29tcG9uZW50cyBhcmUgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIGVpdGhlciBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgIG9yLCBtb3JlIGRpcmVjdGx5LCBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXRzZWxmLiBLbm93aW5nIHRoZSByZWdpc3RyYXRpb24gcG9pbnQgd2lsbCBpbGx1bWluYXRlIHRoZSBleGVjdXRpb24gcGF0aC4gVGltZSB0byBmaXJlIHVwIHRoZSBncmVwcGluZyB0b29scyBhbmQgaHVudCBmb3IgdGhvc2Uga2V5d29yZHM6IGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBhbmQgYERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FYC4gVGhhdCBzaG91bGQgbGVhZCBtZSB0byB0aGUgcmVsZXZhbnQgZHJpdmVycyBvciBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oPTI3Nj1pbnQgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI3Ny1cdFx0XHRcdCAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjc4OmludCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc5LVx0XHRcdCAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM9NjQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgZHJtX2lvY3Rsc1tdID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzEtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczMjpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRCwgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzMtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTE0NjE9aW50XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNDYyOmRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE0NjMtXHRcdFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDM1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gRFJNIFN5bmNocm9uaXphdGlvbiBPYmplY3RzIGFuZCBFdmVudEZEKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRGAuIFRoaXMgaXMgYW4gaW9jdGwgY2FsbCB0aGF0IG9wZXJhdGVzIG9uIHRoZSBgL2Rldi9kcmkvY2FyZCpgIG9yIGAvZGV2L2RyaS9yZW5kZXJEKmAgZGV2aWNlcy4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBTeXprYWxsZXIsIHRoYXQgZnV6emluZyBiZWFzdCwgKmRpcmVjdGx5KiBzdXBwb3J0cyBgZHJtX3N5bmNvYmpgIGFuZCB0aGlzIHNwZWNpZmljIGBEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEYCBjYWxsLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb247IFN5emthbGxlciYjMzk7cyBjb3ZlcmFnZSB1c3VhbGx5IGhpZ2hsaWdodHMgYXJlYXMgb2YgcG90ZW50aWFsIGNvbXBsZXhpdHkgb3IgdnVsbmVyYWJpbGl0eS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIGBEUklWRVJfU1lOQ09CSl9USU1FTElORWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcnMgYWN0dWFsbHkgKnVzZSogdGhpcyBjYXBhYmlsaXR5LiBJZGVudGlmeWluZyB3aGljaCBkcml2ZXJzIGhhdmUgZW5hYmxlZCB0aGF0IHNwZWNpZmljIGZlYXR1cmUgd2lsbCBoZWxwIG1lIG5hcnJvdyBkb3duIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxlbWVudGF0aW9uIHN0cmF0ZWdpZXMgaW4gdXNlLiBLbm93aW5nIHRoZSBkcml2ZXJzIGludm9sdmVkIHdpbGwgYWxsb3cgbWUgdG8gdGFyZ2V0IG15IGFuYWx5c2lzIG1vcmUgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RSSVZFUl9TWU5DT0JKX1RJTUVMSU5FJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYz0zMjk9Y29uc3Qgc3RydWN0IGRybV9kcml2ZXIgYW1keGRuYV9kcm1fZHJ2ID0ge1xuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jLTMzMC1cdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfR0VNIHwgRFJJVkVSX0NPTVBVVEVfQUNDRUwgfFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jOjMzMTpcdFx0RFJJVkVSX1NZTkNPQkogfCBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy0zMzItXHQuZm9wcyA9IFx1MDAyNmFtZHhkbmFfZm9wcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmM9MzExMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgYW1kZ3B1X2ttc19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jLTMxMTQtXHQgICAgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX1NZTkNPQkogfFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jOjMxMTU6XHQgICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMtMzExNi1cdC5vcGVuID0gYW1kZ3B1X2RyaXZlcl9vcGVuX2ttcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmM9MzEzOD1jb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBhbWRncHVfcGFydGl0aW9uX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMtMzE0MC1cdCAgICBEUklWRVJfR0VNIHwgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9TWU5DT0JKIHxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYzozMTQxOlx0ICAgIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jLTMxNDItXHQub3BlbiA9IGFtZGdwdV9kcml2ZXJfb3Blbl9rbXMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jPTIzND1zdGF0aWMgaW50IGRybV9nZXRjYXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTI1Mi1cdGNhc2UgRFJNX0NBUF9TWU5DT0JKX1RJTUVMSU5FOlxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjI1MzpcdFx0cmVxLVx1MDAzZXZhbHVlID0gZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy0yNTQtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTk4ND1kcm1fc3luY29ial90cmFuc2Zlcl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTk4OS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjk5MDpcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTk5MS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTEzNjY9ZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTEzNzQtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxMzc1Olx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTM3Ni1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTE0NjI9ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE0NzAtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNDcxOlx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTQ3Mi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTE1ODA9ZHJtX3N5bmNvYmpfdGltZWxpbmVfc2lnbmFsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTU4OS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjE1OTA6XHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNTkxLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MTY1Mj1pbnQgZHJtX3N5bmNvYmpfcXVlcnlfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNjYwLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MTY2MTpcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE2NjItXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RyaXZlci5jPTE3Njc9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIGk5MTVfZHJtX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RyaXZlci5jLTE3NzAtXHQgICAgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0FUT01JQyB8IERSSVZFUl9TWU5DT0JKIHxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJpdmVyLmM6MTc3MTpcdCAgICBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJpdmVyLmMtMTc3Mi1cdC5yZWxlYXNlID0gaTkxNV9kcml2ZXJfcmVsZWFzZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX2Rydi5jPTEzODE9c3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHB2cl9kcm1fZHJpdmVyID0ge1xuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYy0xMzgyLVx0LmRyaXZlcl9mZWF0dXJlcyA9IERSSVZFUl9HRU0gfCBEUklWRVJfUkVOREVSIHxcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfZHJ2LmM6MTM4MzpcdFx0XHQgICBEUklWRVJfU1lOQ09CSiB8IERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FLFxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYy0xMzg0LVx0Lm9wZW4gPSBwdnJfZHJtX2RyaXZlcl9vcGVuLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jPTgyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jLTgzNi1cdFx0RFJJVkVSX1NZTkNPQkogfCBcXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmM6ODM3Olx0XHREUklWRVJfU1lOQ09CSl9USU1FTElORSB8IFxcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYy04MzgtXHRcdDAgKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYz0xMD1tc21fc3luY29ial9wYXJzZV9kZXBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTM3LVx0XHRpZiAoc3luY29ial9kZXNjLnBvaW50IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jOjM4Olx0XHQgICAgIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpIHtcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYy0zOS1cdFx0XHRyZXQgPSBVRVJSKEVPUE5PVFNVUFAsIGRldiwgXCYjMzQ7c3luY29iaiB0aW1lbGluZSB1bnN1cHBvcnRlZFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jPTg2PW1zbV9zeW5jb2JqX3BhcnNlX3Bvc3RfZGVwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYy0xMjAtXHRcdFx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldixcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYzoxMjE6XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSkge1xuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTEyMi1cdFx0XHRcdHJldCA9IFVFUlIoRU9QTk9UU1VQUCwgZGV2LCBcJiMzNDtzeW5jb2JqIHRpbWVsaW5lIHVuc3VwcG9ydGVkXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTE0MDE9ZHJpdmVyX2xlZ2FjeV9rbXMgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYy0xNDAzLVx0XHRcdCB8IERSSVZFUl9TWU5DT0JKXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jOjE0MDQ6XHRcdFx0IHwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQwNS1cdFx0XHQgfCBEUklWRVJfTU9ERVNFVFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM9MTQxMT1kcml2ZXJfYXRvbWljX2ttcyA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTE0MTMtXHRcdFx0IHwgRFJJVkVSX1NZTkNPQkpcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM6MTQxNDpcdFx0XHQgfCBEUklWRVJfU1lOQ09CSl9USU1FTElORVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYy0xNDE1LVx0XHRcdCB8IERSSVZFUl9NT0RFU0VUXG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kcnYuYz0xNzkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBwYW50aG9yX2RybV9kcml2ZXIgPSB7XG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2Rydi5jLTE3OTQtXHQuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9HRU0gfCBEUklWRVJfU1lOQ09CSiB8XG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2Rydi5jOjE3OTU6XHRcdFx0ICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2Rydi5jLTE3OTYtXHQub3BlbiA9IHBhbnRob3Jfb3Blbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmM9MzI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jLTMzMy1cdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfCBEUklWRVJfUkVOREVSIHwgRFJJVkVSX0FUT01JQyB8XG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmM6MzM0Olx0XHRcdCAgIERSSVZFUl9TWU5DT0JKIHwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUgfCBEUklWRVJfQ1VSU09SX0hPVFNQT1QsXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmMtMzM1LVx0Lm9wZW4gPSB2aXJ0aW9fZ3B1X2RyaXZlcl9vcGVuLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz0zOTY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIHJlZ3VsYXJfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy00MDAtXHQgICAgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9TWU5DT0JKIHxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo0MDE6XHQgICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNDAyLVx0Lm9wZW4gPSB4ZV9maWxlX29wZW4sXG4tLVxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oPTU4PWVudW0gZHJtX2RyaXZlcl9mZWF0dXJlIHtcbi0tXG5pbmNsdWRlL2RybS9kcm1fZHJ2LmgtOTYtXHQvKipcbmluY2x1ZGUvZHJtL2RybV9kcnYuaDo5NzpcdCAqIEBEUklWRVJfU1lOQ09CSl9USU1FTElORTpcbmluY2x1ZGUvZHJtL2RybV9kcnYuaC05OC1cdCAqXG4tLVxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oLTEwMS1cdCAqL1xuaW5jbHVkZS9kcm0vZHJtX2Rydi5oOjEwMjpcdERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FICAgICAgICAgPSBCSVQoNiksXG5pbmNsdWRlL2RybS9kcm1fZHJ2LmgtMTAzLVx0LyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2ODIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBFdmVudGZkIGFuZCBpdHMgSW50ZXJhY3Rpb24gd2l0aCBWaXJ0aW8tR1BVKioKCk9rYXksIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEkmIzM5O3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGluIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9kcnYuY2AsIHRoYXQgaGFzIHRoZSBgRFJJVkVSX1NZTkNPQkogfCBEUklWRVJfU1lOQ09CSl9USU1FTElORWAgZmxhZyBzZXQuIFJpZ2h0LCBWaXJ0aW8tR1BVIOKAkyB0aGF0JiMzOTtzIGEga2V5IHZpcnR1YWwgZGV2aWNlIGluIFFFTVUsIHNvIHRoYXTigJlzIGRpcmVjdGx5IHJlbGV2YW50IHRvIG15IGFyZWEgb2YgZXhwZXJ0aXNlLiBBbmQgdGhlbiBJIHNlZSBgZXZlbnRmZF9jdHhfcHV0YCBtZW50aW9uZWQuIE5vdywgYGV2ZW50ZmQuY2AgaXMgY29yZSBWRlMsIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBgZXZlbnRmZGAgc3Vic3lzdGVtIGxpdmVzLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY2FsbGluZyBgZXZlbnRmZF9jdHhfcHV0YC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWxhdGVkIHRvIFZpcnRpby1HUFUgbWVhbnMgaXQgY291bGQgYmUgcmVhbGx5IGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMuIFNvLCBsZXQmIzM5O3MgZmluZCBvdXQuIFRpbWUgdG8gZmlyZSB1cCB0aGUgZ3JlcCBhbmQgZ2V0IGEgbGlzdCBvZiBhbGwgY2FsbCBzaXRlcyBmb3IgYGV2ZW50ZmRfY3R4X3B1dGAuIEdvdHRhIHRyYWNlIGRvd24gdGhlIGV4ZWN1dGlvbiBwYXRoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2ZW50ZmRfY3R4X3B1dCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MjcyNT12b2lkIGt2bV9odl9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjczMS1cdGlkcl9mb3JfZWFjaF9lbnRyeShcdTAwMjZodi1cdTAwM2Vjb25uX3RvX2V2dCwgZXZlbnRmZCwgaSlcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNzMyOlx0XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjczMy1cdGlkcl9kZXN0cm95KFx1MDAyNmh2LVx1MDAzZWNvbm5fdG9fZXZ0KTtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MjczNj1zdGF0aWMgaW50IGt2bV9odl9ldmVudGZkX2Fzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBjb25uX2lkLCBpbnQgZmQpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NTUtXHRcdHJldCA9IC1FRVhJU1Q7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Mjc1NjpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzU3LVx0cmV0dXJuIHJldDtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9Mjc2MD1zdGF0aWMgaW50IGt2bV9odl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGNvbm5faWQpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NzItXHRzeW5jaHJvbml6ZV9zcmN1KFx1MDAyNmt2bS1cdTAwM2VzcmN1KTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNzczOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NzQtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjEzND1zdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0yMTk5LVx0aWYgKGV2ZW50ZmQpXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjIwMDpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTIyMDEtb3V0X25vZXZlbnRmZDpcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjIwNj1zdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBwb3J0KVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0yMjE4LVx0aWYgKCFldnRjaG5mZC1cdTAwM2VkZWxpdmVyLnBvcnQucG9ydClcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjE5Olx0XHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMjIyMC1cdGtmcmVlKGV2dGNobmZkKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjIyND1zdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNTctXHRcdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjI1ODpcdFx0XHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI1OS1cdFx0a2ZyZWUoZXZ0Y2huZmQpO1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0yMzU2PXZvaWQga3ZtX3hlbl9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjM2NC1cdFx0aWYgKCFldnRjaG5mZC1cdTAwM2VkZWxpdmVyLnBvcnQucG9ydClcbmFyY2gveDg2L2t2bS94ZW4uYzoyMzY1Olx0XHRcdGV2ZW50ZmRfY3R4X3B1dChldnRjaG5mZC1cdTAwM2VkZWxpdmVyLmV2ZW50ZmQuY3R4KTtcbmFyY2gveDg2L2t2bS94ZW4uYy0yMzY2LVx0XHRrZnJlZShldnRjaG5mZCk7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYz00NjA9c3RhdGljIHZvaWQgaHByaXZfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmMtNTM2LVx0aWYgKGhwcml2LVx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjUzNzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGhwcml2LVx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy01MzgtXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmM9NzkzPXN0YXRpYyBpbnQgZXZlbnRmZF91bnJlZ2lzdGVyKHN0cnVjdCBobF9mcHJpdiAqaHByaXYsIHN0cnVjdCBobF9pbmZvX2FyZ3MgKmFyZ3MpXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmMtODAwLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmM6ODAxOlx0ZXZlbnRmZF9jdHhfcHV0KGhwcml2LVx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmMtODAyLVx0aHByaXYtXHUwMDNlbm90aWZpZXJfZXZlbnQuZXZlbnRmZCA9IE5VTEw7XG4tLVxuZHJpdmVycy9mcGdhL2RmbC5jPTE4Njk9c3RhdGljIGludCBkb19zZXRfaXJxX3RyaWdnZXIoc3RydWN0IGRmbF9mZWF0dXJlICpmZWF0dXJlLCB1bnNpZ25lZCBpbnQgaWR4LFxuLS1cbmRyaXZlcnMvZnBnYS9kZmwuYy0xODgwLVx0XHRrZnJlZShmZWF0dXJlLVx1MDAzZWlycV9jdHhbaWR4XS5uYW1lKTtcbmRyaXZlcnMvZnBnYS9kZmwuYzoxODgxOlx0XHRldmVudGZkX2N0eF9wdXQoZmVhdHVyZS1cdTAwM2VpcnFfY3R4W2lkeF0udHJpZ2dlcik7XG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTg4Mi1cdFx0ZmVhdHVyZS1cdTAwM2VpcnFfY3R4W2lkeF0udHJpZ2dlciA9IE5VTEw7XG4tLVxuZHJpdmVycy9mcGdhL2RmbC5jLTE5MDYtXG5kcml2ZXJzL2ZwZ2EvZGZsLmM6MTkwNzpcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcbmRyaXZlcnMvZnBnYS9kZmwuYy0xOTA4LWZyZWVfbmFtZTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0zMDM9c3luY29ial9ldmVudGZkX2VudHJ5X2ZyZWUoc3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnkpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMDQte1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzA1Olx0ZXZlbnRmZF9jdHhfcHV0KGVudHJ5LVx1MDAzZWV2X2ZkX2N0eCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMDYtXHRkbWFfZmVuY2VfcHV0KGVudHJ5LVx1MDAzZWZlbmNlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYz02OTA9c3RhdGljIHZvaWQgaW50ZWxfdmdwdV9yZWxlYXNlX21zaV9ldmVudGZkX2N0eChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYy02OTUtXHRpZiAodHJpZ2dlcikge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmM6Njk2Olx0XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYy02OTctXHRcdHZncHUtXHUwMDNlbXNpX3RyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9MjU0PXN0YXRpYyB2b2lkIG1zaHZfaXJxZmRfc2h1dGRvd24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjY3LVx0XHRtc2h2X2lycWZkX3Jlc2FtcGxlcl9zaHV0ZG93bihpcnFmZCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjI2ODpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZWlycWZkX3Jlc2FtcGxlZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNjktXHR9XG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNzMtXHQgKi9cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6Mjc0Olx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZWlycWZkX2V2ZW50ZmRfY3R4KTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjc1LVx0a2ZyZWUoaXJxZmQpO1xuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9MzkzPXN0YXRpYyBpbnQgbXNodl9pcnFmZF9hc3NpZ24oc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTUyOS1cdGlmIChyZXNhbXBsZWZkIFx1MDAyNlx1MDAyNiAhSVNfRVJSKHJlc2FtcGxlZmQpKVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo1MzA6XHRcdGV2ZW50ZmRfY3R4X3B1dChyZXNhbXBsZWZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTMxLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzItXHRpZiAoZXZlbnRmZCBcdTAwMjZcdTAwMjYgIUlTX0VSUihldmVudGZkKSlcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NTMzOlx0XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTUzNC1cbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTU0Mz1zdGF0aWMgaW50IG1zaHZfaXJxZmRfZGVhc3NpZ24oc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTU2Mi1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NTYzOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01NjQtXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz02MzM9c3RhdGljIHZvaWQgaW9ldmVudGZkX3JlbGVhc2Uoc3RydWN0IG1zaHZfaW9ldmVudGZkICpwLCB1NjQgcGFydGl0aW9uX2lkKVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNjM2LVx0XHRtc2h2X3VucmVnaXN0ZXJfZG9vcmJlbGwocGFydGl0aW9uX2lkLCBwLVx1MDAzZWlvdm50ZmRfZG9vcmJlbGxfaWQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo2Mzc6XHRldmVudGZkX2N0eF9wdXQocC1cdTAwM2Vpb3ZudGZkX2V2ZW50ZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy02MzgtXHRrZnJlZShwKTtcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTY3Mz1zdGF0aWMgaW50IG1zaHZfYXNzaWduX2lvZXZlbnRmZChzdHJ1Y3QgbXNodl9wYXJ0aXRpb24gKnB0LFxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNzY3LWZhaWw6XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjc2ODpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNzY5LVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NzczPXN0YXRpYyBpbnQgbXNodl9kZWFzc2lnbl9pb2V2ZW50ZmQoc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTgxNC1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6ODE1Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy04MTYtXG4tLVxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmM9OTczPXN0YXRpYyBpbnQgbXNodl92dGxfc2ludF9pb2N0bF9zZXRfZXZlbnRmZChzdHJ1Y3QgbXNodl92dGxfc2V0X2V2ZW50ZmQgX191c2VyICphcmcpXG4tLVxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmMtOTk1LVx0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jOjk5NjpcdFx0ZXZlbnRmZF9jdHhfcHV0KG9sZF9ldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jLTk5Ny1cdH1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MjA3Mj1zdGF0aWMgaW50IFVWRVJCU19IQU5ETEVSKE1MWDVfSUJfTUVUSE9EX0RFVlhfU1VCU0NSSUJFX0VWRU5UKShcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjI0OS1cdFx0aWYgKGV2ZW50X3N1Yi1cdTAwM2VldmVudGZkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjIyNTA6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50X3N1Yi1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMjUxLVx0XHR1dmVyYnNfdW9iamVjdF9wdXQoXHUwMDI2ZXZlbnRfc3ViLVx1MDAzZWV2X2ZpbGUtXHUwMDNldW9iaik7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTI5NDA9c3RhdGljIHZvaWQgZGV2eF9mcmVlX3N1YnNjcmlwdGlvbihzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjk0NS1cdGlmIChldmVudF9zdWItXHUwMDNlZXZlbnRmZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyOTQ2Olx0XHRldmVudGZkX2N0eF9wdXQoZXZlbnRfc3ViLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI5NDctXHR1dmVyYnNfdW9iamVjdF9wdXQoXHUwMDI2ZXZlbnRfc3ViLVx1MDAzZWV2X2ZpbGUtXHUwMDNldW9iaik7XG4tLVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jPTE5MT1zdGF0aWMgdm9pZCBpcnFfZnJlZSh2b2lkICpwcml2YXRlKVxuLS1cbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0xOTQtXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM6MTk1Olx0ZXZlbnRmZF9jdHhfcHV0KGV2X2N0eCk7XG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMTk2LX1cbi0tXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM9MTk4PXN0YXRpYyBsb25nIGFmdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCxcbi0tXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMjU5LVx0XHRpZiAocmMpXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM6MjYwOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChldl9jdHgpO1xuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTI2MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYz00MTA9c3RhdGljIGludCB2ZmlvX2Njd19tZGV2X3NldF9pcnFzKHN0cnVjdCB2ZmlvX2Njd19wcml2YXRlICpwcml2YXRlLFxuLS1cbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMtNDYwLVx0XHRcdGlmICgqY3R4KVxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYzo0NjE6XHRcdFx0XHRldmVudGZkX2N0eF9wdXQoKmN0eCk7XG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ2Mi1cdFx0XHQqY3R4ID0gTlVMTDtcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ3MC1cdFx0XHRpZiAoKmN0eClcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM6NDcxOlx0XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KCpjdHgpO1xuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NzItXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIxNzI9c3RhdGljIGludCB2ZmlvX2FwX3NldF9yZXF1ZXN0X2lycShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTg3LVx0XHRpZiAobWF0cml4X21kZXYtXHUwMDNlcmVxX3RyaWdnZXIpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjE4ODpcdFx0XHRldmVudGZkX2N0eF9wdXQobWF0cml4X21kZXYtXHUwMDNlcmVxX3RyaWdnZXIpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIxODktXHRcdG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE5NS1cdFx0aWYgKG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIxOTY6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTk3LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMjA2PXN0YXRpYyBpbnQgdmZpb19hcF9zZXRfY2ZnX2NoYW5nZV9pcnEoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldiwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyMjAtXHRcdGlmIChtYXRyaXhfbWRldi1cdTAwM2VjZmdfY2hnX3RyaWdnZXIpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjIyMTpcdFx0XHRldmVudGZkX2N0eF9wdXQobWF0cml4X21kZXYtXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjIyLVx0XHRtYXRyaXhfbWRldi1cdTAwM2VjZmdfY2hnX3RyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjI4LVx0XHRpZiAobWF0cml4X21kZXYtXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyMjk6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVx1MDAzZWNmZ19jaGdfdHJpZ2dlcik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIzMC1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9mcy5jPTIyODk9c3RhdGljIHZvaWQgZmZzX2RhdGFfY2xlYXIoc3RydWN0IGZmc19kYXRhICpmZnMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYy0yMzEzLVx0aWYgKGZmcy1cdTAwM2VmZnNfZXZlbnRmZCkge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYzoyMzE0Olx0XHRldmVudGZkX2N0eF9wdXQoZmZzLVx1MDAzZWZmc19ldmVudGZkKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmMtMjMxNS1cdFx0ZmZzLVx1MDAzZWZmc19ldmVudGZkID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTQ5Nj1zdGF0aWMgdm9pZCB2ZHVzZV9kZXZfcmVzZXQoc3RydWN0IHZkdXNlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtNTMyLVx0XHRcdGlmICh2cS1cdTAwM2VraWNrZmQpXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jOjUzMzpcdFx0XHRcdGV2ZW50ZmRfY3R4X3B1dCh2cS1cdTAwM2VraWNrZmQpO1xuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy01MzQtXHRcdFx0dnEtXHUwMDNla2lja2ZkID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTExOTk9c3RhdGljIGludCB2ZHVzZV9raWNrZmRfc2V0dXAoc3RydWN0IHZkdXNlX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtMTIxOS1cdGlmICh2cS1cdTAwM2VraWNrZmQpXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jOjEyMjA6XHRcdGV2ZW50ZmRfY3R4X3B1dCh2cS1cdTAwM2VraWNrZmQpO1xuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy0xMjIxLVx0dnEtXHUwMDNla2lja2ZkID0gY3R4O1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jPTU4PXN0YXRpYyBpbnQgdmZpb19jZHhfbXNpX3NldF92ZWN0b3Jfc2lnbmFsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtNzEtXHRcdGtmcmVlKHZkZXYtXHUwMDNlY2R4X2lycXNbdmVjdG9yXS5uYW1lKTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjcyOlx0XHRldmVudGZkX2N0eF9wdXQodmRldi1cdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLnRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtNzMtXHRcdHZkZXYtXHUwMDNlY2R4X2lycXNbdmVjdG9yXS50cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy05My1cdFx0a2ZyZWUodmRldi1cdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLm5hbWUpO1xuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6OTQ6XHRcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTk1LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jPTYxPXN0YXRpYyBpbnQgdmZpb19zZXRfdHJpZ2dlcihzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTcyLVx0XHRrZnJlZShpcnEtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYzo3MzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlycS1cdTAwM2V0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTc0LVx0XHRpcnEtXHUwMDNldHJpZ2dlciA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmMtOTYtXHRcdGtmcmVlKGlycS1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jOjk3Olx0XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy05OC1cdFx0aXJxLVx1MDAzZXRyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTQ0PXN0YXRpYyB2b2lkIHZmaW9fcGNpX2V2ZW50ZmRfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpyY3UpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDgtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo0OTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkLVx1MDAzZWN0eCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01MC1cdGtmcmVlKGV2ZW50ZmQpO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTQxMz1zdGF0aWMgaW50IHZmaW9fcGNpX2NvcmVfcG1fZW50cnlfd2l0aF93YWtldXAoXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDM4LVx0aWYgKHJldClcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjQzOTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGVmZGN0eCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NDAtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NDQ0PXN0YXRpYyB2b2lkIF9fdmZpb19wY2lfcnVudGltZV9wbV9leGl0KHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NTAtXHRcdGlmICh2ZGV2LVx1MDAzZXBtX3dha2VfZXZlbnRmZF9jdHgpIHtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjQ1MTpcdFx0XHRldmVudGZkX2N0eF9wdXQodmRldi1cdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ1Mi1cdFx0XHR2ZGV2LVx1MDAzZXBtX3dha2VfZXZlbnRmZF9jdHggPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz0zMjQ9c3RhdGljIGludCB2ZmlvX2ludHhfc2V0X3NpZ25hbChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTM0Mi1cdFx0dmZpb192aXJxZmRfZmx1c2hfdGhyZWFkKFx1MDAyNmN0eC1cdTAwM2V1bm1hc2spO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjM0MzpcdFx0ZXZlbnRmZF9jdHhfcHV0KG9sZCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzQ0LVx0fVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz0zNDk9c3RhdGljIHZvaWQgdmZpb19pbnR4X2Rpc2FibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNjItXHRcdGlmIChjdHgtXHUwMDNldHJpZ2dlcilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzozNjM6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eC1cdTAwM2V0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNjQtXHRcdGtmcmVlKGN0eC1cdTAwM2VuYW1lKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NDQ3PXN0YXRpYyBpbnQgdmZpb19tc2lfc2V0X3ZlY3Rvcl9zaWduYWwoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy00NjUtXHRcdGtmcmVlKGN0eC1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo0NjY6XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgtXHUwMDNldHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNDY3LVx0XHR2ZmlvX2lycV9jdHhfZnJlZSh2ZGV2LCBjdHgsIHZlY3Rvcik7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTUyNS1vdXRfcHV0X2V2ZW50ZmRfY3R4OlxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjUyNjpcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy01Mjctb3V0X2ZyZWVfbmFtZTpcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NjM0PXN0YXRpYyBpbnQgdmZpb19wY2lfc2V0X2ludHhfdHJpZ2dlcihzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTY2Mi1cdFx0aWYgKHJldCBcdTAwMjZcdTAwMjYgdHJpZ2dlcilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo2NjM6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTY2NC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NzM0PXN0YXRpYyBpbnQgdmZpb19wY2lfc2V0X2N0eF90cmlnZ2VyX3NpbmdsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTc5My1cdFx0XHRpZiAocmV0KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjc5NDpcdFx0XHRcdGV2ZW50ZmRfY3R4X3B1dChlZmRjdHgpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTc5NS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYz0xODI9c3RhdGljIGludCB2ZmlvX3NldF90cmlnZ2VyKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGluZGV4LFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE4OS1cdFx0ZGlzYWJsZV9pcnEoaXJxLVx1MDAzZWh3aXJxKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjE5MDpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlycS1cdTAwM2V0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE5MS1cdFx0aXJxLVx1MDAzZXRyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jPTM1MT12b2lkIHZmaW9fcGxhdGZvcm1faXJxX2NsZWFudXAoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM2MC1cdFx0XHRpZiAodmRldi1cdTAwM2VpcnFzW2ldLnRyaWdnZXIpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzozNjE6XHRcdFx0XHRldmVudGZkX2N0eF9wdXQodmRldi1cdTAwM2VpcnFzW2ldLnRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMzYyLVx0XHRcdGtmcmVlKHZkZXYtXHUwMDNlaXJxc1tpXS5uYW1lKTtcbi0tXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM9ODU9c3RhdGljIHZvaWQgdmlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtOTEtXHRmbHVzaF93b3JrKFx1MDAyNnZpcnFmZC1cdTAwM2VpbmplY3QpO1xuZHJpdmVycy92ZmlvL3ZpcnFmZC5jOjkyOlx0ZXZlbnRmZF9jdHhfcHV0KHZpcnFmZC1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMvdmZpby92aXJxZmQuYy05My1cbi0tXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM9MTExPWludCB2ZmlvX3ZpcnFmZF9lbmFibGUodm9pZCAqb3BhcXVlLFxuLS1cbmRyaXZlcnMvdmZpby92aXJxZmQuYy0xODQtZXJyX2J1c3k6XG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM6MTg1Olx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtMTg2LWVycl9mZDpcbi0tXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYz01MTk9c3RhdGljIHZvaWQgdmhvc3RfdmRwYV9jb25maWdfcHV0KHN0cnVjdCB2aG9zdF92ZHBhICp2KVxuLS1cbmRyaXZlcnMvdmhvc3QvdmRwYS5jLTUyMS1cdGlmICh2LVx1MDAzZWNvbmZpZ19jdHgpIHtcbmRyaXZlcnMvdmhvc3QvdmRwYS5jOjUyMjpcdFx0ZXZlbnRmZF9jdHhfcHV0KHYtXHUwMDNlY29uZmlnX2N0eCk7XG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01MjMtXHRcdHYtXHUwMDNlY29uZmlnX2N0eCA9IE5VTEw7XG4tLVxuZHJpdmVycy92aG9zdC92ZHBhLmM9NTI3PXN0YXRpYyBsb25nIHZob3N0X3ZkcGFfc2V0X2NvbmZpZ19jYWxsKHN0cnVjdCB2aG9zdF92ZHBhICp2LCB1MzIgX191c2VyICphcmdwKVxuLS1cbmRyaXZlcnMvdmhvc3QvdmRwYS5jLTU0MS1cdGlmICghSVNfRVJSX09SX05VTEwoY3R4KSlcbmRyaXZlcnMvdmhvc3QvdmRwYS5jOjU0MjpcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01NDMtXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTEyMDM9dm9pZCB2aG9zdF9kZXZfY2xlYW51cChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMDgtXHRcdGlmIChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWVycm9yX2N0eClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjA5Olx0XHRcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWVycm9yX2N0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxMC1cdFx0aWYgKGRldi1cdTAwM2V2cXNbaV0tXHUwMDNla2ljaylcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxMi1cdFx0aWYgKGRldi1cdTAwM2V2cXNbaV0tXHUwMDNlY2FsbF9jdHguY3R4KVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjEyMTM6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGRldi1cdTAwM2V2cXNbaV0tXHUwMDNlY2FsbF9jdHguY3R4KTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjE0LVx0XHR2aG9zdF92cV9yZXNldChkZXYsIGRldi1cdTAwM2V2cXNbaV0pO1xuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjE3LVx0aWYgKGRldi1cdTAwM2Vsb2dfY3R4KVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjEyMTg6XHRcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXHUwMDNlbG9nX2N0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxOS1cdGRldi1cdTAwM2Vsb2dfY3R4ID0gTlVMTDtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjE1MD1sb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzQtXHRpZiAoIUlTX0VSUl9PUl9OVUxMKGN0eCkpXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjI3NTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI3Ni1cdGlmIChmaWxlcClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjMyMT1sb25nIHZob3N0X2Rldl9pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHZvaWQgX191c2VyICphcmdwKVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yNDE5LVx0XHRpZiAoY3R4KVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjI0MjA6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjQyMS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9NDM9c3RhdGljIHZvaWQgYWNybl9pb2V2ZW50ZmRfc2h1dGRvd24oc3RydWN0IGFjcm5fdm0gKnZtLCBzdHJ1Y3QgaHNtX2lvZXZlbnRmZCAqcClcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy00Ni1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjQ3Olx0ZXZlbnRmZF9jdHhfcHV0KHAtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy00OC1cdGxpc3RfZGVsKFx1MDAyNnAtXHUwMDNlbGlzdCk7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9NzY9c3RhdGljIGludCBhY3JuX2lvZXZlbnRmZF9hc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE0Mi1mYWlsOlxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM6MTQzOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTQ0LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYz0xNDc9c3RhdGljIGludCBhY3JuX2lvZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTY4LVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM6MTY5Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTcwLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz02MD1zdGF0aWMgdm9pZCBoc21faXJxZmRfc2h1dGRvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy03Mi1cdGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKGlycWZkLVx1MDAzZWV2ZW50ZmQsIFx1MDAyNmlycWZkLVx1MDAzZXdhaXQsIFx1MDAyNmNudCk7XG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jOjczOlx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy03NC1cdGtmcmVlKGlycWZkKTtcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jPTExMT1zdGF0aWMgaW50IGFjcm5faXJxZmRfYXNzaWduKHN0cnVjdCBhY3JuX3ZtICp2bSwgc3RydWN0IGFjcm5faXJxZmQgKmFyZ3MpXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xNzAtZmFpbDpcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM6MTcxOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xNzItb3V0OlxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM9MTc3PXN0YXRpYyBpbnQgYWNybl9pcnFmZF9kZWFzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xOTUtXHRtdXRleF91bmxvY2soXHUwMDI2dm0tXHUwMDNlaXJxZmRzX2xvY2spO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzoxOTY6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jLTE5Ny1cbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9OTEyPXN0YXRpYyB2b2lkIGlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtOTIxLVx0ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoa2lycWZkLVx1MDAzZWV2ZW50ZmQsIFx1MDAyNmtpcnFmZC1cdTAwM2V3YWl0LCBcdTAwMjZjbnQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjkyMjpcdGV2ZW50ZmRfY3R4X3B1dChraXJxZmQtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtOTIzLVx0a2ZyZWUoa2lycWZkKTtcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9OTc2PXN0YXRpYyBpbnQgcHJpdmNtZF9pcnFmZF9hc3NpZ24oc3RydWN0IHByaXZjbWRfaXJxZmQgKmlycWZkKVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMDQ0LWVycm9yX2V2ZW50ZmQ6XG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTA0NTpcdGV2ZW50ZmRfY3R4X3B1dChraXJxZmQtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA0Ni1cbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTA1Mj1zdGF0aWMgaW50IHByaXZjbWRfaXJxZmRfZGVhc3NpZ24oc3RydWN0IHByaXZjbWRfaXJxZmQgKmlycWZkKVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMDcyLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjEwNzM6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA3NC1cbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTM0Nj1zdGF0aWMgdm9pZCBpb2V2ZW50ZmRfZnJlZShzdHJ1Y3QgcHJpdmNtZF9rZXJuZWxfaW9ldmVudGZkICpraW9ldmVudGZkKVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMzQ4LVx0bGlzdF9kZWwoXHUwMDI2a2lvZXZlbnRmZC1cdTAwM2VsaXN0KTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMzQ5Olx0ZXZlbnRmZF9jdHhfcHV0KGtpb2V2ZW50ZmQtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTM1MC1cdGtmcmVlKGtpb2V2ZW50ZmQpO1xuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xMzUzPXN0YXRpYyBpbnQgcHJpdmNtZF9pb2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBwcml2Y21kX2lvZXZlbnRmZCAqaW9ldmVudGZkKVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xNDAzLWVycm9yX2V2ZW50ZmQ6XG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTQwNDpcdGV2ZW50ZmRfY3R4X3B1dChraW9ldmVudGZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0MDUtXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTE0MTE9c3RhdGljIGludCBwcml2Y21kX2lvZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3QgcHJpdmNtZF9pb2V2ZW50ZmQgKmlvZXZlbnRmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQ1NC1cdG11dGV4X3VubG9jayhcdTAwMjZpb3JlcV9sb2NrKTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxNDU1Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0NTYtXG4tLVxuZnMvYWlvLmM9MTE1Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW9jYl9kZXN0cm95KHN0cnVjdCBhaW9fa2lvY2IgKmlvY2IpXG4tLVxuZnMvYWlvLmMtMTE1OC1cdGlmIChpb2NiLVx1MDAzZWtpX2V2ZW50ZmQpXG5mcy9haW8uYzoxMTU5Olx0XHRldmVudGZkX2N0eF9wdXQoaW9jYi1cdTAwM2VraV9ldmVudGZkKTtcbmZzL2Fpby5jLTExNjAtXHRpZiAoaW9jYi1cdTAwM2VraV9maWxwKVxuLS1cbmZzL2V2ZW50ZmQuYz04OT1zdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG4tLVxuZnMvZXZlbnRmZC5jLTk2LS8qKlxuZnMvZXZlbnRmZC5jOjk3OiAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXG5mcy9ldmVudGZkLmMtOTgtICogQGN0eDogW2luXSBQb2ludGVyIHRvIGV2ZW50ZmQgY29udGV4dC5cbi0tXG5mcy9ldmVudGZkLmMtMTAyLSAqL1xuZnMvZXZlbnRmZC5jOjEwMzp2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbmZzL2V2ZW50ZmQuYy0xMDQte1xuLS1cbmZzL2V2ZW50ZmQuYy0xMDktfVxuZnMvZXZlbnRmZC5jOjExMDpFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xuZnMvZXZlbnRmZC5jLTExMS1cbmZzL2V2ZW50ZmQuYz0xMTI9c3RhdGljIGludCBldmVudGZkX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZXZlbnRmZC5jLTExNi1cdHdha2VfdXBfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTEhVUCk7XG5mcy9ldmVudGZkLmM6MTE3Olx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5mcy9ldmVudGZkLmMtMTE4LVx0cmV0dXJuIDA7XG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9MzE9c3RydWN0IGZpbGU7XG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtMzQtXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDozNTp2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCk7XG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC0zNi1zdHJ1Y3QgZmlsZSAqZXZlbnRmZF9mZ2V0KGludCBmZCk7XG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9NjE9c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtNjQtXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDo2NTpzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtNjYte1xuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oPTg4PXN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbi0tXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC05Mi1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oOjkzOkRFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtOTQtXG4tLVxuaW9fdXJpbmcvZXZlbnRmZC5jPTI4PXN0YXRpYyB2b2lkIGlvX2V2ZW50ZmRfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcbi0tXG5pb191cmluZy9ldmVudGZkLmMtMzEtXG5pb191cmluZy9ldmVudGZkLmM6MzI6XHRldmVudGZkX2N0eF9wdXQoZXZfZmQtXHUwMDNlY3FfZXZfZmQpO1xuaW9fdXJpbmcvZXZlbnRmZC5jLTMzLVx0a2ZyZWUoZXZfZmQpO1xuLS1cbm1tL21lbWNvbnRyb2wtdjEuYz0xMDIwPXN0YXRpYyB2b2lkIG1lbWNnX2V2ZW50X3JlbW92ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTEwMzItXG5tbS9tZW1jb250cm9sLXYxLmM6MTAzMzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudC1cdTAwM2VldmVudGZkKTtcbm1tL21lbWNvbnRyb2wtdjEuYy0xMDM0LVx0a2ZyZWUoZXZlbnQpO1xuLS1cbm1tL21lbWNvbnRyb2wtdjEuYz0xMDk0PXN0YXRpYyBzc2l6ZV90IG1lbWNnX3dyaXRlX2V2ZW50X2NvbnRyb2woc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xMjI3LW91dF9wdXRfZXZlbnRmZDpcbm1tL21lbWNvbnRyb2wtdjEuYzoxMjI4Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50LVx1MDAzZWV2ZW50ZmQpO1xubW0vbWVtY29udHJvbC12MS5jLTEyMjktb3V0X2tmcmVlOlxuLS1cbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYz0xNTM0PXN0YXRpYyB2b2lkIG10dHlfZGlzYWJsZV9pbnR4KHN0cnVjdCBtZGV2X3N0YXRlICptZGV2X3N0YXRlKVxuLS1cbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTM2LVx0aWYgKG1kZXZfc3RhdGUtXHUwMDNlaW50eF9ldnRmZCkge1xuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jOjE1Mzc6XHRcdGV2ZW50ZmRfY3R4X3B1dChtZGV2X3N0YXRlLVx1MDAzZWludHhfZXZ0ZmQpO1xuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jLTE1MzgtXHRcdG1kZXZfc3RhdGUtXHUwMDNlaW50eF9ldnRmZCA9IE5VTEw7XG4tLVxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jPTE1NDQ9c3RhdGljIHZvaWQgbXR0eV9kaXNhYmxlX21zaShzdHJ1Y3QgbWRldl9zdGF0ZSAqbWRldl9zdGF0ZSlcbi0tXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTU0Ni1cdGlmIChtZGV2X3N0YXRlLVx1MDAzZW1zaV9ldnRmZCkge1xuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jOjE1NDc6XHRcdGV2ZW50ZmRfY3R4X3B1dChtZGV2X3N0YXRlLVx1MDAzZW1zaV9ldnRmZCk7XG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTU0OC1cdFx0bWRldl9zdGF0ZS1cdTAwM2Vtc2lfZXZ0ZmQgPSBOVUxMO1xuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYz0xMjM9aXJxZmRfc2h1dGRvd24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNDYtXHRcdGlycWZkX3Jlc2FtcGxlcl9zaHV0ZG93bihpcnFmZCk7XG52aXJ0L2t2bS9ldmVudGZkLmM6MTQ3Olx0XHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXHUwMDNlcmVzYW1wbGVmZCk7XG52aXJ0L2t2bS9ldmVudGZkLmMtMTQ4LVx0fVxuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNTUtI2VuZGlmXG52aXJ0L2t2bS9ldmVudGZkLmM6MTU2Olx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZWV2ZW50ZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jLTE1Ny1cdGtmcmVlKGlycWZkKTtcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmM9MzcxPWt2bV9pcnFmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycWZkICphcmdzKVxuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTItXHRpZiAocmVzYW1wbGVmZCBcdTAwMjZcdTAwMjYgIUlTX0VSUihyZXNhbXBsZWZkKSlcbnZpcnQva3ZtL2V2ZW50ZmQuYzo1MTM6XHRcdGV2ZW50ZmRfY3R4X3B1dChyZXNhbXBsZWZkKTtcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTQtXG52aXJ0L2t2bS9ldmVudGZkLmMtNTE1LVx0aWYgKGV2ZW50ZmQgXHUwMDI2XHUwMDI2ICFJU19FUlIoZXZlbnRmZCkpXG52aXJ0L2t2bS9ldmVudGZkLmM6NTE2Olx0XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG52aXJ0L2t2bS9ldmVudGZkLmMtNTE3LVxuLS1cbnZpcnQva3ZtL2V2ZW50ZmQuYz01OTA9a3ZtX2lycWZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9pcnFmZCAqYXJncylcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmMtNjA2LVx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmt2bS1cdTAwM2VpcnFmZHMubG9jayk7XG52aXJ0L2t2bS9ldmVudGZkLmM6NjA3Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jLTYwOC1cbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5NTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgUGF0Y2gqKgoKT2theSwgc28gYGV2ZW50ZmRfY3R4X3B1dGAgaXMgYWxsIG92ZXIgdGhlIGtlcm5lbCwgaHVoPyAgS1ZNLCBBSU8sIGlvX3VyaW5nLCBEUk0gc3luY29ianMsIHZob3N0LCBldmVuIFVTQiBnYWRnZXQgc3R1ZmbigKYgdGhhdCYjMzk7cyBhICpsb3QqIG9mIHBsYWNlcy4gIEl0JiMzOTtzIG9idmlvdXNseSBhIGNvcmUgZnVuY3Rpb24uIEFscmlnaHQsIEkmIzM5O20gYWxyZWFkeSB0cmFja2luZyBhbGwgdGhlc2UgY2FsbHMuCgpTbywgdGhlIHBhdGNoIGlzIGFkZGluZyBgaWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpIHJldHVybjtgIHRvIGBldmVudGZkX2N0eF9wdXQoKWAuICBUaGF0IGxvb2tzIGxpa2UgYSBkZWZlbnNpdmUgY2hlY2ssIGd1YXJkaW5nIGFnYWluc3QgYSBiYWQgcG9pbnRlci4gIE1ha2VzIHNlbnNlLCBwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhlIGJyb2FkIHVzYWdlIG9mIHRoZSBmdW5jdGlvbi4gIEkgd29uZGVyLCB0aG91Z2gsIGFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cz8gIEl0JiMzOTtzIGdvb2QgdGhhdCB0aGV5IGFyZSBmb2N1c2luZyBvbiBhZGRpbmcgdGhpcy4KCldhaXQgYSBzZWNvbmTigKYgYmVmb3JlIEkgZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZSB0aGF0JiMzOTtzIGNhbGxpbmcgaXQsIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgYGluY2x1ZGUvbGludXgvZXZlbnRmZC5oYCBoYXMgdGhlIGR1bW15IHN0YXRpYyBpbmxpbmUgZm9yIHdoZW4gYCFDT05GSUdfRVZFTlRGRGAuIE5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmaXggaXMgY29ycmVjdGx5IGltcGxlbWVudGVkLiBDaGVja2luZyB0aGF0IHRoZSBoZWFkZXIgZ3VhcmQgcHJldmVudHMgdGhlIGlzc3VlcyBvbiBrZXJuZWxzIHRoYXQgZG9uJiMzOTt0IGV2ZW4gdXNlIGV2ZW50ZmQgd291bGQgYmUgYSBnb29kIHN0ZXAgaGVyZS4gIExldCBtZSBqdW1wIG92ZXIgdG8gdGhvc2UgbGluZXMgYW5kIG1ha2Ugc3VyZSB0aGUgaW5saW5lIGlzIHdoYXQgSSBleHBlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9ldmVudGZkLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU1Olx0XG4gIDU2Olx0c3RhdGljIGlubGluZSBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmRfY3R4X2ZkZ2V0KGludCBmZClcbiAgNTc6XHR7XG4gIDU4Olx0XHRyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTtcbiAgNTk6XHR9XG4gIDYwOlx0XG4gIDYxOlx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXG4gIDYyOlx0e1xuICA2MzpcdH1cbiAgNjQ6XHRcbiAgNjU6XHRzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuICA2NjpcdHtcbiAgNjc6XHRcbiAgNjg6XHR9XG4gIDY5Olx0XG4gIDcwOlx0c3RhdGljIGlubGluZSBpbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsXG4gIDcxOlx0XHRcdFx0XHRcdFx0d2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LCBfX3U2NCAqY250KVxuICA3MjpcdHtcbiAgNzM6XHRcdHJldHVybiAtRU5PU1lTO1xuICA3NDpcdH1cbiAgNzU6XHRcbiAgNzY6XHRzdGF0aWMgaW5saW5lIGJvb2wgZXZlbnRmZF9zaWduYWxfYWxsb3dlZCh2b2lkKVxuICA3NzpcdHtcbiAgNzg6XHRcdHJldHVybiB0cnVlO1xuICA3OTpcdH1cbiAgODA6XHRcbiAgODE6XHRzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcbiAgODI6XHR7XG4gIDgzOlx0XG4gIDg0Olx0fVxuICA4NTpcdFxuICA4NjpcdCNlbmRpZlxuICA4NzpcdFxuICA4ODpcdHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbiAgODk6XHR7XG4gIDkwOlx0XHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gIDkxOlx0fVxuICA5MjpcdFxuICA5MzpcdERFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuICA5NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5NTEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBDcmFzaCBWdWxuZXJhYmlsaXR5IGFuZCBpdHMgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBvdGVudGlhbCBrZXJuZWwgaXNzdWUsIGFuZCBpdCYjMzk7cyBhbGwgYWJvdXQgaG93IGBldmVudGZkYCBjb250ZXh0cyBhcmUgaGFuZGxlZCBpbiB0aGUgRFJNIChEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIpIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIHN5bmMgb2JqZWN0cy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGZ1bmN0aW9uLgoKSSBzdGFydGVkIGJ5IGxvb2tpbmcgYXQgYGluY2x1ZGUvbGludXgvZXZlbnRmZC5oYCwgd2hlcmUgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gaXMgZGVmaW5lZCBmb3IgYGV2ZW50ZmRfY3R4YCwgYW5kIHRoZW4gSSB0cmFjZWQgaXRzIHVzYWdlIGluIGBmcy9ldmVudGZkLmNgIGFuZCBzcGVjaWZpY2FsbHkgYGV2ZW50ZmRfY3R4X3B1dGAuIFRoaXMgZnVuY3Rpb24sIGNydWNpYWxseSwgZGVjcmVtZW50cyBhIHJlZmVyZW5jZSBjb3VudGVyIChga3JlZmApIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnRmZCBjb250ZXh0LgoKVGhlIGNydXggb2YgdGhlIGlzc3VlIGlzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBhbmQgYGV2ZW50ZmRfY3R4X3B1dGAuICBUaGUgZnVuY3Rpb24gYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIHJldHJpZXZlcyBhbiBgZXZlbnRmZF9jdHhgIHVzaW5nIGBldmVudGZkX2N0eF9mZGdldGAuIFRoZSBjb2RlIHVzZXMgdGhlIGBfX2ZyZWVgIGF0dHJpYnV0ZSB0byBjYWxsIGBldmVudGZkX2N0eF9wdXRgIG9uIGV4aXQuIElmIGBldmVudGZkX2N0eF9mZGdldGAgZmFpbHMgKHJldHVybmluZyBhbiBlcnJvciBwb2ludGVyIGxpa2UgYC1FQkFERmAgb3IgYC1FSU5WQUxgKSwgdGhlIGZ1bmN0aW9uIGp1bXBzIHRvIGBlcnJfZmRnZXRgLCB0cmlnZ2VyaW5nIHRoZSBjbGVhbnVwIG9uIHRoZSBlcnJvciBwb2ludGVyLgoKSGVyZSYjMzk7cyB0aGUgcHJvYmxlbSBJIHNlZS4gKkJlZm9yZSogdGhlIGZpeCwgYGV2ZW50ZmRfY3R4X3B1dGAgKmRpZG4mIzM5O3QqIGNoZWNrIGlmIHRoZSBgZXZlbnRmZF9jdHhgIHBvaW50ZXIgd2FzIGFuIGVycm9yIHBvaW50ZXIgKHVzaW5nIGBJU19FUlJfT1JfTlVMTGApLiBUaGlzIG1lYW50IHRoYXQsIGlmIGBldmVudGZkX2N0eF9mZGdldGAgZmFpbGVkLCBjYWxsaW5nIGBldmVudGZkX2N0eF9wdXRgIG9uIHRoZSByZXR1cm5lZCBlcnJvciBwb2ludGVyIHdvdWxkIGxlYWQgdG8gYW4gYXR0ZW1wdCB0byBkZXJlZmVyZW5jZSBhIGdhcmJhZ2UgcG9pbnRlciwgY2F1c2luZyBhIGtlcm5lbCBjcmFzaCAoc3BlY2lmaWNhbGx5LCBhIHBhZ2UgZmF1bHQgYmVjYXVzZSBgY3R4LSZndDtrcmVmYCB3b3VsZCBiZSBpbnZhbGlkKS4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uCgpUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IGZpeGVzIHRoaXMgYnkgYWRkaW5nIGBpZiAoSVNfRVJSX09SX05VTEwoY3R4KSkgcmV0dXJuO2AgYXQgdGhlIGJlZ2lubmluZyBvZiBgZXZlbnRmZF9jdHhfcHV0YC4gVGhpcyBzaW1wbGUgY2hlY2sgbWFrZXMgdGhlIGZ1bmN0aW9uIHNhZmUgdG8gY2FsbCB3aXRoIGVycm9yIHBvaW50ZXJzLCBwcmV2ZW50aW5nIHRoZSBkZXJlZmVyZW5jZSBhbmQgdGhlIGNyYXNoLiAgSXQmIzM5O3MgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGRlZmVuc2l2ZSBwcm9ncmFtbWluZywgYW5kIGEgY3JpdGljYWwgZml4IGZvciBhIHNlcmlvdXMgdnVsbmVyYWJpbGl0eS4KCkkgYWxzbyBzZWUgdGhhdCBvdGhlciBmYWlsdXJlIHBhdGhzIGFyZSBoYW5kbGVkIGNvcnJlY3RseSwgc3VjaCBhcyBpZiBga3phbGxvY19vYmpgIGZhaWxzLiBJbiB0aG9zZSBjYXNlcywgdGhlIGNoZWNrIGFsc28gc2FmZWx5IGhhbmRsZXMgdGhlIGBldmVudGZkX2N0eF9wdXRgIGNhbGwuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgY29kZSBwYXRoIHJlYWNoYWJsZT8gVGhlIGFuc3dlciBpcyBZRVMhICBgRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRGAgaXMgZXhwb3NlZCB0aHJvdWdoIHZpcnRpby1ncHUgKGFuZCBwb3RlbnRpYWxseSBvdGhlciB2aXJ0dWFsIERSTSBkZXZpY2VzKS4gVGhpcyBtZWFucyBhIHVzZXItc3BhY2UgYXBwbGljYXRpb24gY291bGQgdHJpZ2dlciB0aGlzIGNvZGUsIHBvdGVudGlhbGx5IGV4cGxvaXRpbmcgdGhpcyB2dWxuZXJhYmlsaXR5IChiZWZvcmUgdGhlIGZpeCkgdG8gY3Jhc2ggdGhlIGtlcm5lbCBvciB3b3JzZS4gIEkgbmVlZCB0byBjaGVjayBpZiB2a21zIGhhcyBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2a21zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDcwOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MzYxPXNvdXJjZSBcJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjM2Mjpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMzYzLXNvdXJjZSBcJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTg2PW9iai0kKENPTkZJR19EUk1fVkdFTSlcdCYjNDM7PSB2Z2VtL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4NzpvYmotJChDT05GSUdfRFJNX1ZLTVMpXHQmIzQzOz0gdmttcy9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xODgtb2JqLSQoQ09ORklHX0RSTV9OT1VWRUFVKSAmIzQzOz1ub3V2ZWF1L1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTE0OD1hbWRncHUteSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTE0OS1cdGRjZV92MTBfMC5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZToxNTA6XHRhbWRncHVfdmttcy5vXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0xNTEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg9NjIxPXN0cnVjdCBhbWRncHVfZGV2aWNlIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC03MDctXHRib29sXHRcdFx0XHRlbmFibGVfdmlydHVhbF9kaXNwbGF5O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6NzA4Olx0c3RydWN0IGFtZGdwdV92a21zX291dHB1dCAgICAgICAqYW1kZ3B1X3ZrbXNfb3V0cHV0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtNzA5LVx0c3RydWN0IGFtZGdwdV9tb2RlX2luZm9cdFx0bW9kZV9pbmZvO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYy0xMDItI2luY2x1ZGUgXCYjMzQ7anBlZ192NF8wXzUuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jOjEwMzojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmMtMTA0LSNpbmNsdWRlIFwmIzM0O21lc192MTFfMC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jPTI2NDI9c3RhdGljIHZvaWQgYW1kZ3B1X2Rpc2NvdmVyeV9zZXRfc3Jpb3ZfZGlzcGxheShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmMtMjY0NC1cdGFtZGdwdV9kZXZpY2Vfc2V0X3NyaW92X3ZpcnR1YWxfZGlzcGxheShhZGV2KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYzoyNjQ1Olx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NDYtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYz0yNjQ5PXN0YXRpYyBpbnQgYW1kZ3B1X2Rpc2NvdmVyeV9zZXRfZGlzcGxheV9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NTEtXHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmM6MjY1MjpcdFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NTMtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTgtI2luY2x1ZGUgXCYjMzQ7aXZzcmNpZC9pdnNyY2lkX3Zpc2xhbmRzMzAuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxOTojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTIwLSNpbmNsdWRlIFwmIzM0O2FtZGdwdV9kaXNwbGF5LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI0LS8qKlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyNTogKiBET0M6IGFtZGdwdV92a21zXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI2LSAqXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI3OiAqIFRoZSBhbWRncHUgdmttcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSB2aXJ0dWFsIEtNUyBpbnRlcmZhY2UgZm9yIHNldmVyYWwgdXNlXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI4LSAqIGNhc2VzOiBkZXZpY2VzIHdpdGhvdXQgZGlzcGxheSBoYXJkd2FyZSwgcGxhdGZvcm1zIHdoZXJlIHRoZSBhY3R1YWwgZGlzcGxheVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzEtICogdXNhYmxlLiBXZSBwcmV2aW91c2x5IGVtdWxhdGVkIGEgbGVnYWN5IEtNUyBpbnRlcmZhY2UsIGJ1dCB0aGVyZSB3YXMgYSBkZXNpcmVcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzI6ICogdG8gbW92ZSB0byB0aGUgYXRvbWljIEtNUyBpbnRlcmZhY2UuIFRoZSB2a21zIGRyaXZlciBkaWQgZXZlcnl0aGluZyB3ZVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMy0gKiBuZWVkZWQsIGJ1dCB3ZSB3YW50ZWQgS01TIHN1cHBvcnQgbmF0aXZlbHkgaW4gdGhlIGRyaXZlciB3aXRob3V0IGJ1ZmZlclxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNC0gKiBzaGFyaW5nIGFuZCB0aGUgYWJpbGl0eSB0byBzdXBwb3J0IGFuIGluc3RhbmNlIG9mIFZLTVMgcGVyIGRldmljZS4gV2UgZmlyc3RcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzU6ICogbG9va2VkIGF0IHNwbGl0dGluZyB2a21zIGludG8gYSBzdHViIGRyaXZlciBhbmQgYSBoZWxwZXIgbW9kdWxlIHRoYXQgb3RoZXJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzYtICogZHJpdmVycyBjb3VsZCB1c2UgdG8gaW1wbGVtZW50IGEgdmlydHVhbCBkaXNwbGF5LCBidXQgdGhpcyBzdHJhdGVneSBlbmRlZCB1cFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNy0gKiBiZWluZyBtZXNzeSBkdWUgdG8gZHJpdmVyIHNwZWNpZmljIGNhbGxiYWNrcyBuZWVkZWQgZm9yIGJ1ZmZlciBtYW5hZ2VtZW50LlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozODogKiBVbHRpbWF0ZWx5LCBpdCBwcm92ZWQgZWFzaWVyIHRvIGltcG9ydCB0aGUgdmttcyBjb2RlIGFzIGl0IG1vc3RseSB1c2VkIGNvcmVcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzktICogZHJtIGhlbHBlcnMgYW55d2F5LlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDEtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQyOnN0YXRpYyBjb25zdCB1MzIgYW1kZ3B1X3ZrbXNfZm9ybWF0c1tdID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00My1cdERSTV9GT1JNQVRfWFJHQjg4ODgsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00NS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBhbWRncHVfdmttc19jcnRjX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00Ny1cdC5zZXRfY29uZmlnICAgICAgICAgICAgID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU1LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1NjpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBhbWRncHVfdmttc19jcnRjX2hlbHBlcl9mdW5jcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTctXHREUk1fQ1JUQ19IRUxQRVJfVkJMQU5LX0ZVTkNTLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTktXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjYwOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNjEtXHRcdFx0ICBzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LCBzdHJ1Y3QgZHJtX3BsYW5lICpjdXJzb3IpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy02Ny1cdHJldCA9IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoZGV2LCBjcnRjLCBwcmltYXJ5LCBjdXJzb3IsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjY4Olx0XHRcdFx0XHRcdTAwMjZhbWRncHVfdmttc19jcnRjX2Z1bmNzLCBOVUxMKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNjktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy03My1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NzQ6XHRkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMsIFx1MDAyNmFtZGdwdV92a21zX2NydGNfaGVscGVyX2Z1bmNzKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNzUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy04NS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6ODY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGFtZGdwdV92a21zX2Nvbm5lY3Rvcl9mdW5jcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtODctXHQuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2Rlcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTkzLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo5NDpzdGF0aWMgaW50IGFtZGdwdV92a21zX2Nvbm5fZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTk1LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTEzOC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgYW1kZ3B1X3ZrbXNfY29ubl9oZWxwZXJfZnVuY3MgPSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjE0MDpcdC5nZXRfbW9kZXMgICAgPSBhbWRncHVfdmttc19jb25uX2dldF9tb2RlcyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTQxLX07XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTE0Mi1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGFtZGdwdV92a21zX3BsYW5lX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNDQtXHQudXBkYXRlX3BsYW5lXHRcdD0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTUxLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxNTI6c3RhdGljIHZvaWQgYW1kZ3B1X3ZrbXNfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTUzLVx0XHRcdFx0XHQgICAgc3RydWN0IGRybV9hdG9taWNfY29tbWl0ICpvbGRfc3RhdGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNTctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjE1ODpzdGF0aWMgaW50IGFtZGdwdV92a21zX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTU5LVx0XHRcdFx0XHQgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xODctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjE4ODpzdGF0aWMgaW50IGFtZGdwdV92a21zX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTE4OS1cdFx0XHRcdCAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjU3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyNTg6c3RhdGljIHZvaWQgYW1kZ3B1X3ZrbXNfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjU5LVx0XHRcdFx0ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjg1LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyODY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGFtZGdwdV92a21zX3ByaW1hcnlfaGVscGVyX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyODc6XHQuYXRvbWljX3VwZGF0ZVx0XHQ9IGFtZGdwdV92a21zX3BsYW5lX2F0b21pY191cGRhdGUsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI4ODpcdC5hdG9taWNfY2hlY2tcdFx0PSBhbWRncHVfdmttc19wbGFuZV9hdG9taWNfY2hlY2ssXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI4OTpcdC5wcmVwYXJlX2ZiXHRcdD0gYW1kZ3B1X3ZrbXNfcHJlcGFyZV9mYixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MjkwOlx0LmNsZWFudXBfZmJcdFx0PSBhbWRncHVfdmttc19jbGVhbnVwX2ZiLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0yOTEtfTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjkyLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyOTM6c3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmFtZGdwdV92a21zX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjk0LVx0XHRcdFx0XHRcdGVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMwNC1cdHJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChkZXYsIHBsYW5lLCAxIFx1MDAzY1x1MDAzYyBpbmRleCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzA1Olx0XHRcdFx0ICAgICAgIFx1MDAyNmFtZGdwdV92a21zX3BsYW5lX2Z1bmNzLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozMDY6XHRcdFx0XHQgICAgICAgYW1kZ3B1X3ZrbXNfZm9ybWF0cyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzA3Olx0XHRcdFx0ICAgICAgIEFSUkFZX1NJWkUoYW1kZ3B1X3ZrbXNfZm9ybWF0cyksXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMwOC1cdFx0XHRcdCAgICAgICBOVUxMLCB0eXBlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMxMy1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzE0Olx0ZHJtX3BsYW5lX2hlbHBlcl9hZGQocGxhbmUsIFx1MDAyNmFtZGdwdV92a21zX3ByaW1hcnlfaGVscGVyX2Z1bmNzKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzE1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM9MzE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZHJtX2VuY29kZXJfZnVuY3NfY2xlYW51cCA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMyMi1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzIzOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfb3V0cHV0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMyNDpcdFx0XHRcdCAgIGFtZGdwdV92a21zX291dHB1dCAqb3V0cHV0LCBpbnQgaW5kZXgpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMyNS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMzEtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMzMjpcdHByaW1hcnkgPSBhbWRncHVfdmttc19wbGFuZV9pbml0KGRldiwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwgaW5kZXgpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMzMtXHRpZiAoSVNfRVJSKHByaW1hcnkpKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzM1LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozMzY6XHRyZXQgPSBhbWRncHVfdmttc19jcnRjX2luaXQoZGV2LCBjcnRjLCBwcmltYXJ5LCBjdXJzb3IpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzM5LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozNDA6XHRyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IsIFx1MDAyNmFtZGdwdV92a21zX2Nvbm5lY3Rvcl9mdW5jcyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzQxLVx0XHRcdFx0IERSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFMKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM0Ni1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzQ3Olx0ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgXHUwMDI2YW1kZ3B1X3ZrbXNfY29ubl9oZWxwZXJfZnVuY3MpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNDgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zODItXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjM4Mzpjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGFtZGdwdV92a21zX21vZGVfZnVuY3MgPSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM4NC1cdC5mYl9jcmVhdGUgPSBhbWRncHVfZGlzcGxheV91c2VyX2ZyYW1lYnVmZmVyX2NyZWF0ZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM4OC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mzg5OnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfc3dfaW5pdChzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzkwLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM5My1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mzk0Olx0YWRldi1cdTAwM2VhbWRncHVfdmttc19vdXRwdXQgPSBremFsbG9jX29ianMoc3RydWN0IGFtZGdwdV92a21zX291dHB1dCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzk1LVx0XHRcdFx0XHRcdGFkZXYtXHUwMDNlbW9kZV9pbmZvLm51bV9jcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mzk2Olx0aWYgKCFhZGV2LVx1MDAzZWFtZGdwdV92a21zX291dHB1dClcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzk3LVx0XHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQwMC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDAxOlx0YWRldl90b19kcm0oYWRldiktXHUwMDNlbW9kZV9jb25maWcuZnVuY3MgPSBcdTAwMjZhbWRncHVfdmttc19tb2RlX2Z1bmNzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MDItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MTYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZGV2LVx1MDAzZW1vZGVfaW5mby5udW1fY3J0YzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDE3Olx0XHRyID0gYW1kZ3B1X3ZrbXNfb3V0cHV0X2luaXQoYWRldl90b19kcm0oYWRldiksIFx1MDAyNmFkZXYtXHUwMDNlYW1kZ3B1X3ZrbXNfb3V0cHV0W2ldLCBpKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDE4LVx0XHRpZiAocilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQzMS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDMyOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfc3dfZmluaShzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDMzLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ0MS1cdGRybV9lZGlkX2ZyZWUoYWRldi1cdTAwM2Vtb2RlX2luZm8uYmlvc19oYXJkY29kZWRfZWRpZCk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ0MjpcdGtmcmVlKGFkZXYtXHUwMDNlYW1kZ3B1X3ZrbXNfb3V0cHV0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDQzLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00NDUtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ0NjpzdGF0aWMgaW50IGFtZGdwdV92a21zX2h3X2luaXQoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ0Ny17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00ODMtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ4NDpzdGF0aWMgaW50IGFtZGdwdV92a21zX2h3X2Zpbmkoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ4NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00ODgtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ4OTpzdGF0aWMgaW50IGFtZGdwdV92a21zX3N1c3BlbmQoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ5MC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MDAtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUwMTpzdGF0aWMgaW50IGFtZGdwdV92a21zX3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTAyLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUwNC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTA1Olx0ciA9IGFtZGdwdV92a21zX2h3X2luaXQoaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MDYtXHRpZiAocilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUxMC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTExOnN0YXRpYyBib29sIGFtZGdwdV92a21zX2lzX2lkbGUoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUxMi17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MTUtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUxNjpzdGF0aWMgaW50IGFtZGdwdV92a21zX3NldF9jbG9ja2dhdGluZ19zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jayxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTE3LVx0XHRcdFx0XHQgIGVudW0gYW1kX2Nsb2NrZ2F0aW5nX3N0YXRlIHN0YXRlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTIxLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MjI6c3RhdGljIGludCBhbWRncHVfdmttc19zZXRfcG93ZXJnYXRpbmdfc3RhdGUoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2ssXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUyMy1cdFx0XHRcdFx0ICBlbnVtIGFtZF9wb3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUyNy1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNzIGFtZGdwdV92a21zX2lwX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1Mjk6XHQubmFtZSA9IFwmIzM0O2FtZGdwdV92a21zXCYjMzQ7LFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MzA6XHQuc3dfaW5pdCA9IGFtZGdwdV92a21zX3N3X2luaXQsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzMTpcdC5zd19maW5pID0gYW1kZ3B1X3ZrbXNfc3dfZmluaSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTMyOlx0Lmh3X2luaXQgPSBhbWRncHVfdmttc19od19pbml0LFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MzM6XHQuaHdfZmluaSA9IGFtZGdwdV92a21zX2h3X2ZpbmksXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzNDpcdC5zdXNwZW5kID0gYW1kZ3B1X3ZrbXNfc3VzcGVuZCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM1Olx0LnJlc3VtZSA9IGFtZGdwdV92a21zX3Jlc3VtZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM2Olx0LmlzX2lkbGUgPSBhbWRncHVfdmttc19pc19pZGxlLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1Mzc6XHQuc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlID0gYW1kZ3B1X3ZrbXNfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1Mzg6XHQuc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlID0gYW1kZ3B1X3ZrbXNfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MzktfTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTQwLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1NDE6Y29uc3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIGFtZGdwdV92a21zX2lwX2Jsb2NrID0ge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01NDItXHQudHlwZSA9IEFNRF9JUF9CTE9DS19UWVBFX0RDRSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU0NS1cdC5yZXYgPSAwLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1NDY6XHQuZnVuY3MgPSBcdTAwMjZhbWRncHVfdmttc19pcF9mdW5jcyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTQ3LX07XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaC0xMS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmg6MTI6I2RlZmluZSBkcm1fY3J0Y190b19hbWRncHVfdmttc19vdXRwdXQodGFyZ2V0KSBcXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaDoxMzpcdGNvbnRhaW5lcl9vZih0YXJnZXQsIHN0cnVjdCBhbWRncHVfdmttc19vdXRwdXQsIGNydGMuYmFzZSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmgtMTQtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oOjE1OmV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gYW1kZ3B1X3ZrbXNfaXBfYmxvY2s7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oLTE2LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaDoxNzpzdHJ1Y3QgYW1kZ3B1X3ZrbXNfb3V0cHV0IHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmgtMTgtXHRzdHJ1Y3QgYW1kZ3B1X2NydGMgY3J0Yztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy03My0jaW5jbHVkZSBcJiMzNDthbWRncHVfYW1ka2ZkLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jOjc0OiNpbmNsdWRlIFwmIzM0O2FtZGdwdV92a21zLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTc1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jPTIxODY9aW50IGNpa19zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIxOTYtXHRcdGlmIChhZGV2LVx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYzoyMTk3Olx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIxOTgtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtMjIxNC1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jOjIyMTU6XHRcdFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtMjIxNi0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy0yMjMyLVx0XHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmM6MjIzMzpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy0yMjM0LSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIyNTItXHRcdGlmIChhZGV2LVx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYzoyMjUzOlx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIyNTQtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbnYuYy02MS0jaW5jbHVkZSBcJiMzNDtqcGVnX3YzXzAuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbnYuYzo2MjojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9udi5jLTYzLSNpbmNsdWRlIFwmIzM0O214Z3B1X252LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTcyLSNpbmNsdWRlIFwmIzM0O2FtZGdwdV9kbS5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jOjczOiNpbmNsdWRlIFwmIzM0O2FtZGdwdV92a21zLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtNzQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYz0yNjg3PWludCBzaV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjY5OS1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmM6MjcwMDpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI3MDEtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDX1NJKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjcxNy1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmM6MjcxODpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI3MTktI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDX1NJKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjczNC1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmM6MjczNTpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI3MzYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NvYzE1LmMtNzUtI2luY2x1ZGUgXCYjMzQ7c211aW9fdjEzXzAuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc29jMTUuYzo3NjojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jLTc3LSNpbmNsdWRlIFwmIzM0O214Z3B1X2FpLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTc5LSNlbmRpZlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzo4MDojaW5jbHVkZSBcJiMzNDthbWRncHVfdmttcy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTgxLSNpbmNsdWRlIFwmIzM0O214Z3B1X3ZpLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jPTIwNDg9aW50IHZpX3NldF9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDYxLVx0XHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMDYyOlx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjA2My1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDcxLVx0XHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMDcyOlx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjA3My0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIwOTEtXHRcdGlmIChhZGV2LVx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jOjIwOTI6XHRcdFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDkzLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjExNC1cdFx0aWYgKGFkZXYtXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmM6MjExNTpcdFx0XHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIxMTYtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMTMwLVx0XHRpZiAoYWRldi1cdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMTMxOlx0XHRcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjEzMi0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIxNDktXHRcdGlmIChhZGV2LVx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jOjIxNTA6XHRcdFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMTUxLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS9pZ3RfcnVubmVyLnNoPTI1PWNhc2UgXCYjMzQ7JERSSVZFUl9OQU1FXCYjMzQ7IGluXG5kcml2ZXJzL2dwdS9kcm0vY2kvaWd0X3J1bm5lci5zaDoyNjogICAgYW1kZ3B1fHZrbXN8cGFudGhvcilcbmRyaXZlcnMvZ3B1L2RybS9jaS9pZ3RfcnVubmVyLnNoLTI3LSAgICAgICAgIyBDYW5ub3QgdXNlIEhXQ0lfS0VSTkVMX01PRFVMRVMgYXMgYXQgdGhhdCBwb2ludCB3ZSBkb24mIzM5O3QgaGF2ZSB0aGUgbW9kdWxlIGluIC9saWJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWw9NDY5PXZpcnRpb19ncHU6bm9uZTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWwtNDc2LVxuZHJpdmVycy9ncHUvZHJtL2NpL3Rlc3QueW1sOjQ3Nzp2a21zOm5vbmU6XG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWwtNDc4LSAgZXh0ZW5kczpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWwtNDgwLSAgdmFyaWFibGVzOlxuZHJpdmVycy9ncHUvZHJtL2NpL3Rlc3QueW1sOjQ4MTogICAgRFJJVkVSX05BTUU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS90ZXN0LnltbC00ODItICAgIEdQVV9WRVJTSU9OOiBub25lXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDoxOiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0yLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTY9a21zX2N1cnNvcl9sZWdhY3lAbG9uZy1ub25ibG9ja2luZy1tb2Rlc2V0LXZzLWN1cnNvci1hdG9taWNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNy1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6ODojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtOS0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD0xMz1rbXNfZmxpcEBiYXNpYy1mbGlwLXZzLXdmX3ZibGFua1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xNC1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MTU6IyBCb2FyZCBOYW1lOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTE2LSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTIwPWttc19mbGlwQGZsaXAtdnMtZXhwaXJlZC12YmxhbmstaW50ZXJydXB0aWJsZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0yMS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MjI6IyBCb2FyZCBOYW1lOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTIzLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTI3PWttc19mbGlwQGZsaXAtdnMtd2ZfdmJsYW5rLWludGVycnVwdGlibGVcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMjgtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjI5OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0zMC0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD0zND1rbXNfZmxpcEBwbGFpbi1mbGlwLWZiLXJlY3JlYXRlLWludGVycnVwdGlibGVcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMzUtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjM2OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0zNy0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD00MT1rbXNfZmxpcEBwbGFpbi1mbGlwLXRzLWNoZWNrXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTQyLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo0MzojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNDQtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9NDg9a21zX2ZsaXBAcGxhaW4tZmxpcC10cy1jaGVjay1pbnRlcnJ1cHRpYmxlXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTQ5LVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo1MDojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNTEtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9NTU9a21zX2ZsaXBAZmxpcC12cy1hYnNvbHV0ZS13Zl92YmxhbmtcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNTYtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjU3OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC01OC0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD02Mj1rbXNfZmxpcEBmbGlwLXZzLWFic29sdXRlLXdmX3ZibGFuay1pbnRlcnJ1cHRpYmxlXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTYzLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo2NDojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNjUtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9Njk9a21zX2ZsaXBAZmxpcC12cy1ibG9ja2luZy13Zi12YmxhbmtcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNzAtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjcxOiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC03Mi0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD03Nj1rbXNfY3Vyc29yX2xlZ2FjeUBmbGlwLXZzLWN1cnNvci12YXJ5aW5nLXNpemVcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNzctXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojc4OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC03OS0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD04Mz1rbXNfZmxpcEBmbGlwLXZzLWV4cGlyZWQtdmJsYW5rXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTg0LVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo4NTojIEJvYXJkIE5hbWU6IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtODYtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9OTA9a21zX3BpcGVfY3JjX2Jhc2ljQG5vbmJsb2NraW5nLWNyYy1mcmFtZS1zZXF1ZW5jZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC05MS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6OTI6IyBCb2FyZCBOYW1lOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTkzLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzIzNjRhNmJmLWU2YmMtNDc0MS04Yzc4LWNlYThiZGIwNmUwM0Bjb2xsYWJvcmEuY29tL1QvI3Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTk3PWttc19mbGlwQG1vZGVzZXQtdnMtdmJsYW5rLXJhY2VcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtOTgtXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojk5OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMDAtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvZjdkNzJlZDktYTc4My00NmQ3LWI3NWQtNTQwNzJiZGEzMmEzQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MTA0PWttc19waXBlX2NyY19iYXNpY0BzdXNwZW5kLXJlYWQtY3JjXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTEwNS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MTA2OiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMDctIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvOThkM2JhNTQtYmNiOS00MWFiLWFkYjEtYTE4YmE2MWVlMmU0QGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MTExPWttc19wbGFuZUBwbGFuZS1wYW5uaW5nLWJvdHRvbS1yaWdodC1zdXNwZW5kXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTExMi1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MTEzOiMgQm9hcmQgTmFtZTogdmttc1xuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMTQtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvYjU4ZDE1ZWItMDk0ZC00YWMyLWFhZDMtODNlNTE4YzJmNTVkQGNvbGxhYm9yYS5jb20vVC8jdVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxOiMga2VlcHMgcHJpbnRpbmcgdmttc192Ymxhbmtfc2ltdWxhdGU6IHZibGFuayB0aW1lciBvdmVycnVuIGFuZCBuZXZlciBlbmRzXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMi1rbXNfaW52YWxpZF9tb2RlQGludC1tYXgtY2xvY2tcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ9Nj1rbXNfY3Vyc29yX2NyYy4qXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEwLSMgSGFyZHdhcmUgbmFtZTogQ2hyb21pdW1PUyBjcm9zdm0sIEJJT1MgMFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjExOiMgV29ya3F1ZXVlOiB2a21zX2NvbXBvc2VyIHZrbXNfY29tcG9zZXJfd29ya2VyIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjEyOiMgUklQOiAwMDEwOmNvbXBvc2VfYWN0aXZlX3BsYW5lcyYjNDM7MHgxYzcvMHg0ZTAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTMtIyBDb2RlOiBjOSAwZiA4NCA2YSAwMSAwMCAwMCA4YiA0MiAzMCAyYiA0MiAyOCA0MSAzOSBjNSAwZiA4YyA2ZiAwMSAwMCAwMCA0OSA4MyBjNyAwMSA0OSAzOSBkZiA3NCAzYiA0YiA4YiAzNCBmYyA0OCA4YiA5NiA0OCAwMSAwMCAwMCBcdTAwM2M4Ylx1MDAzZSA0MiA3OCA4OSBjMSAuLi5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMjgtIyAgPyBhc21fZXhjX3BhZ2VfZmF1bHQmIzQzOzB4MjYvMHgzMFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjI5OiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDFjNy8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDozMDojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcyYjNDM7MHgyYTMvMHg0ZTAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMzEtIyAgPyBzcnNvX3JldHVybl90aHVuayYjNDM7MHg1LzB4NWZcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDozMjojICB2a21zX2NvbXBvc2VyX3dvcmtlciYjNDM7MHgyMDUvMHgyNDAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMzMtIyAgcHJvY2Vzc19vbmVfd29yayYjNDM7MHgxZjQvMHg2YjBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNDItIyAgXHUwMDNjL1RBU0tcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDo0MzojIE1vZHVsZXMgbGlua2VkIGluOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNDQtIyBDUjI6IDAwMDAwMDAwMDAwMDAwNzhcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC00NS0jIC0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjQ2OiMgUklQOiAwMDEwOmNvbXBvc2VfYWN0aXZlX3BsYW5lcyYjNDM7MHgxYzcvMHg0ZTAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNDctIyBDb2RlOiBjOSAwZiA4NCA2YSAwMSAwMCAwMCA4YiA0MiAzMCAyYiA0MiAyOCA0MSAzOSBjNSAwZiA4YyA2ZiAwMSAwMCAwMCA0OSA4MyBjNyAwMSA0OSAzOSBkZiA3NCAzYiA0YiA4YiAzNCBmYyA0OCA4YiA5NiA0OCAwMSAwMCAwMCBcdTAwM2M4Ylx1MDAzZSA0MiA3OCA4OSBjMSAuLi5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNjEtIyBIYXJkd2FyZSBuYW1lOiBDaHJvbWl1bU9TIGNyb3N2bSwgQklPUyAwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6NjI6IyBXb3JrcXVldWU6IHZrbXNfY29tcG9zZXIgdmttc19jb21wb3Nlcl93b3JrZXIgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6NjM6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDFjNy8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC02NC0jIENvZGU6IGM5IDBmIDg0IDZhIDAxIDAwIDAwIDhiIDQyIDMwIDJiIDQyIDI4IDQxIDM5IGM1IDBmIDhjIDZmIDAxIDAwIDAwIDQ5IDgzIGM3IDAxIDQ5IDM5IGRmIDc0IDNiIDRiIDhiIDM0IGZjIDQ4IDhiIDk2IDQ4IDAxIDAwIDAwIFx1MDAzYzhiXHUwMDNlIDQyIDc4IDg5IGMxIC4uLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC03OS0jICA/IGFzbV9leGNfcGFnZV9mYXVsdCYjNDM7MHgyNi8weDMwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6ODA6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MWM3LzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjgxOiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDJhMy8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC04Mi0jICA/IHNyc29fcmV0dXJuX3RodW5rJiM0MzsweDUvMHg1ZlxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjgzOiMgIHZrbXNfY29tcG9zZXJfd29ya2VyJiM0MzsweDIwNS8weDI0MCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC04NC0jICBwcm9jZXNzX29uZV93b3JrJiM0MzsweDFmNC8weDZiMFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05My0jICBcdTAwM2MvVEFTS1x1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0Ojk0OiMgTW9kdWxlcyBsaW5rZWQgaW46IHZrbXNcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05NS0jIENSMjogMDAwMDAwMDAwMDAwMDA3OFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTk2LSMgLS0tWyBlbmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAwMCBdLS0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6OTc6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDFjNy8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05OC0jIENvZGU6IGM5IDBmIDg0IDZhIDAxIDAwIDAwIDhiIDQyIDMwIDJiIDQyIDI4IDQxIDM5IGM1IDBmIDhjIDZmIDAxIDAwIDAwIDQ5IDgzIGM3IDAxIDQ5IDM5IGRmIDc0IDNiIDRiIDhiIDM0IGZjIDQ4IDhiIDk2IDQ4IDAxIDAwIDAwIFx1MDAzYzhiXHUwMDNlIDQyIDc4IDg5IGMxIC4uLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xMTItIyBIYXJkd2FyZSBuYW1lOiBDaHJvbWl1bU9TIGNyb3N2bSwgQklPUyAwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTEzOiMgV29ya3F1ZXVlOiB2a21zX2NvbXBvc2VyIHZrbXNfY29tcG9zZXJfd29ya2VyIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjExNDojIFJJUDogMDAxMDpjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MzQ0LzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTExNS0jIENvZGU6IDZhIDM0IDBmIDhlIDkxIGZlIGZmIGZmIDQ0IDg5IGVhIDQ4IDhkIDdjIDI0IDQ4IGU4IDcxIGYwIGZmIGZmIDRiIDhiIDA0IGZjIDQ4IDhiIDRjIDI0IDUwIDQ4IDhiIDdjIDI0IDQwIDQ4IDhiIDgwIDQ4IDAxIDAwIDAwIFx1MDAzYzQ4XHUwMDNlIDYzIDcwIDE4IDhiLi4uXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEzMC0jICA/IGFzbV9leGNfcGFnZV9mYXVsdCYjNDM7MHgyNi8weDMwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTMxOiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDM0NC8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxMzI6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MzJmLzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEzMy0jICA/IHNyc29fcmV0dXJuX3RodW5rJiM0MzsweDUvMHg1ZlxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjEzNDojICB2a21zX2NvbXBvc2VyX3dvcmtlciYjNDM7MHgyMDUvMHgyNDAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTM1LSMgIHByb2Nlc3Nfb25lX3dvcmsmIzQzOzB4MjAxLzB4NmMwXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE0NC0jICBcdTAwM2MvVEFTS1x1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE0NTojIE1vZHVsZXMgbGlua2VkIGluOiB2a21zXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ2LSMgQ1IyOiAwMDAwMDAwMDAwMDAwMDE4XG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ3LSMgLS0tWyBlbmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAwMCBdLS0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTQ4OiMgUklQOiAwMDEwOmNvbXBvc2VfYWN0aXZlX3BsYW5lcyYjNDM7MHgzNDQvMHg0ZTAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ5LSMgQ29kZTogNmEgMzQgMGYgOGUgOTEgZmUgZmYgZmYgNDQgODkgZWEgNDggOGQgN2MgMjQgNDggZTggNzEgZjAgZmYgZmYgNGIgOGIgMDQgZmMgNDggOGIgNGMgMjQgNTAgNDggOGIgN2MgMjQgNDAgNDggOGIgODAgNDggMDEgMDAgMDAgXHUwMDNjNDhcdTAwM2UgNjMgNzAgMTggOGIuLi5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ9MTYwPWttc19jdXJzb3JfZWRnZV93YWxrQDEyOHgxMjgtcmlnaHQtZWRnZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xNjMtIyBIYXJkd2FyZSBuYW1lOiBDaHJvbWl1bU9TIGNyb3N2bSwgQklPUyAwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTY0OiMgV29ya3F1ZXVlOiB2a21zX2NvbXBvc2VyIHZrbXNfY29tcG9zZXJfd29ya2VyIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE2NTojIFJJUDogMDAxMDpjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MzQ0LzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE2Ni0jIENvZGU6IDZhIDM0IDBmIDhlIDkxIGZlIGZmIGZmIDQ0IDg5IGVhIDQ4IDhkIDdjIDI0IDQ4IGU4IDcxIGYwIGZmIGZmIDRiIDhiIDA0IGZjIDQ4IDhiIDRjIDI0IDUwIDQ4IDhiIDdjIDI0IDQwIDQ4IDhiIDgwIDQ4IDAxIDAwIDAwIFx1MDAzYzQ4XHUwMDNlIDYzIDcwIDE4IDhiLi4uXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE4My0jICA/IGFzbV9leGNfcGFnZV9mYXVsdCYjNDM7MHgyNi8weDMwXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTg0OiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzJiM0MzsweDM0NC8weDRlMCBbdmttc11cbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxODU6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMmIzQzOzB4MzJmLzB4NGUwIFt2a21zXVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE4Ni0jICA/IHNyc29fcmV0dXJuX3RodW5rJiM0MzsweDUvMHg1ZlxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE4NzojICB2a21zX2NvbXBvc2VyX3dvcmtlciYjNDM7MHgyMDUvMHgyNDAgW3ZrbXNdXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTg4LSMgIHByb2Nlc3Nfb25lX3dvcmsmIzQzOzB4MjAxLzB4NmMwXG4tLVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE5Ny0jICBcdTAwM2MvVEFTS1x1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE5ODojIE1vZHVsZXMgbGlua2VkIGluOiB2a21zXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4ODcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIFZLTVMgRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCByZWFsbHkgdW5kZXJzdGFuZCB3aGF0IHRoZSBWaXJ0dWFsIEtNUyBkcml2ZXIsIGB2a21zX2Rydi5jYCwgYnJpbmdzIHRvIHRoZSB0YWJsZS4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgY2FwYWJpbGl0aWVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgb2YgY2hlY2tpbmcgb3V0IGBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jYCB0byBkbyBhIGRlZXAgZGl2ZSBhbmQgZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGUgZHJpdmVyJiMzOTtzIGZlYXR1cmUgc2V0LiBUaGlzIHdpbGwgaGVscCBpbmZvcm0gYSBiZXR0ZXIgYXJjaGl0ZWN0dXJhbCBwbGFuLiBTbywgSeKAmW0gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoaXMgdGhpbmcgKmFjdHVhbGx5KiBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkcml2ZXJfZmVhdHVyZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmttcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYz05Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgdmttc19kcml2ZXIgPSB7XG5kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jOjk0Olx0LmRyaXZlcl9mZWF0dXJlc1x0PSBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9BVE9NSUMgfCBEUklWRVJfR0VNLFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYy05NS1cdC5mb3BzXHRcdFx0PSBcdTAwMjZ2a21zX2RyaXZlcl9mb3BzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIyMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRGlnZ2luZyBpbnRvIFN5bmNocm9uaXphdGlvbiBPYmplY3RzKioKCkFscmlnaHQsIHNvIGB2a21zYCBpcyBnaXZpbmcgbWUgc29tZSB0cm91YmxlIHdpdGggYERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FYC4gVGhhdCYjMzk7cyBhIGJpdCB1bmV4cGVjdGVkLiBCdXQsIGhvbGQgb24gYSBtaW51dGUsIEkgc2VlbSB0byByZWNhbGwgdGhhdCBgdmlydGlvX2dwdWAgbWlnaHQgc3VwcG9ydCBpdC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQuIEhtbSwgbGV0IG1lIGp1c3Qgb3BlbiB0aGUgc291cmNlIHRyZWUuLi4KCk9rYXksIG5vdywgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYHZnZW1gIGp1c3QgaW4gY2FzZSBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmNgIGFuZCBzZWUgaWYgdGhlIHRpbWVsaW5lIHN1cHBvcnQgaXMgaW4gdGhlcmUsIG9yIGlmIEkgc2hvdWxkIGV2ZW4gZXhwZWN0IGl0IHRvIGJlLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2gsIEkgc3VwcG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJpdmVyX2ZlYXR1cmVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZnZW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmM9MTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciB2Z2VtX2RyaXZlciA9IHtcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmM6MTExOlx0LmRyaXZlcl9mZWF0dXJlc1x0XHQ9IERSSVZFUl9HRU0gfCBEUklWRVJfUkVOREVSLFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYy0xMTItXHQub3Blblx0XHRcdFx0PSB2Z2VtX29wZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNTk5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZpcnRpby1HUFUgYW5kIFN5bmNvYmo6IEEgU3l6a2FsbGVyIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB2aXJ0aW8tZ3B1LCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBpdHMgZHJpdmVyIGltcGxlbWVudGF0aW9uIChgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jYCkuIEl0JiMzOTtzIGEgc3RhbmRhcmQgdmlydGlvIGhhcmR3YXJlIGNvbXBvbmVudCB0aGF0JiMzOTtzIHdlbGwtc3VwcG9ydGVkIGluIFFFTVUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHNlZSBpdCYjMzk7cyBhIG1vZGVzZXR0aW5nIGRyaXZlciwgc3VwcG9ydHMgR0VNLCByZW5kZXJpbmcsIGF0b21pYyBvcGVyYXRpb25zLCBzeW5jIG9iamVjdHMsIHRpbWVsaW5lcyBhbmQgZXZlbiBjdXJzb3IgaG90IHNwb3RzLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBldmVudGZkYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBjb3JlIGZpbGVzeXN0ZW0gKGBmcy9ldmVudGZkLmNgKSwgd2l0aCBmdW5jdGlvbnMgbGlrZSBgZXZlbnRmZF9jdHhfcHV0YCBsaXZpbmcgdGhlcmUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBkb2VzIHN5emthbGxlciwgbXkgZ28tdG8gZnV6emluZyB0b29sLCBoYXZlIERSTSBpb2N0bHMgZW5hYmxlZD8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IHN1cHBvcnQgYERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkRgPwoKQSBxdWljayBjaGVjayBjb25maXJtcyBpdCEgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGRlc2NyaXB0aW9ucyBmb3IgYGRybV9zeW5jb2JqX2V2ZW50ZmRgIGluIGl0cyBgc3lzL2xpbnV4L2RybS50eHRgIGZpbGUuIFBlcmZlY3QhIEl0IGV2ZW4gaGFzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbjogYGlvY3RsJERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkQoZmQgZmRfZHJtLCBjbWQgY29uc3RbRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRF0sIGFyZyBwdHJbaW4sIGRybV9zeW5jb2JqX2V2ZW50ZmRdKWAuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIFdoYXQgY29uZmlndXJhdGlvbnMgYWN0dWFsbHkgZW5hYmxlIGBkcm1fc3luY29iai5jYD8gR290dGEgZGlnIHRocm91Z2ggdGhlIEtjb25maWcgZmlsZXMuIFRpbWUgdG8gZ3JlcCBmb3IgYGRybV9zeW5jb2JqLm9gIGluIHRoZSBgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlYCB0byBmaW5kIG91dC4gVGhpcyBpcyBhbGwgdmVyeSBwcm9taXNpbmcgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9zeW5jb2JqXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MzU9ZHJtLXkgOj0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNjgtXHRkcm1fcmVjdC5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6Njk6XHRkcm1fc3luY29iai5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNzAtXHRkcm1fc3lzZnMubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM5MwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgSW5xdWlyeTogRFJNIFN5bmMgT2JqZWN0cyBhbmQgRXZlbnRGRCoqCgpPa2F5LCBzbyBgZHJtX3N5bmNvYmoub2AgaXMgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIgKERSTSkgZWNvc3lzdGVtIOKAkyBidWlsdCBpbiB3aGVuZXZlciBgQ09ORklHX0RSTWAgaXMgdHVybmVkIG9uLCB3aGljaCBpcyBnb29kIHRvIHJlbWVtYmVyIGZvciBmdXR1cmUgZGVidWdnaW5nLiBJdCYjMzk7cyBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5LCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBrZXkuIEFuZCwgdG8gYmUgc3BlY2lmaWMsIGB2aXJ0aW8tZ3B1YCYjMzk7cyBpbmNsdXNpb24gaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0RSTV9WSVJUSU9fR1BVYCwgc28gSSYjMzk7bGwga2VlcCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluIG1pbmQuCgpOb3csIG15IGN1cnJlbnQgZm9jdXMgaXMgb24gYGZzL2V2ZW50ZmQuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgaXMgYW4gb3ZlcmxhcCBpbiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBmcy9NYWtlZmlsZWAgdG8gc2VlIGhvdyBgZXZlbnRmZC5vYCBpcyBoYW5kbGVkIGF0IGJ1aWxkIHRpbWUuIEEgcXVpY2sgZ3JlcCBzaG91bGQgcmV2ZWFsIGFueSByZWxldmFudCBydWxlcyBvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlc2Ugb3RoZXIgRFJNIGNvbXBvbmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2ZW50ZmRcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvTWFrZWZpbGU9Mjg9b2JqLSQoQ09ORklHX1RJTUVSRkQpXHRcdCYjNDM7PSB0aW1lcmZkLm9cbmZzL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19FVkVOVEZEKVx0XHQmIzQzOz0gZXZlbnRmZC5vXG5mcy9NYWtlZmlsZS0zMC1vYmotJChDT05GSUdfQUlPKSAgICAgICAgICAgICAgICYjNDM7PSBhaW8ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTc2OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIFZpcnR1YWxpemVkIEdyYXBoaWNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBncmFwaGljcyBhbmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGV2ZW50ZmQgYW5kIERSTSBhcmUgaW50ZWdyYXRlZCwgZ2l2ZW4gdGhlaXIgaW1wb3J0YW5jZSBpbiBtb2Rlcm4gZ3JhcGhpY3Mgc3RhY2tzLiBJIHdhbnQgdG8gZGVsdmUgaW50byB0aGlzIGludGVyYWN0aW9uIGZ1cnRoZXIuCgpJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgYENPTkZJR19EUk1fVklSVElPX0dQVWAgb3B0aW9uLiBUaGlzIHNlZW1zIGxpa2UgdGhlIGtleSB0byB2aXJ0dWFsaXplZCBncmFwaGljcyB0aHJvdWdoIHRoZSB2aXJ0aW8gaW50ZXJmYWNlLiBUbyB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMsIEkmIzM5O2xsIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIEtjb25maWcgZmlsZSBub3cuIFRoaXMgd2lsbCBsaWtlbHkgc2hvdyBtZSB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgYENPTkZJR19EUk1fVklSVElPX0dQVWAsIHdoaWNoIGZlYXR1cmVzIGNhbiBiZSBlbmFibGVkLCBhbmQgaG93IGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHZpcnRpby1iYXNlZCB2aXJ0dWFsaXplZCBHUFVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBEUk1fVklSVElPX0dQVVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydGlvIEdQVSBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBWSVJUSU9fTUVOVSBcdTAwMjZcdTAwMjYgTU1VXG4gICA1Olx0XHRzZWxlY3QgVklSVElPXG4gICA2Olx0XHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbiAgIDc6XHRcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuICAgODpcdFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG4gICA5Olx0XHRzZWxlY3QgVklSVElPX0RNQV9TSEFSRURfQlVGRkVSXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgICBUaGlzIGlzIHRoZSB2aXJ0dWFsIEdQVSBkcml2ZXIgZm9yIHZpcnRpby4gIEl0IGNhbiBiZSB1c2VkIHdpdGhcbiAgMTI6XHRcdCAgIFFFTVUgYmFzZWQgVk1NcyAobGlrZSBLVk0gb3IgWGVuKS5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgIElmIHVuc3VyZSBzYXkgTS5cbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgRFJNX1ZJUlRJT19HUFVfS01TXG4gIDE3Olx0XHRib29sIFwmIzM0O1ZpcnRpbyBHUFUgZHJpdmVyIG1vZGVzZXR0aW5nIHN1cHBvcnRcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gRFJNX1ZJUlRJT19HUFVcbiAgMTk6XHRcdGRlZmF1bHQgeVxuICAyMDpcdFx0aGVscFxuICAyMTpcdFx0ICAgRW5hYmxlIG1vZGVzZXR0aW5nIHN1cHBvcnQgZm9yIHZpcnRpbyBHUFUgZHJpdmVyLiAgVGhpcyBjYW4gYmVcbiAgMjI6XHRcdCAgIGRpc2FibGVkIGluIGNhc2VzIHdoZXJlIG9ubHkgXCYjMzQ7aGVhZGxlc3NcJiMzNDsgdXNhZ2Ugb2YgdGhlIEdQVSBpc1xuICAyMzpcdFx0ICAgcmVxdWlyZWQuXG4gIDI0Olx0XG4gIDI1Olx0XHQgICBJZiB1bnN1cmUsIHNheSBZLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjQxMAoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGYsIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEVWRU5URkQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBDT05GSUdfRVZFTlRGRGAgc2l0dWF0aW9uLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGNvbmZpcm0gd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCBhbmQgd2hhdCBjb250ZXh0IGl0JiMzOTtzIGluLiBMZXQmIzM5O3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIG9idmlvdXMgbG9jYXRpb246IHRoZSBgZnMvS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gdGhlIG5hbWUsIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgaXQmIzM5O3MgYSBmaWxlc3lzdGVtLXJlbGF0ZWQgZmVhdHVyZS4gTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBjb3ZlciBhbGwgYmFzZXMgaW4gdGhlIGluaXRpYWwgc2NvcGluZywgSSYjMzk7bGwgcXVpY2tseSBncmVwIGFjcm9zcyBgaW5pdC9LY29uZmlnYCB0b28sIGp1c3QgaW4gY2FzZSBpdCYjMzk7cyBkZWNsYXJlZCB0aGVyZS4gR3JhYmJpbmcgYSBzaW1wbGUgc2VhcmNoIHRlcm0gbGlrZSBgY29uZmlnIEVWRU5URkRgIHNob3VsZCB5aWVsZCB0aGUgcHJlY2lzZSBkZWZpbml0aW9uIGluIGVpdGhlciBmaWxlLiBJJiMzOTttIGFpbWluZyBmb3IgYSBxdWljayBhbmQgdGFyZ2V0ZWQgc2NhbiB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVWRU5URkQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTE5MjM9Y29uZmlnIFRJTUVSRkRcbi0tXG5pbml0L0tjb25maWctMTkzMS1cbmluaXQvS2NvbmZpZzoxOTMyOmNvbmZpZyBFVkVOVEZEXG5pbml0L0tjb25maWctMTkzMy1cdGJvb2wgXCYjMzQ7RW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFwmIzM0OyBpZiBFWFBFUlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MzAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczoKCioqS2NvbmZpZyBEaXZlOiBJbnZlc3RpZ2F0aW5nIGEgU3BlY2lmaWMgWWVhcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCAmIzM0O1doZXJlIHNob3VsZCBJIHN0YXJ0IGxvb2tpbmcgdG8gdW5kZXJzdGFuZCBvciBhZGRyZXNzIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSB5ZWFyIDE5MzIgd2l0aGluIHRoaXMgY29udGV4dD8mIzM0OyBNeSBndXQgcmVhY3Rpb24gaXMgdG8gY2hlY2sgdGhlIGBpbml0L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZ28tdG8gcGxhY2UgZm9yIGNvcmUgc3lzdGVtIGNvbmZpZ3VyYXRpb24gYW5kIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBidWlsZCBzeXN0ZW0uIExldCYjMzk7cyBzZWUgaWYgMTkzMiBpcyBkZWZpbmVkIHRoZXJlLCBvciBpZiB0aGVyZSYjMzk7cyBhbnkgaW5kaWNhdGlvbiBvZiBpdHMgcmVsZXZhbmNlIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIGZpcnN0IHN0ZXAgd2hlbiBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTkzMDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuMTkzMTpcdFxuMTkzMjpcdGNvbmZpZyBFVkVOVEZEXG4xOTMzOlx0XHRib29sIFwmIzM0O0VuYWJsZSBldmVudGZkKCkgc3lzdGVtIGNhbGxcJiMzNDsgaWYgRVhQRVJUXG4xOTM0Olx0XHRkZWZhdWx0IHlcbjE5MzU6XHRcdGhlbHBcbjE5MzY6XHRcdCAgRW5hYmxlIHRoZSBldmVudGZkKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gcmVjZWl2ZSBib3RoXG4xOTM3Olx0XHQgIGtlcm5lbCBub3RpZmljYXRpb24gKGllLiBLQUlPKSBvciB1c2Vyc3BhY2Ugbm90aWZpY2F0aW9ucy5cbjE5Mzg6XHRcbjE5Mzk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbjE5NDA6XHRcbjE5NDE6XHRjb25maWcgU0hNRU1cbjE5NDI6XHRcdGJvb2wgXCYjMzQ7VXNlIGZ1bGwgc2htZW0gZmlsZXN5c3RlbVwmIzM0OyBpZiBFWFBFUlRcbjE5NDM6XHRcdGRlZmF1bHQgeVxuMTk0NDpcdFx0ZGVwZW5kcyBvbiBNTVVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxMTcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZ1bmN0aW9uIENhbGwgU2NvcGUgZm9yIEZ1enppbmcgUHJpb3JpdGl6YXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBldmVudGZkcyAoYENPTkZJR19FVkVOVEZEYCksIERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlciAoYENPTkZJR19EUk1gKSwgYW5kIHNwZWNpZmljYWxseSB0aGUgVmlydElPIEdQVSBpbiBEUk0gKGBDT05GSUdfRFJNX1ZJUlRJT19HUFVgKS4gVGhlIHRhc2sgaXMgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBjaGFuZ2VzLiBJIHNlZSB0d28gZnVuY3Rpb25zIHdlcmUgbW9kaWZpZWQ6IGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBpbiBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YCBpbiBgZnMvZXZlbnRmZC5jYC4KCk5vdywgdGhlIHJlZCBmbGFnIGdvZXMgdXAuIFRoZSBkb2N1bWVudGF0aW9uIHdhcm5zIGFnYWluc3QgbGlzdGluZyAmIzM0O3ViaXF1aXRvdXMgbGlmZWN5Y2xlIGhvdC1wYXRocy4mIzM0OyBJIGhhdmUgdG8gYXNrIG15c2VsZjogSXMgYGV2ZW50ZmRfY3R4X3B1dGAgdWJpcXVpdG91cz8gSXQmIzM5O3MgY2FsbGVkIHdoZW4gYW4gZXZlbnRmZCBjb250ZXh0IGlzIGNsb3NlZCBvciByZWxlYXNlZCwgc28gbm8sIGl0JiMzOTtzIHByZXR0eSBzcGVjaWZpYy4gSXQmIzM5O3Mgbm90IG1lbW9yeSBhbGxvY2F0aW9uLCBhIHBhZ2UgZmF1bHQgaGFuZGxlciwgb3IgY29yZSBzeW5jaHJvbml6YXRpb24uCgpCdXQsIGFuZCB0aGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCwgY291bGQgaXQgYmUgY2FsbGVkIGJ5ICphbG1vc3QgZXZlcnkgcHJvZ3JhbSogaW4gdGhlIGNvcnB1cz8gTm8sIGl0JiMzOTtzIG9ubHkgcHJvZ3JhbXMgdGhhdCB1c2UgZXZlbnRmZCwgc3VjaCBhcyBLVk0sIGlvX3VyaW5nIGV2ZW50ZmQsIHZob3N0LCBEUk0gc3luY29iaiBldmVudGZkLCBldGMuIFNvIHdlJiMzOTtyZSBpbiB0aGUgY2xlYXIgdGhlcmUuCgpXaGF0IGFib3V0IGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYD8gSXQmIzM5O3MgdGhlIGV4YWN0IGVudHJ5cG9pbnQgZnVuY3Rpb24gdGhhdCYjMzk7cyBiZWVuIG1vZGlmaWVkISBQZXJmZWN0LCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSB0YXJnZXQuCgpDYW4gSSBpbmNsdWRlIGBldmVudGZkX2N0eF9wdXRgIGFzIHdlbGw/IExldCYjMzk7cyBjaGVjayB0aGUgZ3VpZGFuY2U6ICYjMzQ7TGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LiYjMzQ7IEJpbmdvLCB0aGUgcGF0Y2ggbW9kaWZpZXMgKmJvdGgqIGBldmVudGZkX2N0eF9wdXRgIGFuZCBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAuIFNvLCB0aGV5IGJvdGggZml0IHRoZSBkZXNjcmlwdGlvbi4KClRoZXNlIGFyZW4mIzM5O3Qgc3RhdGljIGZ1bmN0aW9ucywgdGhleSB3ZXJlIG1vZGlmaWVkLCBhbmQgbm90IHViaXF1aXRvdXMuIExldCYjMzk7cyBtYWtlIHN1cmUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGlzIG5vbi1zdGF0aWM6IEkgY2FuIHNlZSBpdCYjMzk7cyBleHBvc2VkIHZpYSBgZHJtX2lvY3Rsc2AgYW5kIGBldmVudGZkX2N0eF9wdXRgIGlzIGBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpYC4gR29vZC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgaGF2ZSB0byBjaGVjayBmb3Igb3RoZXIgY2hhbmdlZCBmdW5jdGlvbnMuIEkgc2VlIGBERUZJTkVfRlJFRWAgaW4gYGluY2x1ZGUvbGludXgvZXZlbnRmZC5oYCB3aXRoIGBldmVudGZkX2N0eF9wdXRgLiBUaGlzIGlzIGRlZmluaW5nIGEgY2xlYW51cCBmdW5jdGlvbiBzdWNoIGFzIGBmcmVlX2V2ZW50ZmRgIG9yIGBjbGFzc19ldmVudGZkX2Rlc3RydWN0b3JgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBgREVGSU5FX0ZSRUVgIGlzIHVzZWQuIEkmIzM5O2xsIGNoZWNrIGBpbmNsdWRlL2xpbnV4L2NsZWFudXAuaGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgREVGSU5FX0ZSRUUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL3hmc190cmFjZS5oPTMxMTU9REVDTEFSRV9FVkVOVF9DTEFTUyh4ZnNfZnJlZV9leHRlbnRfZGVmZXJyZWRfY2xhc3MsXG4tLVxuZnMveGZzL3hmc190cmFjZS5oLTMxNDItKTtcbmZzL3hmcy94ZnNfdHJhY2UuaDozMTQzOiNkZWZpbmUgREVGSU5FX0ZSRUVfRVhURU5UX0RFRkVSUkVEX0VWRU5UKG5hbWUpIFxcXG5mcy94ZnMveGZzX3RyYWNlLmgtMzE0NC1ERUZJTkVfRVZFTlQoeGZzX2ZyZWVfZXh0ZW50X2RlZmVycmVkX2NsYXNzLCBuYW1lLCBcXFxuLS1cbmZzL3hmcy94ZnNfdHJhY2UuaD01ODk3PURFQ0xBUkVfRVZFTlRfQ0xBU1MoeGZzX2ZyZWVibG9ja3NfcmVzdl9jbGFzcyxcbi0tXG5mcy94ZnMveGZzX3RyYWNlLmgtNTkyNC0pXG5mcy94ZnMveGZzX3RyYWNlLmg6NTkyNTojZGVmaW5lIERFRklORV9GUkVFQkxPQ0tTX1JFU1ZfRVZFTlQobmFtZSkgXFxcbmZzL3hmcy94ZnNfdHJhY2UuaC01OTI2LURFRklORV9FVkVOVCh4ZnNfZnJlZWJsb2Nrc19yZXN2X2NsYXNzLCBuYW1lLCBcXFxuLS1cbmluY2x1ZGUvbGludXgvY2xlYW51cC5oLTIwOS1cbmluY2x1ZGUvbGludXgvY2xlYW51cC5oOjIxMDojZGVmaW5lIERFRklORV9GUkVFKF9uYW1lLCBfdHlwZSwgX2ZyZWUpIFxcXG5pbmNsdWRlL2xpbnV4L2NsZWFudXAuaC0yMTEtXHRzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgX19mcmVlXyMjX25hbWUodm9pZCAqcCkgeyBfdHlwZSBfVCA9ICooX3R5cGUgKilwOyBfZnJlZTsgfVxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RtYS5oPTIwNj1ERUNMQVJFX0VWRU5UX0NMQVNTKGRtYV9mcmVlX2NsYXNzLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RtYS5oLTIzNy1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RtYS5oOjIzODojZGVmaW5lIERFRklORV9GUkVFX0VWRU5UKG5hbWUpIFxcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kbWEuaC0yMzktREVGSU5FX0VWRU5UKGRtYV9mcmVlX2NsYXNzLCBuYW1lLCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDkzMgoJCQkJCQkJb3V0cHV0OiAyMDcKCQkJCQkJCXRob3VnaHRzOiA4NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIGZ1enppbmcgcHVycG9zZXMuIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaW52b2x2ZXMgYERFRklORV9GUkVFYCwgd2hpY2ggZXhwYW5kcyB0byBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24sIG1lYW5pbmcgaXQmIzM5O3Mgbm90IGEgc3RhbmRhbG9uZSBzeW1ib2wgaW4gdm1saW51eC4gQ3J1Y2lhbGx5LCB0aGUgY2FsbGVyIGluIHRoaXMgc3BlY2lmaWMgaW5zdGFuY2UgaXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLgoKRmlyc3QsIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSwgZXhlY3V0YWJsZSBjb2RlLCBzbyB0aGF0IGlzIG91ciBjcml0ZXJpYS4gVGhlIHN0YXRlZCBnb2FscyBmb3IgcGF0Y2ggZnV6emluZyBhcmUgdG8gZmluZCBidWdzLCByZWdyZXNzaW9ucywgYW5kIHN1Y2guIFRoZSBwcmltYXJ5IGh1cmRsZSBpcyByZWFjaGFiaWxpdHkuIFRoaXMgY29kZSBpcyBpbmRlZWQgcmVhY2hhYmxlLiBXZSBzaG91bGQgbmV2ZXIgYmxpbmRseSB0cnVzdCBjbGFpbXMgb2YgJiMzNDtubyBmdW5jdGlvbmFsIGNoYW5nZSYjMzQ7IG9yIHJlZmFjdG9yaW5nOyBsZXQmIzM5O3MgZGlnIGRlZXBlci4KClRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSBpbiBgZnMvZXZlbnRmZC5jYCAoVkZTL3N5c2NhbGwgbGV2ZWwpIGFuZCBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgIChEUk0gc3luY29iaiBpb2N0bCkuICBUaGUgYGV2ZW50ZmRfY3R4X3B1dCgpYCBmdW5jdGlvbiBoYXMgYmVlbiBtb2RpZmllZCB0byBoYW5kbGUgYElTX0VSUl9PUl9OVUxMKGN0eClgLCB3aGljaCBjb3VsZCBleHBvc2UgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBlcnJvciBoYW5kbGluZyBpc3N1ZXMsIG9yIG1lbW9yeSBpc3N1ZXMgaW4gdGhlIGNhc2UgdGhlIGNsZWFudXAgaXNuJiMzOTt0IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgRFJNIHN5bmNvYmogaW9jdGwgaXMgcmVhY2hhYmxlIHZpYSBEUk0gZGV2aWNlcyBzdXBwb3J0aW5nIHN5bmNvYmogdGltZWxpbmVzLCBzcGVjaWZpY2FsbHkgdmlydGlvLWdwdSBpbiBRRU1VLiAgVGhpcyByZWZhY3RvcmluZyB1c2VzIGEgY2xlYW51cC5oIFJBSUksIHNwZWNpZmljYWxseSBgX19mcmVlKGV2ZW50ZmQpYC4gSXQmIzM5O3MgYSBjb21iaW5hdGlvbiBvZiBhIGNvcmUgc3Vic3lzdGVtIChldmVudGZkKSBhbmQgYSByZWFjaGFibGUgZHJpdmVyIGZyYW1ld29yayAoRFJNIHN5bmNvYmogLyB2aXJ0aW8tZ3B1KS4gU2luY2UgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgd2UgY29uc2lkZXIgaXQgdG8gYmUgd29ydGggZnV6emluZy4KCk5leHQsIHdlIGNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBXZSBuZWVkIGBFVkVOVEZEYCB0byBlbmFibGUgdGhlIGBmcy9ldmVudGZkLmNgIGNvZGUsIGBEUk1gIHRvIGVuYWJsZSB0aGUgRFJNIHN1YnN5c3RlbSwgYW5kIGBEUk1fVklSVElPX0dQVWAgd2hpY2ggYWxsb3dzIHRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24gdG8gYmUgZXhlcmNpc2VkIHRocm91Z2ggdmlydGlvLWdwdSBpbiBRRU1VLiBUaGVzZSBhcmUgYWxsIGJvb2xlYW4gY29uZmlncywgZGVmaW5lZCBhcHByb3ByaWF0ZWx5IGluIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBmaWxlcy4KClRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YC4gVGhlc2UgYXJlIHRoZSBvbmx5IHR3byBDIGZ1bmN0aW9ucyBkaXJlY3RseSB0b3VjaGVkIGJ5IHRoZSBjaGFuZ2VzLgoKVGhlcmVmb3JlLCB0aGUgcGFyYW1ldGVycyBmb3IgYHNldC1yZXN1bHRzYCBzaG91bGQgYmU6CgoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgWyYjMzQ7RFJNJiMzNDssICYjMzQ7RFJNX1ZJUlRJT19HUFUmIzM0OywgJiMzNDtFVkVOVEZEJiMzNDtdYAoqICAgYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDtkcm1fc3luY29ial9ldmVudGZkX2lvY3RsJiMzNDssICYjMzQ7ZXZlbnRmZF9jdHhfcHV0JiMzNDtdYAoqICAgYFJlYXNvbmluZ2A6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiBib3RoIGEgY29yZSBmaWxlc3lzdGVtIGNvbXBvbmVudCAoZXZlbnRmZCkgYW5kIGEgZHJpdmVyIGZyYW1ld29yayAoRFJNIHN5bmNvYmopLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgdmlydGlvLWdwdSBkcml2ZXIgd2l0aGluIFFFTVUuIFRoaXMgaXMgYSByZWZhY3RvcmluZywgaW50cm9kdWNpbmcgUkFJSSBjbGVhbnVwIHdoaWNoIGhhbmRsZXMgdGhlIGBfX2ZyZWVgIGxvZ2ljIHRvIHRoZSBldmVudGZkLCB3aGljaCBjb3VsZCBleHBvc2UgZXJyb3JzIGR1ZSB0byBpbmNvcnJlY3RseSBoYW5kbGVkIG51bGwgb3IgZXJyb3IgY29uZGl0aW9ucyBvciBtZW1vcnkgY29ycnVwdGlvbi4KKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWAKCkFscmlnaHQsIHRoYXQgY292ZXJzIGFsbCB0aGUgYmFzZXMuIEkgdGhpbmsgd2UmIzM5O3JlIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fVklSVElPX0dQVSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNJiMzNDssCiAgICAmIzM0O0RSTV9WSVJUSU9fR1BVJiMzNDssCiAgICAmIzM0O0VWRU5URkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcm1fc3luY29ial9ldmVudGZkX2lvY3RsJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfY3R4X3B1dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIGV2ZW50ZmRfY3R4X3B1dCgpIGluIGZzL2V2ZW50ZmQuYyB0byBzYWZlbHkgaGFuZGxlIElTX0VSUl9PUl9OVUxMIHBvaW50ZXJzIGFuZCBpbnRyb2R1Y2VzIHRoZSBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pIHNjb3BlZCBjbGVhbnVwIGhlbHBlciwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIHJlZmFjdG9yIHJlc291cmNlIHJlbGVhc2UgYW5kIGVycm9yIHBhdGhzIGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0YWJsZSBhbmQgZnVsbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2aXJ0aW8tZ3B1IGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzICh3aGljaCBzdXBwb3J0cyBEUklWRVJfU1lOQ09CSl9USU1FTElORSkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBjbGVhbnVwIGF0dHJpYnV0ZSBoYW5kbGluZyBhbmQgbmV3IE5VTEwvRVJSIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZmVyZW5jZSBsZWFrcywgZG91YmxlIHB1dHMsIG9yIG90aGVyIHJlZ3Jlc3Npb25zIHVuZGVyIGVycm9yIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT44bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxuXG5UaGVzZSBjaGFuZ2VzIGNvbmNlcm4gcG9pbnRlciBsaWZldGltZSBhbmQgcmVzb3VyY2UgZGVhbGxvY2F0aW9uLiBUaGUgbG9jYWwgcG9pbnRlciBgZXZfZmRfY3R4YCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBOVUxMYCwgYW5kIHRoZSBoZWFwIGFsbG9jYXRpb24gYGVudHJ5YCBjb250aW51ZXMgdG8gYmUgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iaigpYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgYnl0ZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIGFsdGVyZWQuIEFueSBwb3RlbnRpYWwgYnVncyB3b3VsZCByZWxhdGUgdG8gcmVmZXJlbmNlIGNvdW50aW5nLCByZXNvdXJjZSBsZWFrcywgb3IgcG9pbnRlciBjbGVhbnVwLCB3aGljaCBmYWxsIHVuZGVyIHN0YW5kYXJkIEtBU0FOL3JlZmNvdW50IHRyYWNraW5nIHJhdGhlciB0aGFuIEtNU0FOIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGRldGVjdGlvbi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM1ZGY0M2JlM2ViYzIxZGU0ODljNTU5OWNjYTgzYmZiYjRjZDg3OGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAxNDoyMzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKaW5kZXggYzIzYTVkZTI3ZWZmYS4uZWZjNGU4YWYyMjBjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKQEAgLTE0NjIsOSAmIzQzOzE0NjIsOSBAQCBpbnQKIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCiB7CiYjNDM7CXN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7CiAJc3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajsKLQlzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eDsKIAlzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTsKIAlpbnQgcmV0OwogCkBAIC0xNDkwLDEwICYjNDM7MTQ5MCwxMCBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpOwogCWlmICghZW50cnkpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBlcnJfa3phbGxvYzsKJiM0MzsJCWdvdG8gZXJyX2ZkZ2V0OwogCX0KIAllbnRyeS0mZ3Q7c3luY29iaiA9IHN5bmNvYmo7Ci0JZW50cnktJmd0O2V2X2ZkX2N0eCA9IGV2X2ZkX2N0eDsKJiM0MzsJZW50cnktJmd0O2V2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7CiAJZW50cnktJmd0O3BvaW50ID0gYXJncy0mZ3Q7cG9pbnQ7CiAJZW50cnktJmd0O2ZsYWdzID0gYXJncy0mZ3Q7ZmxhZ3M7CiAKQEAgLTE1MDIsOCAmIzQzOzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlyZXR1cm4gMDsKIAotZXJyX2t6YWxsb2M6Ci0JZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7CiBlcnJfZmRnZXQ6CiAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmMKaW5kZXggOWQzM2EwMjc1N2Q1Mi4uMWNkMTc0MWI4MWIxNyAxMDA2NDQKLS0tIGEvZnMvZXZlbnRmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuYwpAQCAtMTAyLDYgJiM0MzsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAgKi8KIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogewomIzQzOwlpZiAoSVNfRVJSX09SX05VTEwoY3R4KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlrcmVmX3B1dCgmYW1wO2N0eC0mZ3Q7a3JlZiwgZXZlbnRmZF9mcmVlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCmluZGV4IGUzMmJlZTQzNDVmYjkuLjY4OTM1OGMyYjBhZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2RlZmluZSBfTElOVVhfRVZFTlRGRF9ICiAKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NsZWFudXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUtZGVmcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwpAQCAtODksNSAmIzQzOzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogCWV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTsKIH0KIAomIzQzO0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKQomIzQzOwogI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDk5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIGNoYW5nZXMgdG8gYGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jYCwgYGZzL2V2ZW50ZmQuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBoYW5kbGluZyBldmVudCBmaWxlIGRlc2NyaXB0b3JzIGluIHRoZSBjb250ZXh0IG9mIERSTSBzeW5jIG9iamVjdHMuIEkmIzM5O2xsIG5lZWQgdG8gcGFyc2UgdGhlIGRpZmYgdG8gYXNjZXJ0YWluIHRoZSBzcGVjaWZpY3MuCgpGaXJzdCB0aGluZyBJIG5vdGljZSBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgYSBuZXcgbG9jYWwgdmFyaWFibGUgZGVjbGFyYXRpb246IGBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO2AuICBBaCwgdGhleSYjMzk7cmUgdXNpbmcgYSBjbGVhbnVwIGhhbmRsZXIsIGBfX2ZyZWUoZXZlbnRmZClgLiBUaGlzIGlzIGludGVyZXN0aW5nOyB0aGV5JiMzOTtyZSBhc3NvY2lhdGluZyB0aGUgYGV2ZW50ZmRfY3R4X3B1dGAgZnVuY3Rpb24gd2l0aCB0aGUgdmFyaWFibGUsIGFuZCB0aGUgY2xlYW51cCB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSB2YXJpYWJsZSBnb2VzIG91dCBvZiBzY29wZSwgb3Igd2hlbiBgbm9fZnJlZV9wdHIoKWAgaXMgY2FsbGVkIG9uIGl0LgoKUHJldmlvdXNseSwgYGV2X2ZkX2N0eGAgd2FzIGRlY2xhcmVkIGFuZCBpbml0aWFsaXplZCBzZXBhcmF0ZWx5LCBhbmQgdGhlIGZ1bmN0aW9uJiMzOTtzIGVycm9yIGhhbmRsaW5nIHVzZWQgYGV2ZW50ZmRfY3R4X3B1dGAgd2hlbiBhbiBlcnJvciBvY2N1cnJlZCwgbGlrZWx5IHRvIGZyZWUgdGhlIGV2ZW50ZmQgY29udGV4dC4gVGhpcyBwYXR0ZXJuIGlzIGZhaXJseSBjb21tb24sIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gTm93LCBpdCBzZWVtcyBsaWtlIHRoZSBjbGVhbnVwIGlzIGludGVncmF0ZWQsIG1ha2luZyB0aGUgY29kZSBtb3JlIHJvYnVzdCBhbmQgcG90ZW50aWFsbHkgc2ltcGxlci4KCkZ1cnRoZXIgZG93biwgdGhlIGNvZGUgbm93IHVzZXMgYG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eClgIHdoZW4gYXNzaWduaW5nIGl0IHRvIGBlbnRyeS0mZ3Q7ZXZfZmRfY3R4YC4gVGhpcyBpcyBjcnVjaWFsLiBJdCBwcmV2ZW50cyB0aGUgY2xlYW51cCBoYW5kbGVyIGZyb20gcnVubmluZyB3aGVuIGBlbnRyeS0mZ3Q7ZXZfZmRfY3R4YCBnb2VzIG91dCBvZiBzY29wZSwgYmVjYXVzZSB0aGUgZXZlbnRmZCBjb250ZXh0IGlzIG5vdyBtYW5hZ2VkIGVsc2V3aGVyZS4KClRoZSBjaGFuZ2UgaW4gYGZzL2V2ZW50ZmQuY2AgYWRkcyBhIGNoZWNrIHRvIGBldmVudGZkX2N0eF9wdXRgIGZvciBhIGBOVUxMYCBvciBgRVJSX1BUUmAgcG9pbnRlciwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgaXQgYWxsb3dzIGhhbmRsaW5nIG9mIGNhc2VzIHdoZXJlIHRoZSBjb250ZXh0IHdhc24mIzM5O3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4KCkZpbmFsbHksIHRoZSBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGNoYW5nZSBhZGRzIGEgYERFRklORV9GUkVFYCBtYWNybyBmb3IgYGV2ZW50ZmRgLCB3aGljaCBjbGVhcmx5IGFzc29jaWF0ZXMgdGhlIGBldmVudGZkX2N0eF9wdXRgIGZ1bmN0aW9uIHdpdGggdGhlIGBldmVudGZkX2N0eGAgc3RydWN0IGZvciB1c2Ugd2l0aCB0aGUgYF9fZnJlZWAgYXR0cmlidXRlLiBUaGlzIGlzIHRoZSBjb3JlIG9mIHRoZSBjbGVhbnVwIG1lY2hhbmlzbSBhbmQgcHJvdmlkZXMgYSBjbGVhbmVyIGFuZCBzYWZlciB3YXkgdG8gbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUgYGV2ZW50ZmRfY3R4YCBvYmplY3QuCgpJbiBzdW1tYXJ5LCB0aGlzIHBhdGNoIGlzIHJlZmFjdG9yaW5nIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBvZiBldmVudCBmaWxlIGRlc2NyaXB0b3JzIHdpdGhpbiB0aGUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGZ1bmN0aW9uLiBJdCYjMzk7cyB1c2luZyBjbGVhbnVwIGhhbmRsZXJzIHRvIGF1dG9tYXRpY2FsbHkgcmVsZWFzZSB0aGUgYGV2ZW50ZmRfY3R4YCBvbiBzY29wZSBleGl0IG9yIG1hbnVhbCBjYWxsIHRvIGBub19mcmVlX3B0cmAsIHRodXMgcmVkdWNpbmcgdGhlIGNoYW5jZSBvZiBtZW1vcnkgbGVha3MgYW5kIG1ha2luZyB0aGUgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCBtYWludGFpbmFibGUuIFRoaXMgc2VlbXMgbGlrZSBhIHBvc2l0aXZlIGNoYW5nZSB0aGF0IEkgc2hvdWxkIGRlZmluaXRlbHkgdGFrZSBub3RlIG9mLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDYwOlx0XG4xNDYxOlx0aW50XG4xNDYyOlx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuMTQ2MzpcdFx0XHRcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNDY0Olx0e1xuMTQ2NTpcdFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtcbjE0NjY6XHRcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcbjE0Njc6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbjE0Njg6XHRcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5O1xuMTQ2OTpcdFx0aW50IHJldDtcbjE0NzA6XHRcbjE0NzE6XHRcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbjE0NzI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuMTQ3MzpcdFxuMTQ3NDpcdFx0aWYgKGFyZ3MtXHUwMDNlZmxhZ3MgXHUwMDI2IH5EUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQVZBSUxBQkxFKVxuMTQ3NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0NzY6XHRcbjE0Nzc6XHRcdGlmIChhcmdzLVx1MDAzZXBhZClcbjE0Nzg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDc5Olx0XG4xNDgwOlx0XHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXHUwMDNlaGFuZGxlKTtcbjE0ODE6XHRcdGlmICghc3luY29iailcbjE0ODI6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4xNDgzOlx0XG4xNDg0Olx0XHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbjE0ODU6XHRcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuMTQ4NjpcdFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4xNDg3Olx0XHRcdGdvdG8gZXJyX2ZkZ2V0O1xuMTQ4ODpcdFx0fVxuMTQ4OTpcdFxuMTQ5MDpcdFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuMTQ5MTpcdFx0aWYgKCFlbnRyeSkge1xuMTQ5MjpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTQ5MzpcdFx0XHRnb3RvIGVycl9mZGdldDtcbjE0OTQ6XHRcdH1cbjE0OTU6XHRcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuMTQ5NjpcdFx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbjE0OTc6XHRcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbjE0OTg6XHRcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbjE0OTk6XHRcbjE1MDA6XHRcdGRybV9zeW5jb2JqX2FkZF9ldmVudGZkKHN5bmNvYmosIGVudHJ5KTtcbjE1MDE6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDI6XHRcbjE1MDM6XHRcdHJldHVybiAwO1xuMTUwNDpcdFxuMTUwNTpcdGVycl9mZGdldDpcbjE1MDY6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDc6XHRcdHJldHVybiByZXQ7XG4xNTA4Olx0fVxuMTUwOTpcdFxuMTUxMDpcdGludFxuMTUxMTpcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4xNTEyOlx0XHRcdFx0c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNTEzOlx0e1xuMTUxNDpcdFx0c3RydWN0IGRybV9zeW5jb2JqX2FycmF5ICphcmdzID0gZGF0YTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI1MQoJCQkJCQkJb3V0cHV0OiAyMzYKCQkJCQkJCXRob3VnaHRzOiA4OTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgVW5pbml0aWFsaXplZCBNZW1vcnkgUmlza3MqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGEgcmVmYWN0b3JpbmcgY2VudGVyZWQgYXJvdW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB1c2luZyB0aGUgYF9fZnJlZWAgY2xlYW51cCBhdHRyaWJ1dGUgYW5kIHRoZSBgZXZlbnRmZF9jdHhfcHV0YCBmdW5jdGlvbi4gSXQmIzM5O3MgZGVzaWduZWQgdG8gaGFuZGxlIHJlc291cmNlIGxpZmV0aW1lIGFuZCBwcmV2ZW50IHBvdGVudGlhbCBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLgoKVGhlIHBhdGNoIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6CgoxLiAgSXQgZGVmaW5lcyBgREVGSU5FX0ZSRUVgIGZvciBgZXZlbnRmZGAgY29udGV4dHMuCjIuICBJdCB1cGRhdGVzIGBldmVudGZkX2N0eF9wdXRgIHRvIHNhZmVseSBoYW5kbGUgYE5VTExgIG9yIGVycm9yIHBvaW50ZXJzLiBUaGlzIGlzIGdvb2QgcHJhY3RpY2UuCjMuICBJbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAsIHdlIGhhdmUgYSBgc3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtgIGRlY2xhcmF0aW9uLiBUaGUgb3duZXJzaGlwIGdldHMgdHJhbnNmZXJyZWQgdG8gYGVudHJ5YCB2aWEgYG5vX2ZyZWVfcHRyYC4gQ3J1Y2lhbGx5LCBlcnJvciBwYXRocyBub3cgc2FmZWx5IGZyZWUgYGV2X2ZkX2N0eGAgaWYgaXQmIzM5O3Mgbm90IGBOVUxMYCAob3IgaXQmIzM5O3MgYW4gZXJyb3IgcG9pbnRlciwgd2hpY2ggYGV2ZW50ZmRfY3R4X3B1dGAgaGFuZGxlcykuIFRoZSByZW1vdmFsIG9mIGBlcnJfa3phbGxvY2Agc2ltcGxpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcuCgpOb3csIHRoZSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgcmlza3Mgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3Iga2VybmVsIGluZm9ybWF0aW9uIGxlYWtzIHRoYXQgd291bGQgd2FycmFudCBLTVNBTj8gTGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdCBjYXJlZnVsbHk6CgoxLiAgKipLZXJuZWwgc3RydWN0dXJlcyB0byB1c2Vyc3BhY2U/KiogTm9wZS4gVGhlIGlucHV0LCBgdm9pZCAqZGF0YWAsIGNvbWVzIGZyb20gdGhlIERSTSBpb2N0bCBmcmFtZXdvcmsuIE5vIG5ldyBpbmZvcm1hdGlvbiBpcyBiZWluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLgoyLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBObyBhZ2Fpbi4gYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgTlVMTGAuCjMuICAqKkNvbXBsZXggc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyoqIGBlbnRyeWAgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jX29iamAsIHdoaWNoICp6ZXJvZXMqIHRoZSBtZW1vcnkuCjQuICAqKkJvdW5kcyBjaGVja3Mgb3IgbG9naWMgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/KiogTm8sIG5vdGhpbmcgaGVyZS4KClRoaXMgcmVmYWN0b3JpbmcgaXMgYWxsIGFib3V0IHJlc291cmNlIGNsZWFudXAgYW5kIGF2b2lkaW5nIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3PigJRzcGVjaWZpY2FsbHkgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUsIGxlYWtzLiBUaGVzZSBhcmUgKnN0YW5kYXJkKiBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgdGhhdCBLQVNBTiwgcmVmY291bnQgZGV0ZWN0b3JzLCBvciBsZWFrIGRldGVjdG9ycyB3b3VsZCBjYXRjaC4gSXQmIzM5O3Mgbm90IGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBjcml0ZXJpYSBvdXRsaW5lZCBhcmUgY2xlYXI6ICpLTVNBTiBpcyBub3QgbmVlZGVkKiBpbiB0aGlzIGNhc2UuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgdGhlIHR5cGVzIG9mIHJpc2tzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guIFRoZSBjb2RlIGNoYW5nZXMgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4gVGhlIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkIG9yIGluaXRpYWxpemVkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU49ZmFsc2VgLiBMZXQmIzM5O3MgcHJlcGFyZSB0aGUgY2FsbCB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgY2xlYW51cCBoZWxwZXIgdXNpbmcgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gYW5kIHJlZmFjdG9ycyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIHJlc291cmNlIG1hbmFnZW1lbnQgKGBfX2ZyZWVgIGFuZCBgbm9fZnJlZV9wdHJgKSBmb3IgYHN0cnVjdCBldmVudGZkX2N0eGAuIEFkZGl0aW9uYWxseSwgYGV2ZW50ZmRfY3R4X3B1dCgpYCBpcyB1cGRhdGVkIHRvIHNhZmVseSBoYW5kbGUgYE5VTExgIG9yIGVycm9yIHBvaW50ZXJzIHZpYSBgSVNfRVJSX09SX05VTEwoY3R4KWAuXG5cblRoZXNlIGNoYW5nZXMgY29uY2VybiBwb2ludGVyIGxpZmV0aW1lIGFuZCByZXNvdXJjZSBkZWFsbG9jYXRpb24uIFRoZSBsb2NhbCBwb2ludGVyIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgLCBhbmQgdGhlIGhlYXAgYWxsb2NhdGlvbiBgZW50cnlgIGNvbnRpbnVlcyB0byBiZSB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqKClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBieXRlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgYWx0ZXJlZC4gQW55IHBvdGVudGlhbCBidWdzIHdvdWxkIHJlbGF0ZSB0byByZWZlcmVuY2UgY291bnRpbmcsIHJlc291cmNlIGxlYWtzLCBvciBwb2ludGVyIGNsZWFudXAsIHdoaWNoIGZhbGwgdW5kZXIgc3RhbmRhcmQgS0FTQU4vcmVmY291bnQgdHJhY2tpbmcgcmF0aGVyIHRoYW4gS01TQU4gdW5pbml0aWFsaXplZCBtZW1vcnkgZGV0ZWN0aW9uLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxuXG5UaGVzZSBjaGFuZ2VzIGNvbmNlcm4gcG9pbnRlciBsaWZldGltZSBhbmQgcmVzb3VyY2UgZGVhbGxvY2F0aW9uLiBUaGUgbG9jYWwgcG9pbnRlciBgZXZfZmRfY3R4YCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGBOVUxMYCwgYW5kIHRoZSBoZWFwIGFsbG9jYXRpb24gYGVudHJ5YCBjb250aW51ZXMgdG8gYmUgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iaigpYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBhZGRpbmcgYnl0ZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIGFsdGVyZWQuIEFueSBwb3RlbnRpYWwgYnVncyB3b3VsZCByZWxhdGUgdG8gcmVmZXJlbmNlIGNvdW50aW5nLCByZXNvdXJjZSBsZWFrcywgb3IgcG9pbnRlciBjbGVhbnVwLCB3aGljaCBmYWxsIHVuZGVyIHN0YW5kYXJkIEtBU0FOL3JlZmNvdW50IHRyYWNraW5nIHJhdGhlciB0aGFuIEtNU0FOIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGRldGVjdGlvbi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6MDMuNTAxOTY5MjI5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5MjAyMjcxNTYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9WSVJUSU9fR1BVXCIsXG4gICAgXCJFVkVOVEZEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bFwiLFxuICAgIFwiZXZlbnRmZF9jdHhfcHV0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgY2xlYW51cCBoZWxwZXIgdXNpbmcgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gYW5kIHJlZmFjdG9ycyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIHJlc291cmNlIG1hbmFnZW1lbnQgKGBfX2ZyZWVgIGFuZCBgbm9fZnJlZV9wdHJgKSBmb3IgYHN0cnVjdCBldmVudGZkX2N0eGAuIEFkZGl0aW9uYWxseSwgYGV2ZW50ZmRfY3R4X3B1dCgpYCBpcyB1cGRhdGVkIHRvIHNhZmVseSBoYW5kbGUgYE5VTExgIG9yIGVycm9yIHBvaW50ZXJzIHZpYSBgSVNfRVJSX09SX05VTEwoY3R4KWAuXFxuXFxuVGhlc2UgY2hhbmdlcyBjb25jZXJuIHBvaW50ZXIgbGlmZXRpbWUgYW5kIHJlc291cmNlIGRlYWxsb2NhdGlvbi4gVGhlIGxvY2FsIHBvaW50ZXIgYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgTlVMTGAsIGFuZCB0aGUgaGVhcCBhbGxvY2F0aW9uIGBlbnRyeWAgY29udGludWVzIHRvIGJlIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmooKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGJ5dGVzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBhbHRlcmVkLiBBbnkgcG90ZW50aWFsIGJ1Z3Mgd291bGQgcmVsYXRlIHRvIHJlZmVyZW5jZSBjb3VudGluZywgcmVzb3VyY2UgbGVha3MsIG9yIHBvaW50ZXIgY2xlYW51cCwgd2hpY2ggZmFsbCB1bmRlciBzdGFuZGFyZCBLQVNBTi9yZWZjb3VudCB0cmFja2luZyByYXRoZXIgdGhhbiBLTVNBTiB1bmluaXRpYWxpemVkIG1lbW9yeSBkZXRlY3Rpb24uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6MDMuNTAxOTc2ODc5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYyMDA0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNWRmNDNiZTNlYmMyMWRlNDg5YzU1OTljY2E4M2JmYmI0Y2Q4NzhjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDE1IDE0OjIzOjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcXG5pbmRleCBjMjNhNWRlMjdlZmZhLi5lZmM0ZThhZjIyMGM4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcXG5AQCAtMTQ2Miw5ICsxNDYyLDkgQEAgaW50XFxuIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4gXFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4ge1xcbitcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XFxuIFxcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcXG4tXFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XFxuIFxcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5O1xcbiBcXHRpbnQgcmV0O1xcbiBcXG5AQCAtMTQ5MCwxMCArMTQ5MCwxMCBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuIFxcdGVudHJ5ID0ga3phbGxvY19vYmooKmVudHJ5KTtcXG4gXFx0aWYgKCFlbnRyeSkge1xcbiBcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbi1cXHRcXHRnb3RvIGVycl9remFsbG9jO1xcbitcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4gXFx0fVxcbiBcXHRlbnRyeS1cXHUwMDNlc3luY29iaiA9IHN5bmNvYmo7XFxuLVxcdGVudHJ5LVxcdTAwM2Vldl9mZF9jdHggPSBldl9mZF9jdHg7XFxuK1xcdGVudHJ5LVxcdTAwM2Vldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpO1xcbiBcXHRlbnRyeS1cXHUwMDNlcG9pbnQgPSBhcmdzLVxcdTAwM2Vwb2ludDtcXG4gXFx0ZW50cnktXFx1MDAzZWZsYWdzID0gYXJncy1cXHUwMDNlZmxhZ3M7XFxuIFxcbkBAIC0xNTAyLDggKzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLWVycl9remFsbG9jOlxcbi1cXHRldmVudGZkX2N0eF9wdXQoZXZfZmRfY3R4KTtcXG4gZXJyX2ZkZ2V0OlxcbiBcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuIFxcdHJldHVybiByZXQ7XFxuZGlmZiAtLWdpdCBhL2ZzL2V2ZW50ZmQuYyBiL2ZzL2V2ZW50ZmQuY1xcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjFjZDE3NDFiODFiMTcgMTAwNjQ0XFxuLS0tIGEvZnMvZXZlbnRmZC5jXFxuKysrIGIvZnMvZXZlbnRmZC5jXFxuQEAgLTEwMiw2ICsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXFxuICAqL1xcbiB2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcXG4ge1xcbitcXHRpZiAoSVNfRVJSX09SX05VTEwoY3R4KSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0a3JlZl9wdXQoXFx1MDAyNmN0eC1cXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXFxuaW5kZXggZTMyYmVlNDM0NWZiOS4uNjg5MzU4YzJiMGFlNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXFxuQEAgLTEwLDYgKzEwLDcgQEBcXG4gI2RlZmluZSBfTElOVVhfRVZFTlRGRF9IXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvd2FpdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xlYW51cC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJjcHUtZGVmcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGVyY3B1LmhcXHUwMDNlXFxuQEAgLTg5LDUgKzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbiBcXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XFxuIH1cXG4gXFxuK0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxcbitcXG4gI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjIzOjA0LjA4OTEwMjI2OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTA2OTk1Mzc3NDQ0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9WSVJUSU9fR1BVXCIsXG4gICAgXCJFVkVOVEZEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bFwiLFxuICAgIFwiZXZlbnRmZF9jdHhfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBldmVudGZkX2N0eF9wdXQoKSBpbiBmcy9ldmVudGZkLmMgdG8gc2FmZWx5IGhhbmRsZSBJU19FUlJfT1JfTlVMTCBwb2ludGVycyBhbmQgaW50cm9kdWNlcyB0aGUgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKSBzY29wZWQgY2xlYW51cCBoZWxwZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byByZWZhY3RvciByZXNvdXJjZSByZWxlYXNlIGFuZCBlcnJvciBwYXRocyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIGV4ZWN1dGFibGUgYW5kIGZ1bGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdmlydGlvLWdwdSBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyAod2hpY2ggc3VwcG9ydHMgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2xlYW51cCBhdHRyaWJ1dGUgaGFuZGxpbmcgYW5kIG5ldyBOVUxML0VSUiBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWZlcmVuY2UgbGVha3MsIGRvdWJsZSBwdXRzLCBvciBvdGhlciByZWdyZXNzaW9ucyB1bmRlciBlcnJvciBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNWRmNDNiZTNlYmMyMWRlNDg5YzU1OTljY2E4M2JmYmI0Y2Q4NzhjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTQ6MjM6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5pbmRleCBjMjNhNWRlMjdlZmZhLi5lZmM0ZThhZjIyMGM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5AQCAtMTQ2Miw5ICsxNDYyLDkgQEAgaW50XG4gZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuIFx0XHRcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4ge1xuK1x0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtcbiBcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcbiBcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbi1cdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4O1xuIFx0c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnk7XG4gXHRpbnQgcmV0O1xuIFxuQEAgLTE0OTAsMTAgKzE0OTAsMTAgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuIFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuIFx0aWYgKCFlbnRyeSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9remFsbG9jO1xuK1x0XHRnb3RvIGVycl9mZGdldDtcbiBcdH1cbiBcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuLVx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gZXZfZmRfY3R4O1xuK1x0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbiBcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbiBcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbiBcbkBAIC0xNTAyLDggKzE1MDIsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfa3phbGxvYzpcbi1cdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xuIGVycl9mZGdldDpcbiBcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4xY2QxNzQxYjgxYjE3IDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4rKysgYi9mcy9ldmVudGZkLmNcbkBAIC0xMDIsNiArMTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuICAqL1xuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIHtcbitcdGlmIChJU19FUlJfT1JfTlVMTChjdHgpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRrcmVmX3B1dChcdTAwMjZjdHgtXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5AQCAtMTAsNiArMTAsNyBAQFxuICNkZWZpbmUgX0xJTlVYX0VWRU5URkRfSFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG5AQCAtODksNSArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gfVxuIFxuK0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuK1xuICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyMzowNC4wODkxMDQ0ODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMzkxNzU4NTMzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhpcyBQYXRjaCBmb3IgRXZlbnRmZCBhbmQgRFJNIFN5bmNvYmpzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRob3JvdWdobHkgZXhhbWluZSB0aGlzIHBhdGNoLCBzdGFydGluZyB3aXRoIGEgZ3JhbnVsYXIgbG9vayBhdCB0aGUgY29kZSBjaGFuZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIERSTSBzeW5jb2JqIHN1YnN5c3RlbSwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLlxuXG5GaXJzdCwgdGhlIHBhdGNoIGFsdGVycyB0aHJlZSBmaWxlcy4gSXQgbG9va3MgbGlrZTpcblxuMS4gIEluIGBmcy9ldmVudGZkLmNgLCB0aGVyZSdzIGEgc2FmZXR5IGNoZWNrIGJlaW5nIGFkZGVkIHRvIGBldmVudGZkX2N0eF9wdXRgOiBgaWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpIHJldHVybjtgLiBUaGlzIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHByb3RlY3Rpb24uIEltcG9ydGFudCwgYnV0IHN0cmFpZ2h0Zm9yd2FyZC5cblxuMi4gIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgaXMgZ2V0dGluZyBhIGNoYW5nZSB0byB0aGUgYERFRklORV9GUkVFYCBtYWNybyBmb3IgYGV2ZW50ZmRgLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGBldmVudGZkX2N0eF9wdXQoX1QpYC4gVGhpcyBtZWFucyB0aGUgbWFjcm8gaXMgbm93IHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBgZXZlbnRmZF9jdHhgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhlIG1hY3JvIGlzIGEgY3J1Y2lhbCBwYXJ0IG9mIGtlcm5lbCBtZW1vcnkgbWFuYWdlbWVudC5cblxuMy4gIEZpbmFsbHksIGFuZCBwZXJoYXBzIHRoZSBtb3N0IGludGVyZXN0aW5nIHBpZWNlLCBpcyB0aGUgY2hhbmdlIHdpdGhpbiBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgLiBUaGUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGZ1bmN0aW9uIGlzIHRoZSBjb3JlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIEhlcmUsIHRoZSBwYXRjaCBtb2RpZmllcyBob3cgYHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4YCBpcyBoYW5kbGVkLiBJdCBzZWVtcyB0aGUgY29kZSBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgYXR0cmlidXRlIGFuZCBhICBgbm9fZnJlZV9wdHJgIGZ1bmN0aW9uIGNhbGwuIEFkZGl0aW9uYWxseSwgdGhlIG9sZCBgZXJyX2t6YWxsb2NgIGxhYmVsIGFuZCBjb3JyZXNwb25kaW5nIGBldmVudGZkX2N0eF9wdXRgIGNhbGwgaGF2ZSBiZWVuIHJlbW92ZWQuIFRoaXMgaW1wbGllcyBhIGNoYW5nZSBpbiBob3cgYGV2ZW50ZmRfY3R4YCBpcyBtYW5hZ2VkIGFuZCByZWxlYXNlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgRFJNIHN5bmNvYmouIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRyb2wgZmxvdyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gY29uZmlybSB0aGUgZGV0YWlscy5cbkkgbmVlZCB0byBrZWVwIGluIG1pbmQsIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZnVuY3Rpb24gYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBjb250ZXh0LCB0aGlzIGNoYW5nZSB0byBzZWUgd2hhdCdzIHJlYWxseSBnb2luZyBvbi4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIHJhdGlvbmFsZSBmb3IgdGhlIGNoYW5nZSBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIHJlZ3Jlc3Npb24gaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTkyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6MTguMDA2NjkyMTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ2MDpcXHRcXG4xNDYxOlxcdGludFxcbjE0NjI6XFx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbjE0NjM6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNDY0OlxcdHtcXG4xNDY1OlxcdFxcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XFxuMTQ2NjpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XFxuMTQ2NzpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuMTQ2ODpcXHRcXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcXG4xNDY5OlxcdFxcdGludCByZXQ7XFxuMTQ3MDpcXHRcXG4xNDcxOlxcdFxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG4xNDcyOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4xNDczOlxcdFxcbjE0NzQ6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZWZsYWdzIFxcdTAwMjYgfkRSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BVkFJTEFCTEUpXFxuMTQ3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNDc2OlxcdFxcbjE0Nzc6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZXBhZClcXG4xNDc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE0Nzk6XFx0XFxuMTQ4MDpcXHRcXHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXFx1MDAzZWhhbmRsZSk7XFxuMTQ4MTpcXHRcXHRpZiAoIXN5bmNvYmopXFxuMTQ4MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4xNDgzOlxcdFxcbjE0ODQ6XFx0XFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cXHUwMDNlZmQpO1xcbjE0ODU6XFx0XFx0aWYgKElTX0VSUihldl9mZF9jdHgpKSB7XFxuMTQ4NjpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XFxuMTQ4NzpcXHRcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4xNDg4OlxcdFxcdH1cXG4xNDg5OlxcdFxcbjE0OTA6XFx0XFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xcbjE0OTE6XFx0XFx0aWYgKCFlbnRyeSkge1xcbjE0OTI6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xNDkzOlxcdFxcdFxcdGdvdG8gZXJyX2ZkZ2V0O1xcbjE0OTQ6XFx0XFx0fVxcbjE0OTU6XFx0XFx0ZW50cnktXFx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xcbjE0OTY6XFx0XFx0ZW50cnktXFx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XFxuMTQ5NzpcXHRcXHRlbnRyeS1cXHUwMDNlcG9pbnQgPSBhcmdzLVxcdTAwM2Vwb2ludDtcXG4xNDk4OlxcdFxcdGVudHJ5LVxcdTAwM2VmbGFncyA9IGFyZ3MtXFx1MDAzZWZsYWdzO1xcbjE0OTk6XFx0XFxuMTUwMDpcXHRcXHRkcm1fc3luY29ial9hZGRfZXZlbnRmZChzeW5jb2JqLCBlbnRyeSk7XFxuMTUwMTpcXHRcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuMTUwMjpcXHRcXG4xNTAzOlxcdFxcdHJldHVybiAwO1xcbjE1MDQ6XFx0XFxuMTUwNTpcXHRlcnJfZmRnZXQ6XFxuMTUwNjpcXHRcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuMTUwNzpcXHRcXHRyZXR1cm4gcmV0O1xcbjE1MDg6XFx0fVxcbjE1MDk6XFx0XFxuMTUxMDpcXHRpbnRcXG4xNTExOlxcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuMTUxMjpcXHRcXHRcXHRcXHRzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNTEzOlxcdHtcXG4xNTE0OlxcdFxcdHN0cnVjdCBkcm1fc3luY29ial9hcnJheSAqYXJncyA9IGRhdGE7XFxuMTUxNTpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqcztcXG4xNTE2OlxcdFxcdHVpbnQzMl90IGk7XFxuMTUxNzpcXHRcXHRpbnQgcmV0O1xcbjE1MTg6XFx0XFxuMTUxOTpcXHRcXHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjIzOjE4LjAwNjgzODk4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIyNDQwNDI2MjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyBgZnMvZXZlbnRmZC5jYCoqXG5cbk9rYXksIEknbSBkaWdnaW5nIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoIGV2ZW50ZmQsIHNvIGxldCdzIHpvb20gaW4gb24gdGhlIGBmcy9ldmVudGZkLmNgIGZpbGUuIEknbGwgZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDEwMC4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwncyBhcmNoaXRlY3R1cmUuIEhvcGVmdWxseSwgdGhlIGNvZGUgdGhlcmUgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHNwZWNpZmljIGJlaGF2aW9yIEknbSBjdXJpb3VzIGFib3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTgzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyMzo0MC40NDcyNjgyODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9ldmVudGZkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTU6XFx0XFxuICA5NjpcXHQvKipcXG4gIDk3OlxcdCAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuICA5ODpcXHQgKiBAY3R4OiBbaW5dIFBvaW50ZXIgdG8gZXZlbnRmZCBjb250ZXh0LlxcbiAgOTk6XFx0ICpcXG4gMTAwOlxcdCAqIFRoZSBldmVudGZkIGNvbnRleHQgcmVmZXJlbmNlIG11c3QgaGF2ZSBiZWVuIHByZXZpb3VzbHkgYWNxdWlyZWQgZWl0aGVyXFxuIDEwMTpcXHQgKiB3aXRoIGV2ZW50ZmRfY3R4X2ZkZ2V0KCkgb3IgZXZlbnRmZF9jdHhfZmlsZWdldCgpLlxcbiAxMDI6XFx0ICovXFxuIDEwMzpcXHR2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcXG4gMTA0OlxcdHtcXG4gMTA1OlxcdFxcdGlmIChJU19FUlJfT1JfTlVMTChjdHgpKVxcbiAxMDY6XFx0XFx0XFx0cmV0dXJuO1xcbiAxMDc6XFx0XFxuIDEwODpcXHRcXHRrcmVmX3B1dChcXHUwMDI2Y3R4LVxcdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xcbiAxMDk6XFx0fVxcbiAxMTA6XFx0RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcXG4gMTExOlxcdFxcbiAxMTI6XFx0c3RhdGljIGludCBldmVudGZkX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIDExMzpcXHR7XFxuIDExNDpcXHRcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0d2FrZV91cF9wb2xsKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgRVBPTExIVVApO1xcbiAxMTc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuIDExODpcXHRcXHRyZXR1cm4gMDtcXG4gMTE5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6NDAuNDQ3MzQyMzQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjA0NjY0MjI4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGFiaWxpdHkgQW5hbHlzaXM6IERSTSBTeW5jb2JqIGluIFFFTVUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyByZWFjaGFiaWxpdHkgcXVlc3Rpb24uIE15IHByaW1hcnkgY29uY2VybiBpcyB3aGV0aGVyIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBpcyBhY3R1YWxseSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgUUVNVSBlbnZpcm9ubWVudC4gSXQgc2VlbXMgbGlrZSBpdCBzaG91bGQgYmUsIGNvbnNpZGVyaW5nIFFFTVUgc3VwcG9ydHMgdmFyaW91cyBEUk0gZGV2aWNlcywgc3BlY2lmaWNhbGx5IHRoaW5ncyBsaWtlIHZnZW0sIHZpcnRpby1ncHUsIGFuZCB2a21zLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSByZWdpc3RyYXRpb24uIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBjb21wb25lbnRzIGFyZSByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgZWl0aGVyIGBEUklWRVJfU1lOQ09CSl9USU1FTElORWAgb3IsIG1vcmUgZGlyZWN0bHksIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBpdHNlbGYuIEtub3dpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCB3aWxsIGlsbHVtaW5hdGUgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGdyZXBwaW5nIHRvb2xzIGFuZCBodW50IGZvciB0aG9zZSBrZXl3b3JkczogYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgLiBUaGF0IHNob3VsZCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBkcml2ZXJzIG9yIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MjgsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyMzo0Ni40OTM5ODY3NjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0ODEzNDI1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fc3luY29ial9ldmVudGZkX2lvY3RsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaD0yNzY9aW50IGRybV9zeW5jb2JqX3RpbWVsaW5lX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI3ODppbnQgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNzktXFx0XFx0XFx0ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jPTY0ND1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGRybV9pb2N0bHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzEtXFx0XFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczMjpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkQsIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTczMy1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTE0NjE9aW50XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MTQ2Mjpkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTQ2My1cXHRcXHRcXHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyMzo0OC42NDIxMjY1MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozMTY1OTc2NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byBEUk0gU3luY2hyb25pemF0aW9uIE9iamVjdHMgYW5kIEV2ZW50RkQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRGAuIFRoaXMgaXMgYW4gaW9jdGwgY2FsbCB0aGF0IG9wZXJhdGVzIG9uIHRoZSBgL2Rldi9kcmkvY2FyZCpgIG9yIGAvZGV2L2RyaS9yZW5kZXJEKmAgZGV2aWNlcy4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBTeXprYWxsZXIsIHRoYXQgZnV6emluZyBiZWFzdCwgKmRpcmVjdGx5KiBzdXBwb3J0cyBgZHJtX3N5bmNvYmpgIGFuZCB0aGlzIHNwZWNpZmljIGBEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEYCBjYWxsLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbjsgU3l6a2FsbGVyJ3MgY292ZXJhZ2UgdXN1YWxseSBoaWdobGlnaHRzIGFyZWFzIG9mIHBvdGVudGlhbCBjb21wbGV4aXR5IG9yIHZ1bG5lcmFiaWxpdHkuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgYERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyBhY3R1YWxseSAqdXNlKiB0aGlzIGNhcGFiaWxpdHkuIElkZW50aWZ5aW5nIHdoaWNoIGRyaXZlcnMgaGF2ZSBlbmFibGVkIHRoYXQgc3BlY2lmaWMgZmVhdHVyZSB3aWxsIGhlbHAgbWUgbmFycm93IGRvd24gdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZSBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGVtZW50YXRpb24gc3RyYXRlZ2llcyBpbiB1c2UuIEtub3dpbmcgdGhlIGRyaXZlcnMgaW52b2x2ZWQgd2lsbCBhbGxvdyBtZSB0byB0YXJnZXQgbXkgYW5hbHlzaXMgbW9yZSBlZmZlY3RpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjIzOjUxLjgwODEwNTg3MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNzU4MTk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEUklWRVJfU1lOQ09CSl9USU1FTElORVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmM9MzI5PWNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIGFtZHhkbmFfZHJtX2RydiA9IHtcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmMtMzMwLVxcdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfR0VNIHwgRFJJVkVSX0NPTVBVVEVfQUNDRUwgfFxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYzozMzE6XFx0XFx0RFJJVkVSX1NZTkNPQkogfCBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmMtMzMyLVxcdC5mb3BzID0gXFx1MDAyNmFtZHhkbmFfZm9wcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYz0zMTEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBhbWRncHVfa21zX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYy0zMTE0LVxcdCAgICBEUklWRVJfUkVOREVSIHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfU1lOQ09CSiB8XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jOjMxMTU6XFx0ICAgIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYy0zMTE2LVxcdC5vcGVuID0gYW1kZ3B1X2RyaXZlcl9vcGVuX2ttcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYz0zMTM4PWNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIGFtZGdwdV9wYXJ0aXRpb25fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jLTMxNDAtXFx0ICAgIERSSVZFUl9HRU0gfCBEUklWRVJfUkVOREVSIHwgRFJJVkVSX1NZTkNPQkogfFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYzozMTQxOlxcdCAgICBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMtMzE0Mi1cXHQub3BlbiA9IGFtZGdwdV9kcml2ZXJfb3Blbl9rbXMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM9MjM0PXN0YXRpYyBpbnQgZHJtX2dldGNhcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy0yNTItXFx0Y2FzZSBEUk1fQ0FQX1NZTkNPQkpfVElNRUxJTkU6XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjI1MzpcXHRcXHRyZXEtXFx1MDAzZXZhbHVlID0gZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtMjU0LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9OTg0PWRybV9zeW5jb2JqX3RyYW5zZmVyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy05ODktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6OTkwOlxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy05OTEtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MTM2Nj1kcm1fc3luY29ial90aW1lbGluZV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xMzc0LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjEzNzU6XFx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTEzNzYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MTQ2Mj1kcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNDcwLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjE0NzE6XFx0aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE0NzItXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MTU4MD1kcm1fc3luY29ial90aW1lbGluZV9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE1ODktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MTU5MDpcXHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTU5MS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0xNjUyPWludCBkcm1fc3luY29ial9xdWVyeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTY2MC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNjYxOlxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNjYyLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJpdmVyLmM9MTc2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgaTkxNV9kcm1fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcml2ZXIuYy0xNzcwLVxcdCAgICBEUklWRVJfUkVOREVSIHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDIHwgRFJJVkVSX1NZTkNPQkogfFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJpdmVyLmM6MTc3MTpcXHQgICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcml2ZXIuYy0xNzcyLVxcdC5yZWxlYXNlID0gaTkxNV9kcml2ZXJfcmVsZWFzZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfZHJ2LmM9MTM4MT1zdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgcHZyX2RybV9kcml2ZXIgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYy0xMzgyLVxcdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfR0VNIHwgRFJJVkVSX1JFTkRFUiB8XFxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYzoxMzgzOlxcdFxcdFxcdCAgIERSSVZFUl9TWU5DT0JKIHwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXFxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9kcnYuYy0xMzg0LVxcdC5vcGVuID0gcHZyX2RybV9kcml2ZXJfb3BlbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jPTgyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMtODM2LVxcdFxcdERSSVZFUl9TWU5DT0JKIHwgXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jOjgzNzpcXHRcXHREUklWRVJfU1lOQ09CSl9USU1FTElORSB8IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYy04MzgtXFx0XFx0MCApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zeW5jb2JqLmM9MTA9bXNtX3N5bmNvYmpfcGFyc2VfZGVwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTM3LVxcdFxcdGlmIChzeW5jb2JqX2Rlc2MucG9pbnQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zeW5jb2JqLmM6Mzg6XFx0XFx0ICAgICFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUpKSB7XFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTM5LVxcdFxcdFxcdHJldCA9IFVFUlIoRU9QTk9UU1VQUCwgZGV2LCBcXFwic3luY29iaiB0aW1lbGluZSB1bnN1cHBvcnRlZFxcXCIpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jPTg2PW1zbV9zeW5jb2JqX3BhcnNlX3Bvc3RfZGVwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3luY29iai5jLTEyMC1cXHRcXHRcXHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYzoxMjE6XFx0XFx0XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSkge1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N5bmNvYmouYy0xMjItXFx0XFx0XFx0XFx0cmV0ID0gVUVSUihFT1BOT1RTVVBQLCBkZXYsIFxcXCJzeW5jb2JqIHRpbWVsaW5lIHVuc3VwcG9ydGVkXFxcIik7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTE0MDE9ZHJpdmVyX2xlZ2FjeV9rbXMgPSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTE0MDMtXFx0XFx0XFx0IHwgRFJJVkVSX1NZTkNPQkpcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jOjE0MDQ6XFx0XFx0XFx0IHwgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTE0MDUtXFx0XFx0XFx0IHwgRFJJVkVSX01PREVTRVRcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM9MTQxMT1kcml2ZXJfYXRvbWljX2ttcyA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQxMy1cXHRcXHRcXHQgfCBEUklWRVJfU1lOQ09CSlxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM6MTQxNDpcXHRcXHRcXHQgfCBEUklWRVJfU1lOQ09CSl9USU1FTElORVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQxNS1cXHRcXHRcXHQgfCBEUklWRVJfTU9ERVNFVFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kcnYuYz0xNzkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBwYW50aG9yX2RybV9kcml2ZXIgPSB7XFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kcnYuYy0xNzk0LVxcdC5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfUkVOREVSIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9TWU5DT0JKIHxcXG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2Rydi5jOjE3OTU6XFx0XFx0XFx0ICAgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkUsXFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kcnYuYy0xNzk2LVxcdC5vcGVuID0gcGFudGhvcl9vcGVuLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jPTMyOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jLTMzMy1cXHQuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9BVE9NSUMgfFxcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9kcnYuYzozMzQ6XFx0XFx0XFx0ICAgRFJJVkVSX1NZTkNPQkogfCBEUklWRVJfU1lOQ09CSl9USU1FTElORSB8IERSSVZFUl9DVVJTT1JfSE9UU1BPVCxcXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmMtMzM1LVxcdC5vcGVuID0gdmlydGlvX2dwdV9kcml2ZXJfb3BlbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz0zOTY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIHJlZ3VsYXJfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTQwMC1cXHQgICAgRFJJVkVSX1JFTkRFUiB8IERSSVZFUl9TWU5DT0JKIHxcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NDAxOlxcdCAgICBEUklWRVJfU1lOQ09CSl9USU1FTElORSxcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNDAyLVxcdC5vcGVuID0geGVfZmlsZV9vcGVuLFxcbi0tXFxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oPTU4PWVudW0gZHJtX2RyaXZlcl9mZWF0dXJlIHtcXG4tLVxcbmluY2x1ZGUvZHJtL2RybV9kcnYuaC05Ni1cXHQvKipcXG5pbmNsdWRlL2RybS9kcm1fZHJ2Lmg6OTc6XFx0ICogQERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FOlxcbmluY2x1ZGUvZHJtL2RybV9kcnYuaC05OC1cXHQgKlxcbi0tXFxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oLTEwMS1cXHQgKi9cXG5pbmNsdWRlL2RybS9kcm1fZHJ2Lmg6MTAyOlxcdERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FICAgICAgICAgPSBCSVQoNiksXFxuaW5jbHVkZS9kcm0vZHJtX2Rydi5oLTEwMy1cXHQvKipcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6MjM6NTMuNjM1Njk3NzExWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQ0ODkwODE4ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgRXZlbnRmZCBhbmQgaXRzIEludGVyYWN0aW9uIHdpdGggVmlydGlvLUdQVSoqXG5cbk9rYXksIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEkndmUgc3BvdHRlZCBzb21ldGhpbmcgaW4gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5jYCwgdGhhdCBoYXMgdGhlIGBEUklWRVJfU1lOQ09CSiB8IERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FYCBmbGFnIHNldC4gUmlnaHQsIFZpcnRpby1HUFUg4oCTIHRoYXQncyBhIGtleSB2aXJ0dWFsIGRldmljZSBpbiBRRU1VLCBzbyB0aGF04oCZcyBkaXJlY3RseSByZWxldmFudCB0byBteSBhcmVhIG9mIGV4cGVydGlzZS4gQW5kIHRoZW4gSSBzZWUgYGV2ZW50ZmRfY3R4X3B1dGAgbWVudGlvbmVkLiBOb3csIGBldmVudGZkLmNgIGlzIGNvcmUgVkZTLCB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBgZXZlbnRmZGAgc3Vic3lzdGVtIGxpdmVzLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgY2FsbGluZyBgZXZlbnRmZF9jdHhfcHV0YC4gVGhlIGZhY3QgdGhhdCBpdCdzIHJlbGF0ZWQgdG8gVmlydGlvLUdQVSBtZWFucyBpdCBjb3VsZCBiZSByZWFsbHkgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcy4gU28sIGxldCdzIGZpbmQgb3V0LiBUaW1lIHRvIGZpcmUgdXAgdGhlIGdyZXAgYW5kIGdldCBhIGxpc3Qgb2YgYWxsIGNhbGwgc2l0ZXMgZm9yIGBldmVudGZkX2N0eF9wdXRgLiBHb3R0YSB0cmFjZSBkb3duIHRoZSBleGVjdXRpb24gcGF0aCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjgyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjI0OjM4LjUyNjUyMDcxMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwOTY5NTQ3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJldmVudGZkX2N0eF9wdXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MTYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz0yNzI1PXZvaWQga3ZtX2h2X2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3MzEtXFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFxcdTAwMjZodi1cXHUwMDNlY29ubl90b19ldnQsIGV2ZW50ZmQsIGkpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjI3MzI6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzMzLVxcdGlkcl9kZXN0cm95KFxcdTAwMjZodi1cXHUwMDNlY29ubl90b19ldnQpO1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI3MzY9c3RhdGljIGludCBrdm1faHZfZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgY29ubl9pZCwgaW50IGZkKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NTUtXFx0XFx0cmV0ID0gLUVFWElTVDtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Mjc1NjpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3NTctXFx0cmV0dXJuIHJldDtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz0yNzYwPXN0YXRpYyBpbnQga3ZtX2h2X2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgY29ubl9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzcyLVxcdHN5bmNocm9uaXplX3NyY3UoXFx1MDAyNmt2bS1cXHUwMDNlc3JjdSk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjI3NzM6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzc0LVxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTIxMzQ9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMTk5LVxcdGlmIChldmVudGZkKVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjAwOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjIwMS1vdXRfbm9ldmVudGZkOlxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTIyMDY9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgcG9ydClcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjE4LVxcdGlmICghZXZ0Y2huZmQtXFx1MDAzZWRlbGl2ZXIucG9ydC5wb3J0KVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjE5OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyMjAtXFx0a2ZyZWUoZXZ0Y2huZmQpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTIyMjQ9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfcmVzZXQoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNTctXFx0XFx0aWYgKCFldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXFxuYXJjaC94ODYva3ZtL3hlbi5jOjIyNTg6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVxcdTAwM2VkZWxpdmVyLmV2ZW50ZmQuY3R4KTtcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI1OS1cXHRcXHRrZnJlZShldnRjaG5mZCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjM1Nj12b2lkIGt2bV94ZW5fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjM2NC1cXHRcXHRpZiAoIWV2dGNobmZkLVxcdTAwM2VkZWxpdmVyLnBvcnQucG9ydClcXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjM2NTpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXFx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xcbmFyY2gveDg2L2t2bS94ZW4uYy0yMzY2LVxcdFxcdGtmcmVlKGV2dGNobmZkKTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmM9NDYwPXN0YXRpYyB2b2lkIGhwcml2X3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmMtNTM2LVxcdGlmIChocHJpdi1cXHUwMDNlbm90aWZpZXJfZXZlbnQuZXZlbnRmZClcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjUzNzpcXHRcXHRldmVudGZkX2N0eF9wdXQoaHByaXYtXFx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmMtNTM4LVxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmM9NzkzPXN0YXRpYyBpbnQgZXZlbnRmZF91bnJlZ2lzdGVyKHN0cnVjdCBobF9mcHJpdiAqaHByaXYsIHN0cnVjdCBobF9pbmZvX2FyZ3MgKmFyZ3MpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2hhYmFuYWxhYnNfaW9jdGwuYy04MDAtXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmM6ODAxOlxcdGV2ZW50ZmRfY3R4X3B1dChocHJpdi1cXHUwMDNlbm90aWZpZXJfZXZlbnQuZXZlbnRmZCk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmMtODAyLVxcdGhwcml2LVxcdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvZnBnYS9kZmwuYz0xODY5PXN0YXRpYyBpbnQgZG9fc2V0X2lycV90cmlnZ2VyKHN0cnVjdCBkZmxfZmVhdHVyZSAqZmVhdHVyZSwgdW5zaWduZWQgaW50IGlkeCxcXG4tLVxcbmRyaXZlcnMvZnBnYS9kZmwuYy0xODgwLVxcdFxcdGtmcmVlKGZlYXR1cmUtXFx1MDAzZWlycV9jdHhbaWR4XS5uYW1lKTtcXG5kcml2ZXJzL2ZwZ2EvZGZsLmM6MTg4MTpcXHRcXHRldmVudGZkX2N0eF9wdXQoZmVhdHVyZS1cXHUwMDNlaXJxX2N0eFtpZHhdLnRyaWdnZXIpO1xcbmRyaXZlcnMvZnBnYS9kZmwuYy0xODgyLVxcdFxcdGZlYXR1cmUtXFx1MDAzZWlycV9jdHhbaWR4XS50cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvZnBnYS9kZmwuYy0xOTA2LVxcbmRyaXZlcnMvZnBnYS9kZmwuYzoxOTA3OlxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTkwOC1mcmVlX25hbWU6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0zMDM9c3luY29ial9ldmVudGZkX2VudHJ5X2ZyZWUoc3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnkpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzA0LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMDU6XFx0ZXZlbnRmZF9jdHhfcHV0KGVudHJ5LVxcdTAwM2Vldl9mZF9jdHgpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMwNi1cXHRkbWFfZmVuY2VfcHV0KGVudHJ5LVxcdTAwM2VmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYz02OTA9c3RhdGljIHZvaWQgaW50ZWxfdmdwdV9yZWxlYXNlX21zaV9ldmVudGZkX2N0eChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jLTY5NS1cXHRpZiAodHJpZ2dlcikge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jOjY5NjpcXHRcXHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMtNjk3LVxcdFxcdHZncHUtXFx1MDAzZW1zaV90cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9MjU0PXN0YXRpYyB2b2lkIG1zaHZfaXJxZmRfc2h1dGRvd24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNjctXFx0XFx0bXNodl9pcnFmZF9yZXNhbXBsZXJfc2h1dGRvd24oaXJxZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6MjY4OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cXHUwMDNlaXJxZmRfcmVzYW1wbGVmZCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNjktXFx0fVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNzMtXFx0ICovXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzoyNzQ6XFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVxcdTAwM2VpcnFmZF9ldmVudGZkX2N0eCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy0yNzUtXFx0a2ZyZWUoaXJxZmQpO1xcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz0zOTM9c3RhdGljIGludCBtc2h2X2lycWZkX2Fzc2lnbihzdHJ1Y3QgbXNodl9wYXJ0aXRpb24gKnB0LFxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MjktXFx0aWYgKHJlc2FtcGxlZmQgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUihyZXNhbXBsZWZkKSlcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjUzMDpcXHRcXHRldmVudGZkX2N0eF9wdXQocmVzYW1wbGVmZCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzEtXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzItXFx0aWYgKGV2ZW50ZmQgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUihldmVudGZkKSlcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjUzMzpcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzQtXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTU0Mz1zdGF0aWMgaW50IG1zaHZfaXJxZmRfZGVhc3NpZ24oc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTYyLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NTYzOlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTU2NC1cXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NjMzPXN0YXRpYyB2b2lkIGlvZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBtc2h2X2lvZXZlbnRmZCAqcCwgdTY0IHBhcnRpdGlvbl9pZClcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNjM2LVxcdFxcdG1zaHZfdW5yZWdpc3Rlcl9kb29yYmVsbChwYXJ0aXRpb25faWQsIHAtXFx1MDAzZWlvdm50ZmRfZG9vcmJlbGxfaWQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NjM3OlxcdGV2ZW50ZmRfY3R4X3B1dChwLVxcdTAwM2Vpb3ZudGZkX2V2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNjM4LVxcdGtmcmVlKHApO1xcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz02NzM9c3RhdGljIGludCBtc2h2X2Fzc2lnbl9pb2V2ZW50ZmQoc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNzY3LWZhaWw6XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo3Njg6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNzY5LVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz03NzM9c3RhdGljIGludCBtc2h2X2RlYXNzaWduX2lvZXZlbnRmZChzdHJ1Y3QgbXNodl9wYXJ0aXRpb24gKnB0LFxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy04MTQtXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo4MTU6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtODE2LVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmM9OTczPXN0YXRpYyBpbnQgbXNodl92dGxfc2ludF9pb2N0bF9zZXRfZXZlbnRmZChzdHJ1Y3QgbXNodl92dGxfc2V0X2V2ZW50ZmQgX191c2VyICphcmcpXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfdnRsX21haW4uYy05OTUtXFx0XFx0c3luY2hyb25pemVfcmN1KCk7XFxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmM6OTk2OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChvbGRfZXZlbnRmZCk7XFxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmMtOTk3LVxcdH1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yMDcyPXN0YXRpYyBpbnQgVVZFUkJTX0hBTkRMRVIoTUxYNV9JQl9NRVRIT0RfREVWWF9TVUJTQ1JJQkVfRVZFTlQpKFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIyNDktXFx0XFx0aWYgKGV2ZW50X3N1Yi1cXHUwMDNlZXZlbnRmZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6MjI1MDpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRfc3ViLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjI1MS1cXHRcXHR1dmVyYnNfdW9iamVjdF9wdXQoXFx1MDAyNmV2ZW50X3N1Yi1cXHUwMDNlZXZfZmlsZS1cXHUwMDNldW9iaik7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9Mjk0MD1zdGF0aWMgdm9pZCBkZXZ4X2ZyZWVfc3Vic2NyaXB0aW9uKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI5NDUtXFx0aWYgKGV2ZW50X3N1Yi1cXHUwMDNlZXZlbnRmZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6Mjk0NjpcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRfc3ViLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjk0Ny1cXHR1dmVyYnNfdW9iamVjdF9wdXQoXFx1MDAyNmV2ZW50X3N1Yi1cXHUwMDNlZXZfZmlsZS1cXHUwMDNldW9iaik7XFxuLS1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM9MTkxPXN0YXRpYyB2b2lkIGlycV9mcmVlKHZvaWQgKnByaXZhdGUpXFxuLS1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMTk0LVxcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYzoxOTU6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2X2N0eCk7XFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTE5Ni19XFxuLS1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM9MTk4PXN0YXRpYyBsb25nIGFmdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0yNTktXFx0XFx0aWYgKHJjKVxcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYzoyNjA6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2X2N0eCk7XFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTI2MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM9NDEwPXN0YXRpYyBpbnQgdmZpb19jY3dfbWRldl9zZXRfaXJxcyhzdHJ1Y3QgdmZpb19jY3dfcHJpdmF0ZSAqcHJpdmF0ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMtNDYwLVxcdFxcdFxcdGlmICgqY3R4KVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM6NDYxOlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCgqY3R4KTtcXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ2Mi1cXHRcXHRcXHQqY3R4ID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMtNDcwLVxcdFxcdFxcdGlmICgqY3R4KVxcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM6NDcxOlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCgqY3R4KTtcXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ3Mi1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMTcyPXN0YXRpYyBpbnQgdmZpb19hcF9zZXRfcmVxdWVzdF9pcnEoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTg3LVxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIxODg6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVxcdTAwM2VyZXFfdHJpZ2dlcik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIxODktXFx0XFx0bWF0cml4X21kZXYtXFx1MDAzZXJlcV90cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTk1LVxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIxOTY6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVxcdTAwM2VyZXFfdHJpZ2dlcik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIxOTctXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjIwNj1zdGF0aWMgaW50IHZmaW9fYXBfc2V0X2NmZ19jaGFuZ2VfaXJxKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyMjAtXFx0XFx0aWYgKG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyMjE6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjIyLVxcdFxcdG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyMjgtXFx0XFx0aWYgKG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyMjk6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjMwLVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYz0yMjg5PXN0YXRpYyB2b2lkIGZmc19kYXRhX2NsZWFyKHN0cnVjdCBmZnNfZGF0YSAqZmZzKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYy0yMzEzLVxcdGlmIChmZnMtXFx1MDAzZWZmc19ldmVudGZkKSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYzoyMzE0OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChmZnMtXFx1MDAzZWZmc19ldmVudGZkKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9mcy5jLTIzMTUtXFx0XFx0ZmZzLVxcdTAwM2VmZnNfZXZlbnRmZCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTQ5Nj1zdGF0aWMgdm9pZCB2ZHVzZV9kZXZfcmVzZXQoc3RydWN0IHZkdXNlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy01MzItXFx0XFx0XFx0aWYgKHZxLVxcdTAwM2VraWNrZmQpXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo1MzM6XFx0XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZxLVxcdTAwM2VraWNrZmQpO1xcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtNTM0LVxcdFxcdFxcdHZxLVxcdTAwM2VraWNrZmQgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYz0xMTk5PXN0YXRpYyBpbnQgdmR1c2Vfa2lja2ZkX3NldHVwKHN0cnVjdCB2ZHVzZV9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtMTIxOS1cXHRpZiAodnEtXFx1MDAzZWtpY2tmZClcXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jOjEyMjA6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZxLVxcdTAwM2VraWNrZmQpO1xcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtMTIyMS1cXHR2cS1cXHUwMDNla2lja2ZkID0gY3R4O1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM9NTg9c3RhdGljIGludCB2ZmlvX2NkeF9tc2lfc2V0X3ZlY3Rvcl9zaWduYWwoc3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTcxLVxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0ubmFtZSk7XFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6NzI6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXFx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0udHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtNzMtXFx0XFx0dmRldi1cXHUwMDNlY2R4X2lycXNbdmVjdG9yXS50cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTkzLVxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0ubmFtZSk7XFxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmM6OTQ6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTk1LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYz02MT1zdGF0aWMgaW50IHZmaW9fc2V0X3RyaWdnZXIoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTcyLVxcdFxcdGtmcmVlKGlycS1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmM6NzM6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGlycS1cXHUwMDNldHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmMtNzQtXFx0XFx0aXJxLVxcdTAwM2V0cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTk2LVxcdFxcdGtmcmVlKGlycS1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmM6OTc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTk4LVxcdFxcdGlycS1cXHUwMDNldHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00ND1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9ldmVudGZkX3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDgtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NDk6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQtXFx1MDAzZWN0eCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTAtXFx0a2ZyZWUoZXZlbnRmZCk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00MTM9c3RhdGljIGludCB2ZmlvX3BjaV9jb3JlX3BtX2VudHJ5X3dpdGhfd2FrZXVwKFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDM4LVxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NDM5OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChlZmRjdHgpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ0MC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTQ0ND1zdGF0aWMgdm9pZCBfX3ZmaW9fcGNpX3J1bnRpbWVfcG1fZXhpdChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NTAtXFx0XFx0aWYgKHZkZXYtXFx1MDAzZXBtX3dha2VfZXZlbnRmZF9jdHgpIHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo0NTE6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXFx1MDAzZXBtX3dha2VfZXZlbnRmZF9jdHgpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ1Mi1cXHRcXHRcXHR2ZGV2LVxcdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4ID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz0zMjQ9c3RhdGljIGludCB2ZmlvX2ludHhfc2V0X3NpZ25hbChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzQyLVxcdFxcdHZmaW9fdmlycWZkX2ZsdXNoX3RocmVhZChcXHUwMDI2Y3R4LVxcdTAwM2V1bm1hc2spO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzozNDM6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG9sZCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTM0NC1cXHR9XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9MzQ5PXN0YXRpYyB2b2lkIHZmaW9faW50eF9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNjItXFx0XFx0aWYgKGN0eC1cXHUwMDNldHJpZ2dlcilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6MzYzOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChjdHgtXFx1MDAzZXRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNjQtXFx0XFx0a2ZyZWUoY3R4LVxcdTAwM2VuYW1lKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz00NDc9c3RhdGljIGludCB2ZmlvX21zaV9zZXRfdmVjdG9yX3NpZ25hbChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNDY1LVxcdFxcdGtmcmVlKGN0eC1cXHUwMDNlbmFtZSk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjQ2NjpcXHRcXHRldmVudGZkX2N0eF9wdXQoY3R4LVxcdTAwM2V0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNDY3LVxcdFxcdHZmaW9faXJxX2N0eF9mcmVlKHZkZXYsIGN0eCwgdmVjdG9yKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy01MjUtb3V0X3B1dF9ldmVudGZkX2N0eDpcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6NTI2OlxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNTI3LW91dF9mcmVlX25hbWU6XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NjM0PXN0YXRpYyBpbnQgdmZpb19wY2lfc2V0X2ludHhfdHJpZ2dlcihzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNjYyLVxcdFxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgdHJpZ2dlcilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6NjYzOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNjY0LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTczND1zdGF0aWMgaW50IHZmaW9fcGNpX3NldF9jdHhfdHJpZ2dlcl9zaW5nbGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTc5My1cXHRcXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo3OTQ6XFx0XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGVmZGN0eCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTc5NS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jPTE4Mj1zdGF0aWMgaW50IHZmaW9fc2V0X3RyaWdnZXIoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LCBpbnQgaW5kZXgsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xODktXFx0XFx0ZGlzYWJsZV9pcnEoaXJxLVxcdTAwM2Vod2lycSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTkwOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpcnEtXFx1MDAzZXRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE5MS1cXHRcXHRpcnEtXFx1MDAzZXRyaWdnZXIgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM9MzUxPXZvaWQgdmZpb19wbGF0Zm9ybV9pcnFfY2xlYW51cChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zNjAtXFx0XFx0XFx0aWYgKHZkZXYtXFx1MDAzZWlycXNbaV0udHJpZ2dlcilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzozNjE6XFx0XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXFx1MDAzZWlycXNbaV0udHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMzYyLVxcdFxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZWlycXNbaV0ubmFtZSk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM9ODU9c3RhdGljIHZvaWQgdmlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmZpby92aXJxZmQuYy05MS1cXHRmbHVzaF93b3JrKFxcdTAwMjZ2aXJxZmQtXFx1MDAzZWluamVjdCk7XFxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jOjkyOlxcdGV2ZW50ZmRfY3R4X3B1dCh2aXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMvdmZpby92aXJxZmQuYy05My1cXG4tLVxcbmRyaXZlcnMvdmZpby92aXJxZmQuYz0xMTE9aW50IHZmaW9fdmlycWZkX2VuYWJsZSh2b2lkICpvcGFxdWUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtMTg0LWVycl9idXN5OlxcbmRyaXZlcnMvdmZpby92aXJxZmQuYzoxODU6XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jLTE4Ni1lcnJfZmQ6XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYz01MTk9c3RhdGljIHZvaWQgdmhvc3RfdmRwYV9jb25maWdfcHV0KHN0cnVjdCB2aG9zdF92ZHBhICp2KVxcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmMtNTIxLVxcdGlmICh2LVxcdTAwM2Vjb25maWdfY3R4KSB7XFxuZHJpdmVycy92aG9zdC92ZHBhLmM6NTIyOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2LVxcdTAwM2Vjb25maWdfY3R4KTtcXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01MjMtXFx0XFx0di1cXHUwMDNlY29uZmlnX2N0eCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYz01Mjc9c3RhdGljIGxvbmcgdmhvc3RfdmRwYV9zZXRfY29uZmlnX2NhbGwoc3RydWN0IHZob3N0X3ZkcGEgKnYsIHUzMiBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01NDEtXFx0aWYgKCFJU19FUlJfT1JfTlVMTChjdHgpKVxcbmRyaXZlcnMvdmhvc3QvdmRwYS5jOjU0MjpcXHRcXHRldmVudGZkX2N0eF9wdXQoY3R4KTtcXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01NDMtXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MTIwMz12b2lkIHZob3N0X2Rldl9jbGVhbnVwKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjA4LVxcdFxcdGlmIChkZXYtXFx1MDAzZXZxc1tpXS1cXHUwMDNlZXJyb3JfY3R4KVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjA5OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXFx1MDAzZXZxc1tpXS1cXHUwMDNlZXJyb3JfY3R4KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxMC1cXHRcXHRpZiAoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWtpY2spXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxMi1cXHRcXHRpZiAoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWNhbGxfY3R4LmN0eClcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIxMzpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWNhbGxfY3R4LmN0eCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTQtXFx0XFx0dmhvc3RfdnFfcmVzZXQoZGV2LCBkZXYtXFx1MDAzZXZxc1tpXSk7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxNy1cXHRpZiAoZGV2LVxcdTAwM2Vsb2dfY3R4KVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjE4OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXFx1MDAzZWxvZ19jdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjE5LVxcdGRldi1cXHUwMDNlbG9nX2N0eCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjE1MD1sb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI3NC1cXHRpZiAoIUlTX0VSUl9PUl9OVUxMKGN0eCkpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjIyNzU6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzYtXFx0aWYgKGZpbGVwKVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTIzMjE9bG9uZyB2aG9zdF9kZXZfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yNDE5LVxcdFxcdGlmIChjdHgpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjI0MjA6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTI0MjEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYz00Mz1zdGF0aWMgdm9pZCBhY3JuX2lvZXZlbnRmZF9zaHV0ZG93bihzdHJ1Y3QgYWNybl92bSAqdm0sIHN0cnVjdCBoc21faW9ldmVudGZkICpwKVxcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtNDYtXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM6NDc6XFx0ZXZlbnRmZF9jdHhfcHV0KHAtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTQ4LVxcdGxpc3RfZGVsKFxcdTAwMjZwLVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jPTc2PXN0YXRpYyBpbnQgYWNybl9pb2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBhY3JuX3ZtICp2bSxcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE0Mi1mYWlsOlxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjE0MzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTQ0LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYz0xNDc9c3RhdGljIGludCBhY3JuX2lvZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy0xNjgtXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM6MTY5OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy0xNzAtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jPTYwPXN0YXRpYyB2b2lkIGhzbV9pcnFmZF9zaHV0ZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtNzItXFx0ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoaXJxZmQtXFx1MDAzZWV2ZW50ZmQsIFxcdTAwMjZpcnFmZC1cXHUwMDNld2FpdCwgXFx1MDAyNmNudCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzo3MzpcXHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtNzQtXFx0a2ZyZWUoaXJxZmQpO1xcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz0xMTE9c3RhdGljIGludCBhY3JuX2lycWZkX2Fzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sIHN0cnVjdCBhY3JuX2lycWZkICphcmdzKVxcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xNzAtZmFpbDpcXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jOjE3MTpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xNzItb3V0Olxcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz0xNzc9c3RhdGljIGludCBhY3JuX2lycWZkX2RlYXNzaWduKHN0cnVjdCBhY3JuX3ZtICp2bSxcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTk1LVxcdG11dGV4X3VubG9jayhcXHUwMDI2dm0tXFx1MDAzZWlycWZkc19sb2NrKTtcXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jOjE5NjpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xOTctXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9OTEyPXN0YXRpYyB2b2lkIGlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy05MjEtXFx0ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoa2lycWZkLVxcdTAwM2VldmVudGZkLCBcXHUwMDI2a2lycWZkLVxcdTAwM2V3YWl0LCBcXHUwMDI2Y250KTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6OTIyOlxcdGV2ZW50ZmRfY3R4X3B1dChraXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy05MjMtXFx0a2ZyZWUoa2lycWZkKTtcXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz05NzY9c3RhdGljIGludCBwcml2Y21kX2lycWZkX2Fzc2lnbihzdHJ1Y3QgcHJpdmNtZF9pcnFmZCAqaXJxZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA0NC1lcnJvcl9ldmVudGZkOlxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMDQ1OlxcdGV2ZW50ZmRfY3R4X3B1dChraXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMDQ2LVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTEwNTI9c3RhdGljIGludCBwcml2Y21kX2lycWZkX2RlYXNzaWduKHN0cnVjdCBwcml2Y21kX2lycWZkICppcnFmZClcXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMDcyLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMDczOlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA3NC1cXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xMzQ2PXN0YXRpYyB2b2lkIGlvZXZlbnRmZF9mcmVlKHN0cnVjdCBwcml2Y21kX2tlcm5lbF9pb2V2ZW50ZmQgKmtpb2V2ZW50ZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTM0OC1cXHRsaXN0X2RlbChcXHUwMDI2a2lvZXZlbnRmZC1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjEzNDk6XFx0ZXZlbnRmZF9jdHhfcHV0KGtpb2V2ZW50ZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xMzUwLVxcdGtmcmVlKGtpb2V2ZW50ZmQpO1xcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTEzNTM9c3RhdGljIGludCBwcml2Y21kX2lvZXZlbnRmZF9hc3NpZ24oc3RydWN0IHByaXZjbWRfaW9ldmVudGZkICppb2V2ZW50ZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQwMy1lcnJvcl9ldmVudGZkOlxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxNDA0OlxcdGV2ZW50ZmRfY3R4X3B1dChraW9ldmVudGZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQwNS1cXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xNDExPXN0YXRpYyBpbnQgcHJpdmNtZF9pb2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IHByaXZjbWRfaW9ldmVudGZkICppb2V2ZW50ZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQ1NC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmlvcmVxX2xvY2spO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxNDU1OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQ1Ni1cXG4tLVxcbmZzL2Fpby5jPTExNTY9c3RhdGljIGlubGluZSB2b2lkIGlvY2JfZGVzdHJveShzdHJ1Y3QgYWlvX2tpb2NiICppb2NiKVxcbi0tXFxuZnMvYWlvLmMtMTE1OC1cXHRpZiAoaW9jYi1cXHUwMDNla2lfZXZlbnRmZClcXG5mcy9haW8uYzoxMTU5OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpb2NiLVxcdTAwM2VraV9ldmVudGZkKTtcXG5mcy9haW8uYy0xMTYwLVxcdGlmIChpb2NiLVxcdTAwM2VraV9maWxwKVxcbi0tXFxuZnMvZXZlbnRmZC5jPTg5PXN0YXRpYyB2b2lkIGV2ZW50ZmRfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4tLVxcbmZzL2V2ZW50ZmQuYy05Ni0vKipcXG5mcy9ldmVudGZkLmM6OTc6ICogZXZlbnRmZF9jdHhfcHV0IC0gUmVsZWFzZXMgYSByZWZlcmVuY2UgdG8gdGhlIGludGVybmFsIGV2ZW50ZmQgY29udGV4dC5cXG5mcy9ldmVudGZkLmMtOTgtICogQGN0eDogW2luXSBQb2ludGVyIHRvIGV2ZW50ZmQgY29udGV4dC5cXG4tLVxcbmZzL2V2ZW50ZmQuYy0xMDItICovXFxuZnMvZXZlbnRmZC5jOjEwMzp2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcXG5mcy9ldmVudGZkLmMtMTA0LXtcXG4tLVxcbmZzL2V2ZW50ZmQuYy0xMDktfVxcbmZzL2V2ZW50ZmQuYzoxMTA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcXG5mcy9ldmVudGZkLmMtMTExLVxcbmZzL2V2ZW50ZmQuYz0xMTI9c3RhdGljIGludCBldmVudGZkX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9ldmVudGZkLmMtMTE2LVxcdHdha2VfdXBfcG9sbChcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIEVQT0xMSFVQKTtcXG5mcy9ldmVudGZkLmM6MTE3OlxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmZzL2V2ZW50ZmQuYy0xMTgtXFx0cmV0dXJuIDA7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaD0zMT1zdHJ1Y3QgZmlsZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTM0LVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oOjM1OnZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KTtcXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC0zNi1zdHJ1Y3QgZmlsZSAqZXZlbnRmZF9mZ2V0KGludCBmZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWxfbWFzayhzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX19wb2xsX3QgbWFzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTY0LVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oOjY1OnN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtNjYte1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9ODg9c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbi0tXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtOTItXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg6OTM6REVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtOTQtXFxuLS1cXG5pb191cmluZy9ldmVudGZkLmM9Mjg9c3RhdGljIHZvaWQgaW9fZXZlbnRmZF9mcmVlKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxcbi0tXFxuaW9fdXJpbmcvZXZlbnRmZC5jLTMxLVxcbmlvX3VyaW5nL2V2ZW50ZmQuYzozMjpcXHRldmVudGZkX2N0eF9wdXQoZXZfZmQtXFx1MDAzZWNxX2V2X2ZkKTtcXG5pb191cmluZy9ldmVudGZkLmMtMzMtXFx0a2ZyZWUoZXZfZmQpO1xcbi0tXFxubW0vbWVtY29udHJvbC12MS5jPTEwMjA9c3RhdGljIHZvaWQgbWVtY2dfZXZlbnRfcmVtb3ZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xMDMyLVxcbm1tL21lbWNvbnRyb2wtdjEuYzoxMDMzOlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudC1cXHUwMDNlZXZlbnRmZCk7XFxubW0vbWVtY29udHJvbC12MS5jLTEwMzQtXFx0a2ZyZWUoZXZlbnQpO1xcbi0tXFxubW0vbWVtY29udHJvbC12MS5jPTEwOTQ9c3RhdGljIHNzaXplX3QgbWVtY2dfd3JpdGVfZXZlbnRfY29udHJvbChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTIyNy1vdXRfcHV0X2V2ZW50ZmQ6XFxubW0vbWVtY29udHJvbC12MS5jOjEyMjg6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50LVxcdTAwM2VldmVudGZkKTtcXG5tbS9tZW1jb250cm9sLXYxLmMtMTIyOS1vdXRfa2ZyZWU6XFxuLS1cXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmM9MTUzND1zdGF0aWMgdm9pZCBtdHR5X2Rpc2FibGVfaW50eChzdHJ1Y3QgbWRldl9zdGF0ZSAqbWRldl9zdGF0ZSlcXG4tLVxcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTM2LVxcdGlmIChtZGV2X3N0YXRlLVxcdTAwM2VpbnR4X2V2dGZkKSB7XFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jOjE1Mzc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1kZXZfc3RhdGUtXFx1MDAzZWludHhfZXZ0ZmQpO1xcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTM4LVxcdFxcdG1kZXZfc3RhdGUtXFx1MDAzZWludHhfZXZ0ZmQgPSBOVUxMO1xcbi0tXFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jPTE1NDQ9c3RhdGljIHZvaWQgbXR0eV9kaXNhYmxlX21zaShzdHJ1Y3QgbWRldl9zdGF0ZSAqbWRldl9zdGF0ZSlcXG4tLVxcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTQ2LVxcdGlmIChtZGV2X3N0YXRlLVxcdTAwM2Vtc2lfZXZ0ZmQpIHtcXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmM6MTU0NzpcXHRcXHRldmVudGZkX2N0eF9wdXQobWRldl9zdGF0ZS1cXHUwMDNlbXNpX2V2dGZkKTtcXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTU0OC1cXHRcXHRtZGV2X3N0YXRlLVxcdTAwM2Vtc2lfZXZ0ZmQgPSBOVUxMO1xcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jPTEyMz1pcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG52aXJ0L2t2bS9ldmVudGZkLmMtMTQ2LVxcdFxcdGlycWZkX3Jlc2FtcGxlcl9zaHV0ZG93bihpcnFmZCk7XFxudmlydC9rdm0vZXZlbnRmZC5jOjE0NzpcXHRcXHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXFx1MDAzZXJlc2FtcGxlZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNDgtXFx0fVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jLTE1NS0jZW5kaWZcXG52aXJ0L2t2bS9ldmVudGZkLmM6MTU2OlxcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cXHUwMDNlZXZlbnRmZCk7XFxudmlydC9rdm0vZXZlbnRmZC5jLTE1Ny1cXHRrZnJlZShpcnFmZCk7XFxuLS1cXG52aXJ0L2t2bS9ldmVudGZkLmM9MzcxPWt2bV9pcnFmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycWZkICphcmdzKVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jLTUxMi1cXHRpZiAocmVzYW1wbGVmZCBcXHUwMDI2XFx1MDAyNiAhSVNfRVJSKHJlc2FtcGxlZmQpKVxcbnZpcnQva3ZtL2V2ZW50ZmQuYzo1MTM6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHJlc2FtcGxlZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTQtXFxudmlydC9rdm0vZXZlbnRmZC5jLTUxNS1cXHRpZiAoZXZlbnRmZCBcXHUwMDI2XFx1MDAyNiAhSVNfRVJSKGV2ZW50ZmQpKVxcbnZpcnQva3ZtL2V2ZW50ZmQuYzo1MTY6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTctXFxuLS1cXG52aXJ0L2t2bS9ldmVudGZkLmM9NTkwPWt2bV9pcnFmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxZmQgKmFyZ3MpXFxuLS1cXG52aXJ0L2t2bS9ldmVudGZkLmMtNjA2LVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2a3ZtLVxcdTAwM2VpcnFmZHMubG9jayk7XFxudmlydC9rdm0vZXZlbnRmZC5jOjYwNzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxudmlydC9rdm0vZXZlbnRmZC5jLTYwOC1cXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyNDo0MC4yMzYyMjIwMTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTIzODc3MDc2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgZXZlbnRmZF9jdHhfcHV0YCBpcyBhbGwgb3ZlciB0aGUga2VybmVsLCBodWg/ICBLVk0sIEFJTywgaW9fdXJpbmcsIERSTSBzeW5jb2Jqcywgdmhvc3QsIGV2ZW4gVVNCIGdhZGdldCBzdHVmZuKApiB0aGF0J3MgYSAqbG90KiBvZiBwbGFjZXMuICBJdCdzIG9idmlvdXNseSBhIGNvcmUgZnVuY3Rpb24uIEFscmlnaHQsIEknbSBhbHJlYWR5IHRyYWNraW5nIGFsbCB0aGVzZSBjYWxscy5cblxuU28sIHRoZSBwYXRjaCBpcyBhZGRpbmcgYGlmIChJU19FUlJfT1JfTlVMTChjdHgpKSByZXR1cm47YCB0byBgZXZlbnRmZF9jdHhfcHV0KClgLiAgVGhhdCBsb29rcyBsaWtlIGEgZGVmZW5zaXZlIGNoZWNrLCBndWFyZGluZyBhZ2FpbnN0IGEgYmFkIHBvaW50ZXIuICBNYWtlcyBzZW5zZSwgcGFydGljdWxhcmx5IGdpdmVuIHRoZSBicm9hZCB1c2FnZSBvZiB0aGUgZnVuY3Rpb24uICBJIHdvbmRlciwgdGhvdWdoLCBhcmUgdGhlcmUgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHM/ICBJdCdzIGdvb2QgdGhhdCB0aGV5IGFyZSBmb2N1c2luZyBvbiBhZGRpbmcgdGhpcy5cblxuV2FpdCBhIHNlY29uZOKApiBiZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRoYXQncyBjYWxsaW5nIGl0LCBJIHNob3VsZCBhbHNvIGNoZWNrIGlmIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgaGFzIHRoZSBkdW1teSBzdGF0aWMgaW5saW5lIGZvciB3aGVuIGAhQ09ORklHX0VWRU5URkRgLiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZml4IGlzIGNvcnJlY3RseSBpbXBsZW1lbnRlZC4gQ2hlY2tpbmcgdGhhdCB0aGUgaGVhZGVyIGd1YXJkIHByZXZlbnRzIHRoZSBpc3N1ZXMgb24ga2VybmVscyB0aGF0IGRvbid0IGV2ZW4gdXNlIGV2ZW50ZmQgd291bGQgYmUgYSBnb29kIHN0ZXAgaGVyZS4gIExldCBtZSBqdW1wIG92ZXIgdG8gdGhvc2UgbGluZXMgYW5kIG1ha2Ugc3VyZSB0aGUgaW5saW5lIGlzIHdoYXQgSSBleHBlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTUzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjI0OjUyLjYyMzkzMjUyNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA1NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1NTpcXHRcXG4gIDU2OlxcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGV2ZW50ZmRfY3R4ICpldmVudGZkX2N0eF9mZGdldChpbnQgZmQpXFxuICA1NzpcXHR7XFxuICA1ODpcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTtcXG4gIDU5OlxcdH1cXG4gIDYwOlxcdFxcbiAgNjE6XFx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXFxuICA2MjpcXHR7XFxuICA2MzpcXHR9XFxuICA2NDpcXHRcXG4gIDY1OlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuICA2NjpcXHR7XFxuICA2NzpcXHRcXG4gIDY4OlxcdH1cXG4gIDY5OlxcdFxcbiAgNzA6XFx0c3RhdGljIGlubGluZSBpbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsXFxuICA3MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHR3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIF9fdTY0ICpjbnQpXFxuICA3MjpcXHR7XFxuICA3MzpcXHRcXHRyZXR1cm4gLUVOT1NZUztcXG4gIDc0OlxcdH1cXG4gIDc1OlxcdFxcbiAgNzY6XFx0c3RhdGljIGlubGluZSBib29sIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQodm9pZClcXG4gIDc3OlxcdHtcXG4gIDc4OlxcdFxcdHJldHVybiB0cnVlO1xcbiAgNzk6XFx0fVxcbiAgODA6XFx0XFxuICA4MTpcXHRzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcXG4gIDgyOlxcdHtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0fVxcbiAgODU6XFx0XFxuICA4NjpcXHQjZW5kaWZcXG4gIDg3OlxcdFxcbiAgODg6XFx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbiAgODk6XFx0e1xcbiAgOTA6XFx0XFx0ZXZlbnRmZF9zaWduYWxfbWFzayhjdHgsIDApO1xcbiAgOTE6XFx0fVxcbiAgOTI6XFx0XFxuICA5MzpcXHRERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSlcXG4gIDk0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDoyNDo1Mi42MjM5OTc2MTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODE1NTYyODYzOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBDcmFzaCBWdWxuZXJhYmlsaXR5IGFuZCBpdHMgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwb3RlbnRpYWwga2VybmVsIGlzc3VlLCBhbmQgaXQncyBhbGwgYWJvdXQgaG93IGBldmVudGZkYCBjb250ZXh0cyBhcmUgaGFuZGxlZCBpbiB0aGUgRFJNIChEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIpIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIHN5bmMgb2JqZWN0cy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24uXG5cbkkgc3RhcnRlZCBieSBsb29raW5nIGF0IGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAsIHdoZXJlIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGlzIGRlZmluZWQgZm9yIGBldmVudGZkX2N0eGAsIGFuZCB0aGVuIEkgdHJhY2VkIGl0cyB1c2FnZSBpbiBgZnMvZXZlbnRmZC5jYCBhbmQgc3BlY2lmaWNhbGx5IGBldmVudGZkX2N0eF9wdXRgLiBUaGlzIGZ1bmN0aW9uLCBjcnVjaWFsbHksIGRlY3JlbWVudHMgYSByZWZlcmVuY2UgY291bnRlciAoYGtyZWZgKSBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50ZmQgY29udGV4dC5cblxuVGhlIGNydXggb2YgdGhlIGlzc3VlIGlzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBhbmQgYGV2ZW50ZmRfY3R4X3B1dGAuICBUaGUgZnVuY3Rpb24gYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIHJldHJpZXZlcyBhbiBgZXZlbnRmZF9jdHhgIHVzaW5nIGBldmVudGZkX2N0eF9mZGdldGAuIFRoZSBjb2RlIHVzZXMgdGhlIGBfX2ZyZWVgIGF0dHJpYnV0ZSB0byBjYWxsIGBldmVudGZkX2N0eF9wdXRgIG9uIGV4aXQuIElmIGBldmVudGZkX2N0eF9mZGdldGAgZmFpbHMgKHJldHVybmluZyBhbiBlcnJvciBwb2ludGVyIGxpa2UgYC1FQkFERmAgb3IgYC1FSU5WQUxgKSwgdGhlIGZ1bmN0aW9uIGp1bXBzIHRvIGBlcnJfZmRnZXRgLCB0cmlnZ2VyaW5nIHRoZSBjbGVhbnVwIG9uIHRoZSBlcnJvciBwb2ludGVyLlxuXG5IZXJlJ3MgdGhlIHByb2JsZW0gSSBzZWUuICpCZWZvcmUqIHRoZSBmaXgsIGBldmVudGZkX2N0eF9wdXRgICpkaWRuJ3QqIGNoZWNrIGlmIHRoZSBgZXZlbnRmZF9jdHhgIHBvaW50ZXIgd2FzIGFuIGVycm9yIHBvaW50ZXIgKHVzaW5nIGBJU19FUlJfT1JfTlVMTGApLiBUaGlzIG1lYW50IHRoYXQsIGlmIGBldmVudGZkX2N0eF9mZGdldGAgZmFpbGVkLCBjYWxsaW5nIGBldmVudGZkX2N0eF9wdXRgIG9uIHRoZSByZXR1cm5lZCBlcnJvciBwb2ludGVyIHdvdWxkIGxlYWQgdG8gYW4gYXR0ZW1wdCB0byBkZXJlZmVyZW5jZSBhIGdhcmJhZ2UgcG9pbnRlciwgY2F1c2luZyBhIGtlcm5lbCBjcmFzaCAoc3BlY2lmaWNhbGx5LCBhIHBhZ2UgZmF1bHQgYmVjYXVzZSBgY3R4LVx1MDAzZWtyZWZgIHdvdWxkIGJlIGludmFsaWQpLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby5cblxuVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IGZpeGVzIHRoaXMgYnkgYWRkaW5nIGBpZiAoSVNfRVJSX09SX05VTEwoY3R4KSkgcmV0dXJuO2AgYXQgdGhlIGJlZ2lubmluZyBvZiBgZXZlbnRmZF9jdHhfcHV0YC4gVGhpcyBzaW1wbGUgY2hlY2sgbWFrZXMgdGhlIGZ1bmN0aW9uIHNhZmUgdG8gY2FsbCB3aXRoIGVycm9yIHBvaW50ZXJzLCBwcmV2ZW50aW5nIHRoZSBkZXJlZmVyZW5jZSBhbmQgdGhlIGNyYXNoLiAgSXQncyBhIHRleHRib29rIGV4YW1wbGUgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5nLCBhbmQgYSBjcml0aWNhbCBmaXggZm9yIGEgc2VyaW91cyB2dWxuZXJhYmlsaXR5LlxuXG5JIGFsc28gc2VlIHRoYXQgb3RoZXIgZmFpbHVyZSBwYXRocyBhcmUgaGFuZGxlZCBjb3JyZWN0bHksIHN1Y2ggYXMgaWYgYGt6YWxsb2Nfb2JqYCBmYWlscy4gSW4gdGhvc2UgY2FzZXMsIHRoZSBjaGVjayBhbHNvIHNhZmVseSBoYW5kbGVzIHRoZSBgZXZlbnRmZF9jdHhfcHV0YCBjYWxsLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgY29kZSBwYXRoIHJlYWNoYWJsZT8gVGhlIGFuc3dlciBpcyBZRVMhICBgRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRGAgaXMgZXhwb3NlZCB0aHJvdWdoIHZpcnRpby1ncHUgKGFuZCBwb3RlbnRpYWxseSBvdGhlciB2aXJ0dWFsIERSTSBkZXZpY2VzKS4gVGhpcyBtZWFucyBhIHVzZXItc3BhY2UgYXBwbGljYXRpb24gY291bGQgdHJpZ2dlciB0aGlzIGNvZGUsIHBvdGVudGlhbGx5IGV4cGxvaXRpbmcgdGhpcyB2dWxuZXJhYmlsaXR5IChiZWZvcmUgdGhlIGZpeCkgdG8gY3Jhc2ggdGhlIGtlcm5lbCBvciB3b3JzZS4gIEkgbmVlZCB0byBjaGVjayBpZiB2a21zIGhhcyBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk1MSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDozODoyOC4xODY4NjUxMjlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0ODgwMjkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2a21zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0NzA4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0zNjE9c291cmNlIFxcXCJkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWdcXFwiXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MzYyOnNvdXJjZSBcXFwiZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNjMtc291cmNlIFxcXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTg2PW9iai0kKENPTkZJR19EUk1fVkdFTSlcXHQrPSB2Z2VtL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODc6b2JqLSQoQ09ORklHX0RSTV9WS01TKVxcdCs9IHZrbXMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE4OC1vYmotJChDT05GSUdfRFJNX05PVVZFQVUpICs9bm91dmVhdS9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTE0OD1hbWRncHUteSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMTQ5LVxcdGRjZV92MTBfMC5vIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZToxNTA6XFx0YW1kZ3B1X3ZrbXMub1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTE1MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oPTYyMT1zdHJ1Y3QgYW1kZ3B1X2RldmljZSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC03MDctXFx0Ym9vbFxcdFxcdFxcdFxcdGVuYWJsZV92aXJ0dWFsX2Rpc3BsYXk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6NzA4OlxcdHN0cnVjdCBhbWRncHVfdmttc19vdXRwdXQgICAgICAgKmFtZGdwdV92a21zX291dHB1dDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC03MDktXFx0c3RydWN0IGFtZGdwdV9tb2RlX2luZm9cXHRcXHRtb2RlX2luZm87XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmMtMTAyLSNpbmNsdWRlIFxcXCJqcGVnX3Y0XzBfNS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYzoxMDM6I2luY2x1ZGUgXFxcImFtZGdwdV92a21zLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTEwNC0jaW5jbHVkZSBcXFwibWVzX3YxMV8wLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmM9MjY0Mj1zdGF0aWMgdm9pZCBhbWRncHVfZGlzY292ZXJ5X3NldF9zcmlvdl9kaXNwbGF5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NDQtXFx0YW1kZ3B1X2RldmljZV9zZXRfc3Jpb3ZfdmlydHVhbF9kaXNwbGF5KGFkZXYpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYzoyNjQ1OlxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jLTI2NDYtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jPTI2NDk9c3RhdGljIGludCBhbWRncHVfZGlzY292ZXJ5X3NldF9kaXNwbGF5X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNjb3ZlcnkuYy0yNjUxLVxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc2NvdmVyeS5jOjI2NTI6XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmMtMjY1My1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTgtI2luY2x1ZGUgXFxcIml2c3JjaWQvaXZzcmNpZF92aXNsYW5kczMwLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxOTojaW5jbHVkZSBcXFwiYW1kZ3B1X3ZrbXMuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTIwLSNpbmNsdWRlIFxcXCJhbWRncHVfZGlzcGxheS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0yNC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI1OiAqIERPQzogYW1kZ3B1X3ZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI2LSAqXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyNzogKiBUaGUgYW1kZ3B1IHZrbXMgaW50ZXJmYWNlIHByb3ZpZGVzIGEgdmlydHVhbCBLTVMgaW50ZXJmYWNlIGZvciBzZXZlcmFsIHVzZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjgtICogY2FzZXM6IGRldmljZXMgd2l0aG91dCBkaXNwbGF5IGhhcmR3YXJlLCBwbGF0Zm9ybXMgd2hlcmUgdGhlIGFjdHVhbCBkaXNwbGF5XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMxLSAqIHVzYWJsZS4gV2UgcHJldmlvdXNseSBlbXVsYXRlZCBhIGxlZ2FjeSBLTVMgaW50ZXJmYWNlLCBidXQgdGhlcmUgd2FzIGEgZGVzaXJlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozMjogKiB0byBtb3ZlIHRvIHRoZSBhdG9taWMgS01TIGludGVyZmFjZS4gVGhlIHZrbXMgZHJpdmVyIGRpZCBldmVyeXRoaW5nIHdlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMy0gKiBuZWVkZWQsIGJ1dCB3ZSB3YW50ZWQgS01TIHN1cHBvcnQgbmF0aXZlbHkgaW4gdGhlIGRyaXZlciB3aXRob3V0IGJ1ZmZlclxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzQtICogc2hhcmluZyBhbmQgdGhlIGFiaWxpdHkgdG8gc3VwcG9ydCBhbiBpbnN0YW5jZSBvZiBWS01TIHBlciBkZXZpY2UuIFdlIGZpcnN0XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozNTogKiBsb29rZWQgYXQgc3BsaXR0aW5nIHZrbXMgaW50byBhIHN0dWIgZHJpdmVyIGFuZCBhIGhlbHBlciBtb2R1bGUgdGhhdCBvdGhlclxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzYtICogZHJpdmVycyBjb3VsZCB1c2UgdG8gaW1wbGVtZW50IGEgdmlydHVhbCBkaXNwbGF5LCBidXQgdGhpcyBzdHJhdGVneSBlbmRlZCB1cFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzctICogYmVpbmcgbWVzc3kgZHVlIHRvIGRyaXZlciBzcGVjaWZpYyBjYWxsYmFja3MgbmVlZGVkIGZvciBidWZmZXIgbWFuYWdlbWVudC5cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjM4OiAqIFVsdGltYXRlbHksIGl0IHByb3ZlZCBlYXNpZXIgdG8gaW1wb3J0IHRoZSB2a21zIGNvZGUgYXMgaXQgbW9zdGx5IHVzZWQgY29yZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzktICogZHJtIGhlbHBlcnMgYW55d2F5Llxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQyOnN0YXRpYyBjb25zdCB1MzIgYW1kZ3B1X3ZrbXNfZm9ybWF0c1tdID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDMtXFx0RFJNX0ZPUk1BVF9YUkdCODg4OCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDUtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo0NjpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGFtZGdwdV92a21zX2NydGNfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00Ny1cXHQuc2V0X2NvbmZpZyAgICAgICAgICAgICA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU1LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgYW1kZ3B1X3ZrbXNfY3J0Y19oZWxwZXJfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01Ny1cXHREUk1fQ1JUQ19IRUxQRVJfVkJMQU5LX0ZVTkNTLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01OS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjYwOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTYxLVxcdFxcdFxcdCAgc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwgc3RydWN0IGRybV9wbGFuZSAqY3Vyc29yKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy02Ny1cXHRyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRldiwgY3J0YywgcHJpbWFyeSwgY3Vyc29yLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Njg6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmFtZGdwdV92a21zX2NydGNfZnVuY3MsIE5VTEwpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNjktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy03My1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjc0OlxcdGRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgXFx1MDAyNmFtZGdwdV92a21zX2NydGNfaGVscGVyX2Z1bmNzKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTc1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy04NS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjg2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBhbWRncHVfdmttc19jb25uZWN0b3JfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy04Ny1cXHQuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtOTMtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo5NDpzdGF0aWMgaW50IGFtZGdwdV92a21zX2Nvbm5fZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy05NS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTEzOC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjEzOTpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGFtZGdwdV92a21zX2Nvbm5faGVscGVyX2Z1bmNzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTQwOlxcdC5nZXRfbW9kZXMgICAgPSBhbWRncHVfdmttc19jb25uX2dldF9tb2RlcyxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTE0MS19O1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTQyLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGFtZGdwdV92a21zX3BsYW5lX2Z1bmNzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTQ0LVxcdC51cGRhdGVfcGxhbmVcXHRcXHQ9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTUxLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MTUyOnN0YXRpYyB2b2lkIGFtZGdwdV92a21zX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNTMtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqb2xkX3N0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNTctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxNTg6c3RhdGljIGludCBhbWRncHVfdmttc19wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xNTktXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2F0b21pY19jb21taXQgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0xODctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoxODg6c3RhdGljIGludCBhbWRncHVfdmttc19wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMTg5LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0yNTctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyNTg6c3RhdGljIHZvaWQgYW1kZ3B1X3ZrbXNfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI1OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI4NS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjI4NjpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgYW1kZ3B1X3ZrbXNfcHJpbWFyeV9oZWxwZXJfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyODc6XFx0LmF0b21pY191cGRhdGVcXHRcXHQ9IGFtZGdwdV92a21zX3BsYW5lX2F0b21pY191cGRhdGUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyODg6XFx0LmF0b21pY19jaGVja1xcdFxcdD0gYW1kZ3B1X3ZrbXNfcGxhbmVfYXRvbWljX2NoZWNrLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mjg5OlxcdC5wcmVwYXJlX2ZiXFx0XFx0PSBhbWRncHVfdmttc19wcmVwYXJlX2ZiLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MjkwOlxcdC5jbGVhbnVwX2ZiXFx0XFx0PSBhbWRncHVfdmttc19jbGVhbnVwX2ZiLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMjkxLX07XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0yOTItXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzoyOTM6c3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmFtZGdwdV92a21zX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldixcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTI5NC1cXHRcXHRcXHRcXHRcXHRcXHRlbnVtIGRybV9wbGFuZV90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMwNC1cXHRyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGV2LCBwbGFuZSwgMSBcXHUwMDNjXFx1MDAzYyBpbmRleCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMwNTpcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmFtZGdwdV92a21zX3BsYW5lX2Z1bmNzLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzA2OlxcdFxcdFxcdFxcdCAgICAgICBhbWRncHVfdmttc19mb3JtYXRzLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzA3OlxcdFxcdFxcdFxcdCAgICAgICBBUlJBWV9TSVpFKGFtZGdwdV92a21zX2Zvcm1hdHMpLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzA4LVxcdFxcdFxcdFxcdCAgICAgICBOVUxMLCB0eXBlLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzEzLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzE0OlxcdGRybV9wbGFuZV9oZWxwZXJfYWRkKHBsYW5lLCBcXHUwMDI2YW1kZ3B1X3ZrbXNfcHJpbWFyeV9oZWxwZXJfZnVuY3MpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzE1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYz0zMTk9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBkcm1fZW5jb2Rlcl9mdW5jc19jbGVhbnVwID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zMjItXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozMjM6c3RhdGljIGludCBhbWRncHVfdmttc19vdXRwdXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3RcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMyNDpcXHRcXHRcXHRcXHQgICBhbWRncHVfdmttc19vdXRwdXQgKm91dHB1dCwgaW50IGluZGV4KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzI1LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzMxLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzMyOlxcdHByaW1hcnkgPSBhbWRncHVfdmttc19wbGFuZV9pbml0KGRldiwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwgaW5kZXgpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzMzLVxcdGlmIChJU19FUlIocHJpbWFyeSkpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMzNS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjMzNjpcXHRyZXQgPSBhbWRncHVfdmttc19jcnRjX2luaXQoZGV2LCBjcnRjLCBwcmltYXJ5LCBjdXJzb3IpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzM3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTMzOS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjM0MDpcXHRyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IsIFxcdTAwMjZhbWRncHVfdmttc19jb25uZWN0b3JfZnVuY3MsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNDEtXFx0XFx0XFx0XFx0IERSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFMKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzQ2LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6MzQ3OlxcdGRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsIFxcdTAwMjZhbWRncHVfdmttc19jb25uX2hlbHBlcl9mdW5jcyk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zNDgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTM4Mi1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjM4Mzpjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGFtZGdwdV92a21zX21vZGVfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zODQtXFx0LmZiX2NyZWF0ZSA9IGFtZGdwdV9kaXNwbGF5X3VzZXJfZnJhbWVidWZmZXJfY3JlYXRlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zODgtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozODk6c3RhdGljIGludCBhbWRncHVfdmttc19zd19pbml0KHN0cnVjdCBhbWRncHVfaXBfYmxvY2sgKmlwX2Jsb2NrKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzkwLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzkzLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6Mzk0OlxcdGFkZXYtXFx1MDAzZWFtZGdwdV92a21zX291dHB1dCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgYW1kZ3B1X3ZrbXNfb3V0cHV0LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtMzk1LVxcdFxcdFxcdFxcdFxcdFxcdGFkZXYtXFx1MDAzZW1vZGVfaW5mby5udW1fY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzozOTY6XFx0aWYgKCFhZGV2LVxcdTAwM2VhbWRncHVfdmttc19vdXRwdXQpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy0zOTctXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQwMC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQwMTpcXHRhZGV2X3RvX2RybShhZGV2KS1cXHUwMDNlbW9kZV9jb25maWcuZnVuY3MgPSBcXHUwMDI2YW1kZ3B1X3ZrbXNfbW9kZV9mdW5jcztcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDE2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGV2LVxcdTAwM2Vtb2RlX2luZm8ubnVtX2NydGM7IGkrKykge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDE3OlxcdFxcdHIgPSBhbWRncHVfdmttc19vdXRwdXRfaW5pdChhZGV2X3RvX2RybShhZGV2KSwgXFx1MDAyNmFkZXYtXFx1MDAzZWFtZGdwdV92a21zX291dHB1dFtpXSwgaSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MTgtXFx0XFx0aWYgKHIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQzMS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQzMjpzdGF0aWMgaW50IGFtZGdwdV92a21zX3N3X2Zpbmkoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00MzMte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00NDEtXFx0ZHJtX2VkaWRfZnJlZShhZGV2LVxcdTAwM2Vtb2RlX2luZm8uYmlvc19oYXJkY29kZWRfZWRpZCk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo0NDI6XFx0a2ZyZWUoYWRldi1cXHUwMDNlYW1kZ3B1X3ZrbXNfb3V0cHV0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ0My1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDQ1LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NDQ2OnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfaHdfaW5pdChzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaylcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ0Ny17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTQ4My1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjQ4NDpzdGF0aWMgaW50IGFtZGdwdV92a21zX2h3X2Zpbmkoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00ODUte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy00ODgtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo0ODk6c3RhdGljIGludCBhbWRncHVfdmttc19zdXNwZW5kKHN0cnVjdCBhbWRncHVfaXBfYmxvY2sgKmlwX2Jsb2NrKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNDkwLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTAwLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTAxOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfcmVzdW1lKHN0cnVjdCBhbWRncHVfaXBfYmxvY2sgKmlwX2Jsb2NrKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTAyLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTA0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTA1OlxcdHIgPSBhbWRncHVfdmttc19od19pbml0KGlwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUwNi1cXHRpZiAocilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTEwLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTExOnN0YXRpYyBib29sIGFtZGdwdV92a21zX2lzX2lkbGUoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2spXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MTIte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MTUtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MTY6c3RhdGljIGludCBhbWRncHVfdmttc19zZXRfY2xvY2tnYXRpbmdfc3RhdGUoc3RydWN0IGFtZGdwdV9pcF9ibG9jayAqaXBfYmxvY2ssXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MTctXFx0XFx0XFx0XFx0XFx0ICBlbnVtIGFtZF9jbG9ja2dhdGluZ19zdGF0ZSBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTIxLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTIyOnN0YXRpYyBpbnQgYW1kZ3B1X3ZrbXNfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKHN0cnVjdCBhbWRncHVfaXBfYmxvY2sgKmlwX2Jsb2NrLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmMtNTIzLVxcdFxcdFxcdFxcdFxcdCAgZW51bSBhbWRfcG93ZXJnYXRpbmdfc3RhdGUgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTUyNy1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUyODpzdGF0aWMgY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBhbWRncHVfdmttc19pcF9mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUyOTpcXHQubmFtZSA9IFxcXCJhbWRncHVfdmttc1xcXCIsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MzA6XFx0LnN3X2luaXQgPSBhbWRncHVfdmttc19zd19pbml0LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTMxOlxcdC5zd19maW5pID0gYW1kZ3B1X3ZrbXNfc3dfZmluaSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzMjpcXHQuaHdfaW5pdCA9IGFtZGdwdV92a21zX2h3X2luaXQsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYzo1MzM6XFx0Lmh3X2ZpbmkgPSBhbWRncHVfdmttc19od19maW5pLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM0OlxcdC5zdXNwZW5kID0gYW1kZ3B1X3ZrbXNfc3VzcGVuZCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzNTpcXHQucmVzdW1lID0gYW1kZ3B1X3ZrbXNfcmVzdW1lLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM2OlxcdC5pc19pZGxlID0gYW1kZ3B1X3ZrbXNfaXNfaWRsZSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjUzNzpcXHQuc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlID0gYW1kZ3B1X3ZrbXNfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmM6NTM4OlxcdC5zZXRfcG93ZXJnYXRpbmdfc3RhdGUgPSBhbWRncHVfdmttc19zZXRfcG93ZXJnYXRpbmdfc3RhdGUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01MzktfTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU0MC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjU0MTpjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gYW1kZ3B1X3ZrbXNfaXBfYmxvY2sgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01NDItXFx0LnR5cGUgPSBBTURfSVBfQkxPQ0tfVFlQRV9EQ0UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jLTU0NS1cXHQucmV2ID0gMCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5jOjU0NjpcXHQuZnVuY3MgPSBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfZnVuY3MsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuYy01NDctfTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmgtMTEtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaDoxMjojZGVmaW5lIGRybV9jcnRjX3RvX2FtZGdwdV92a21zX291dHB1dCh0YXJnZXQpIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oOjEzOlxcdGNvbnRhaW5lcl9vZih0YXJnZXQsIHN0cnVjdCBhbWRncHVfdmttc19vdXRwdXQsIGNydGMuYmFzZSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oLTE0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmg6MTU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBhbWRncHVfdmttc19pcF9ibG9jaztcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmttcy5oLTE2LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92a21zLmg6MTc6c3RydWN0IGFtZGdwdV92a21zX291dHB1dCB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZrbXMuaC0xOC1cXHRzdHJ1Y3QgYW1kZ3B1X2NydGMgY3J0YztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTczLSNpbmNsdWRlIFxcXCJhbWRncHVfYW1ka2ZkLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmM6NzQ6I2luY2x1ZGUgXFxcImFtZGdwdV92a21zLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtNzUtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYz0yMTg2PWludCBjaWtfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIxOTYtXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmM6MjE5NzpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIxOTgtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy0yMjE0LVxcdFxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jOjIyMTU6XFx0XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYy0yMjE2LSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtMjIzMi1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYzoyMjMzOlxcdFxcdFxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMtMjIzNC0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIyNTItXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmM6MjI1MzpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jLTIyNTQtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9udi5jLTYxLSNpbmNsdWRlIFxcXCJqcGVnX3YzXzAuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9udi5jOjYyOiNpbmNsdWRlIFxcXCJhbWRncHVfdmttcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L252LmMtNjMtI2luY2x1ZGUgXFxcIm14Z3B1X252LmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTcyLSNpbmNsdWRlIFxcXCJhbWRncHVfZG0uaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jOjczOiNpbmNsdWRlIFxcXCJhbWRncHVfdmttcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtNzQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jPTI2ODc9aW50IHNpX3NldF9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI2OTktXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYzoyNzAwOlxcdFxcdFxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYy0yNzAxLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDX1NJKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYy0yNzE3LVxcdFxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmM6MjcxODpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjcxOS0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQ19TSSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMtMjczNC1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jOjI3MzU6XFx0XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jLTI3MzYtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jLTc1LSNpbmNsdWRlIFxcXCJzbXVpb192MTNfMC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NvYzE1LmM6NzY6I2luY2x1ZGUgXFxcImFtZGdwdV92a21zLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc29jMTUuYy03Ny0jaW5jbHVkZSBcXFwibXhncHVfYWkuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtNzktI2VuZGlmXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzo4MDojaW5jbHVkZSBcXFwiYW1kZ3B1X3ZrbXMuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTgxLSNpbmNsdWRlIFxcXCJteGdwdV92aS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYz0yMDQ4PWludCB2aV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDYxLVxcdFxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmM6MjA2MjpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjA2My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjA3MS1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jOjIwNzI6XFx0XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIwNzMtI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIwOTEtXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMDkyOlxcdFxcdFxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMDkzLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMTE0LVxcdFxcdGlmIChhZGV2LVxcdTAwM2VlbmFibGVfdmlydHVhbF9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmM6MjExNTpcXHRcXHRcXHRhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCBcXHUwMDI2YW1kZ3B1X3ZrbXNfaXBfYmxvY2spO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjExNi0jaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMtMjEzMC1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jOjIxMzE6XFx0XFx0XFx0YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgXFx1MDAyNmFtZGdwdV92a21zX2lwX2Jsb2NrKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIxMzItI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jLTIxNDktXFx0XFx0aWYgKGFkZXYtXFx1MDAzZWVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYzoyMTUwOlxcdFxcdFxcdGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsIFxcdTAwMjZhbWRncHVfdmttc19pcF9ibG9jayk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYy0yMTUxLSNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL2lndF9ydW5uZXIuc2g9MjU9Y2FzZSBcXFwiJERSSVZFUl9OQU1FXFxcIiBpblxcbmRyaXZlcnMvZ3B1L2RybS9jaS9pZ3RfcnVubmVyLnNoOjI2OiAgICBhbWRncHV8dmttc3xwYW50aG9yKVxcbmRyaXZlcnMvZ3B1L2RybS9jaS9pZ3RfcnVubmVyLnNoLTI3LSAgICAgICAgIyBDYW5ub3QgdXNlIEhXQ0lfS0VSTkVMX01PRFVMRVMgYXMgYXQgdGhhdCBwb2ludCB3ZSBkb24ndCBoYXZlIHRoZSBtb2R1bGUgaW4gL2xpYlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3Rlc3QueW1sPTQ2OT12aXJ0aW9fZ3B1Om5vbmU6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWwtNDc2LVxcbmRyaXZlcnMvZ3B1L2RybS9jaS90ZXN0LnltbDo0Nzc6dmttczpub25lOlxcbmRyaXZlcnMvZ3B1L2RybS9jaS90ZXN0LnltbC00NzgtICBleHRlbmRzOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3Rlc3QueW1sLTQ4MC0gIHZhcmlhYmxlczpcXG5kcml2ZXJzL2dwdS9kcm0vY2kvdGVzdC55bWw6NDgxOiAgICBEUklWRVJfTkFNRTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS90ZXN0LnltbC00ODItICAgIEdQVV9WRVJTSU9OOiBub25lXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjE6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0yLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9Nj1rbXNfY3Vyc29yX2xlZ2FjeUBsb25nLW5vbmJsb2NraW5nLW1vZGVzZXQtdnMtY3Vyc29yLWF0b21pY1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNy1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojg6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC05LSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MTM9a21zX2ZsaXBAYmFzaWMtZmxpcC12cy13Zl92YmxhbmtcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTE0LVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6MTU6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xNi0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTIwPWttc19mbGlwQGZsaXAtdnMtZXhwaXJlZC12YmxhbmstaW50ZXJydXB0aWJsZVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMjEtXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDoyMjojIEJvYXJkIE5hbWU6IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTIzLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9Mjc9a21zX2ZsaXBAZmxpcC12cy13Zl92YmxhbmstaW50ZXJydXB0aWJsZVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMjgtXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDoyOTojIEJvYXJkIE5hbWU6IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTMwLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MzQ9a21zX2ZsaXBAcGxhaW4tZmxpcC1mYi1yZWNyZWF0ZS1pbnRlcnJ1cHRpYmxlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0zNS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjM2OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMzctIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD00MT1rbXNfZmxpcEBwbGFpbi1mbGlwLXRzLWNoZWNrXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC00Mi1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjQzOiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNDQtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD00OD1rbXNfZmxpcEBwbGFpbi1mbGlwLXRzLWNoZWNrLWludGVycnVwdGlibGVcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTQ5LVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ6NTA6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC01MS0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC82MWVkMjZhZi0wNjJjLTQ0M2MtOWRmMi1kMWVlMzE5ZjNmYjBAY29sbGFib3JhLmNvbS9ULyN1XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0PTU1PWttc19mbGlwQGZsaXAtdnMtYWJzb2x1dGUtd2ZfdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC01Ni1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjU3OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNTgtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD02Mj1rbXNfZmxpcEBmbGlwLXZzLWFic29sdXRlLXdmX3ZibGFuay1pbnRlcnJ1cHRpYmxlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC02My1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjY0OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNjUtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD02OT1rbXNfZmxpcEBmbGlwLXZzLWJsb2NraW5nLXdmLXZibGFua1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNzAtXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDo3MTojIEJvYXJkIE5hbWU6IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTcyLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzYxZWQyNmFmLTA2MmMtNDQzYy05ZGYyLWQxZWUzMTlmM2ZiMEBjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9NzY9a21zX2N1cnNvcl9sZWdhY3lAZmxpcC12cy1jdXJzb3ItdmFyeWluZy1zaXplXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC03Ny1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojc4OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtNzktIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD04Mz1rbXNfZmxpcEBmbGlwLXZzLWV4cGlyZWQtdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC04NC1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojg1OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtODYtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvNjFlZDI2YWYtMDYyYy00NDNjLTlkZjItZDFlZTMxOWYzZmIwQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD05MD1rbXNfcGlwZV9jcmNfYmFzaWNAbm9uYmxvY2tpbmctY3JjLWZyYW1lLXNlcXVlbmNlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC05MS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjkyOiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtOTMtIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvMjM2NGE2YmYtZTZiYy00NzQxLThjNzgtY2VhOGJkYjA2ZTAzQGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD05Nz1rbXNfZmxpcEBtb2Rlc2V0LXZzLXZibGFuay1yYWNlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC05OC1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0Ojk5OiMgQm9hcmQgTmFtZTogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQtMTAwLSMgQnVnIFJlcG9ydDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsL2Y3ZDcyZWQ5LWE3ODMtNDZkNy1iNzVkLTU0MDcyYmRhMzJhM0Bjb2xsYWJvcmEuY29tL1QvI3VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLWZsYWtlcy50eHQ9MTA0PWttc19waXBlX2NyY19iYXNpY0BzdXNwZW5kLXJlYWQtY3JjXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMDUtXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dDoxMDY6IyBCb2FyZCBOYW1lOiB2a21zXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dC0xMDctIyBCdWcgUmVwb3J0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvOThkM2JhNTQtYmNiOS00MWFiLWFkYjEtYTE4YmE2MWVlMmU0QGNvbGxhYm9yYS5jb20vVC8jdVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtZmxha2VzLnR4dD0xMTE9a21zX3BsYW5lQHBsYW5lLXBhbm5pbmctYm90dG9tLXJpZ2h0LXN1c3BlbmRcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTExMi1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0OjExMzojIEJvYXJkIE5hbWU6IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1mbGFrZXMudHh0LTExNC0jIEJ1ZyBSZXBvcnQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC9iNThkMTVlYi0wOTRkLTRhYzItYWFkMy04M2U1MThjMmY1NWRAY29sbGFib3JhLmNvbS9ULyN1XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTojIGtlZXBzIHByaW50aW5nIHZrbXNfdmJsYW5rX3NpbXVsYXRlOiB2YmxhbmsgdGltZXIgb3ZlcnJ1biBhbmQgbmV2ZXIgZW5kc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0yLWttc19pbnZhbGlkX21vZGVAaW50LW1heC1jbG9ja1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0PTY9a21zX2N1cnNvcl9jcmMuKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEwLSMgSGFyZHdhcmUgbmFtZTogQ2hyb21pdW1PUyBjcm9zdm0sIEJJT1MgMFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxMTojIFdvcmtxdWV1ZTogdmttc19jb21wb3NlciB2a21zX2NvbXBvc2VyX3dvcmtlciBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTI6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MWM3LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xMy0jIENvZGU6IGM5IDBmIDg0IDZhIDAxIDAwIDAwIDhiIDQyIDMwIDJiIDQyIDI4IDQxIDM5IGM1IDBmIDhjIDZmIDAxIDAwIDAwIDQ5IDgzIGM3IDAxIDQ5IDM5IGRmIDc0IDNiIDRiIDhiIDM0IGZjIDQ4IDhiIDk2IDQ4IDAxIDAwIDAwIFxcdTAwM2M4YlxcdTAwM2UgNDIgNzggODkgYzEgLi4uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMjgtIyAgPyBhc21fZXhjX3BhZ2VfZmF1bHQrMHgyNi8weDMwXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjI5OiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MWM3LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDozMDojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDJhMy8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMzEtIyAgPyBzcnNvX3JldHVybl90aHVuaysweDUvMHg1ZlxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDozMjojICB2a21zX2NvbXBvc2VyX3dvcmtlcisweDIwNS8weDI0MCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMzMtIyAgcHJvY2Vzc19vbmVfd29yaysweDFmNC8weDZiMFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTQyLSMgIFxcdTAwM2MvVEFTS1xcdTAwM2VcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6NDM6IyBNb2R1bGVzIGxpbmtlZCBpbjogdmttc1xcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC00NC0jIENSMjogMDAwMDAwMDAwMDAwMDA3OFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC00NS0jIC0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDo0NjojIFJJUDogMDAxMDpjb21wb3NlX2FjdGl2ZV9wbGFuZXMrMHgxYzcvMHg0ZTAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTQ3LSMgQ29kZTogYzkgMGYgODQgNmEgMDEgMDAgMDAgOGIgNDIgMzAgMmIgNDIgMjggNDEgMzkgYzUgMGYgOGMgNmYgMDEgMDAgMDAgNDkgODMgYzcgMDEgNDkgMzkgZGYgNzQgM2IgNGIgOGIgMzQgZmMgNDggOGIgOTYgNDggMDEgMDAgMDAgXFx1MDAzYzhiXFx1MDAzZSA0MiA3OCA4OSBjMSAuLi5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC02MS0jIEhhcmR3YXJlIG5hbWU6IENocm9taXVtT1MgY3Jvc3ZtLCBCSU9TIDBcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6NjI6IyBXb3JrcXVldWU6IHZrbXNfY29tcG9zZXIgdmttc19jb21wb3Nlcl93b3JrZXIgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjYzOiMgUklQOiAwMDEwOmNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDFjNy8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtNjQtIyBDb2RlOiBjOSAwZiA4NCA2YSAwMSAwMCAwMCA4YiA0MiAzMCAyYiA0MiAyOCA0MSAzOSBjNSAwZiA4YyA2ZiAwMSAwMCAwMCA0OSA4MyBjNyAwMSA0OSAzOSBkZiA3NCAzYiA0YiA4YiAzNCBmYyA0OCA4YiA5NiA0OCAwMSAwMCAwMCBcXHUwMDNjOGJcXHUwMDNlIDQyIDc4IDg5IGMxIC4uLlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTc5LSMgID8gYXNtX2V4Y19wYWdlX2ZhdWx0KzB4MjYvMHgzMFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDo4MDojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDFjNy8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6ODE6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMrMHgyYTMvMHg0ZTAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTgyLSMgID8gc3Jzb19yZXR1cm5fdGh1bmsrMHg1LzB4NWZcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6ODM6IyAgdmttc19jb21wb3Nlcl93b3JrZXIrMHgyMDUvMHgyNDAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTg0LSMgIHByb2Nlc3Nfb25lX3dvcmsrMHgxZjQvMHg2YjBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05My0jICBcXHUwMDNjL1RBU0tcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0Ojk0OiMgTW9kdWxlcyBsaW5rZWQgaW46IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtOTUtIyBDUjI6IDAwMDAwMDAwMDAwMDAwNzhcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtOTYtIyAtLS1bIGVuZCB0cmFjZSAwMDAwMDAwMDAwMDAwMDAwIF0tLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6OTc6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MWM3LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC05OC0jIENvZGU6IGM5IDBmIDg0IDZhIDAxIDAwIDAwIDhiIDQyIDMwIDJiIDQyIDI4IDQxIDM5IGM1IDBmIDhjIDZmIDAxIDAwIDAwIDQ5IDgzIGM3IDAxIDQ5IDM5IGRmIDc0IDNiIDRiIDhiIDM0IGZjIDQ4IDhiIDk2IDQ4IDAxIDAwIDAwIFxcdTAwM2M4YlxcdTAwM2UgNDIgNzggODkgYzEgLi4uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTEyLSMgSGFyZHdhcmUgbmFtZTogQ2hyb21pdW1PUyBjcm9zdm0sIEJJT1MgMFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxMTM6IyBXb3JrcXVldWU6IHZrbXNfY29tcG9zZXIgdmttc19jb21wb3Nlcl93b3JrZXIgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjExNDojIFJJUDogMDAxMDpjb21wb3NlX2FjdGl2ZV9wbGFuZXMrMHgzNDQvMHg0ZTAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTExNS0jIENvZGU6IDZhIDM0IDBmIDhlIDkxIGZlIGZmIGZmIDQ0IDg5IGVhIDQ4IDhkIDdjIDI0IDQ4IGU4IDcxIGYwIGZmIGZmIDRiIDhiIDA0IGZjIDQ4IDhiIDRjIDI0IDUwIDQ4IDhiIDdjIDI0IDQwIDQ4IDhiIDgwIDQ4IDAxIDAwIDAwIFxcdTAwM2M0OFxcdTAwM2UgNjMgNzAgMTggOGIuLi5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xMzAtIyAgPyBhc21fZXhjX3BhZ2VfZmF1bHQrMHgyNi8weDMwXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjEzMTojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDM0NC8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTMyOiMgID8gY29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MzJmLzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xMzMtIyAgPyBzcnNvX3JldHVybl90aHVuaysweDUvMHg1ZlxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxMzQ6IyAgdmttc19jb21wb3Nlcl93b3JrZXIrMHgyMDUvMHgyNDAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTEzNS0jICBwcm9jZXNzX29uZV93b3JrKzB4MjAxLzB4NmMwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ0LSMgIFxcdTAwM2MvVEFTS1xcdTAwM2VcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTQ1OiMgTW9kdWxlcyBsaW5rZWQgaW46IHZrbXNcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTQ2LSMgQ1IyOiAwMDAwMDAwMDAwMDAwMDE4XFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE0Ny0jIC0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxNDg6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MzQ0LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xNDktIyBDb2RlOiA2YSAzNCAwZiA4ZSA5MSBmZSBmZiBmZiA0NCA4OSBlYSA0OCA4ZCA3YyAyNCA0OCBlOCA3MSBmMCBmZiBmZiA0YiA4YiAwNCBmYyA0OCA4YiA0YyAyNCA1MCA0OCA4YiA3YyAyNCA0MCA0OCA4YiA4MCA0OCAwMSAwMCAwMCBcXHUwMDNjNDhcXHUwMDNlIDYzIDcwIDE4IDhiLi4uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ9MTYwPWttc19jdXJzb3JfZWRnZV93YWxrQDEyOHgxMjgtcmlnaHQtZWRnZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE2My0jIEhhcmR3YXJlIG5hbWU6IENocm9taXVtT1MgY3Jvc3ZtLCBCSU9TIDBcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTY0OiMgV29ya3F1ZXVlOiB2a21zX2NvbXBvc2VyIHZrbXNfY29tcG9zZXJfd29ya2VyIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxNjU6IyBSSVA6IDAwMTA6Y29tcG9zZV9hY3RpdmVfcGxhbmVzKzB4MzQ0LzB4NGUwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xNjYtIyBDb2RlOiA2YSAzNCAwZiA4ZSA5MSBmZSBmZiBmZiA0NCA4OSBlYSA0OCA4ZCA3YyAyNCA0OCBlOCA3MSBmMCBmZiBmZiA0YiA4YiAwNCBmYyA0OCA4YiA0YyAyNCA1MCA0OCA4YiA3YyAyNCA0MCA0OCA4YiA4MCA0OCAwMSAwMCAwMCBcXHUwMDNjNDhcXHUwMDNlIDYzIDcwIDE4IDhiLi4uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTgzLSMgID8gYXNtX2V4Y19wYWdlX2ZhdWx0KzB4MjYvMHgzMFxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dDoxODQ6IyAgPyBjb21wb3NlX2FjdGl2ZV9wbGFuZXMrMHgzNDQvMHg0ZTAgW3ZrbXNdXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE4NTojICA/IGNvbXBvc2VfYWN0aXZlX3BsYW5lcysweDMyZi8weDRlMCBbdmttc11cXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQtMTg2LSMgID8gc3Jzb19yZXR1cm5fdGh1bmsrMHg1LzB4NWZcXG5kcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3ZrbXMtbm9uZS1za2lwcy50eHQ6MTg3OiMgIHZrbXNfY29tcG9zZXJfd29ya2VyKzB4MjA1LzB4MjQwIFt2a21zXVxcbmRyaXZlcnMvZ3B1L2RybS9jaS94ZmFpbHMvdmttcy1ub25lLXNraXBzLnR4dC0xODgtIyAgcHJvY2Vzc19vbmVfd29yaysweDIwMS8weDZjMFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0LTE5Ny0jICBcXHUwMDNjL1RBU0tcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21zLW5vbmUtc2tpcHMudHh0OjE5ODojIE1vZHVsZXMgbGlua2VkIGluOiB2a21zXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM4OjI5LjAzNTY3NTg0NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1MTAyMzkyMjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgVktNUyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgcmVhbGx5IHVuZGVyc3RhbmQgd2hhdCB0aGUgVmlydHVhbCBLTVMgZHJpdmVyLCBgdmttc19kcnYuY2AsIGJyaW5ncyB0byB0aGUgdGFibGUuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGNhcGFiaWxpdGllcy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgb2YgY2hlY2tpbmcgb3V0IGBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jYCB0byBkbyBhIGRlZXAgZGl2ZSBhbmQgZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGUgZHJpdmVyJ3MgZmVhdHVyZSBzZXQuIFRoaXMgd2lsbCBoZWxwIGluZm9ybSBhIGJldHRlciBhcmNoaXRlY3R1cmFsIHBsYW4uIFNvLCBJ4oCZbSBnb2luZyB0byBzdGFydCBieSBnb2luZyB0aHJvdWdoIHRoZSBjb2RlLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhpcyB0aGluZyAqYWN0dWFsbHkqIGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODg3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzg6MzQuMTM4MDcxNjA2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYzOTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcml2ZXJfZmVhdHVyZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3ZrbXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmM9OTM9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIHZrbXNfZHJpdmVyID0ge1xcbmRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmM6OTQ6XFx0LmRyaXZlcl9mZWF0dXJlc1xcdD0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDIHwgRFJJVkVSX0dFTSxcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jLTk1LVxcdC5mb3BzXFx0XFx0XFx0PSBcXHUwMDI2dmttc19kcml2ZXJfZm9wcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzg6MzQuMTg2NzIwMTA1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjk3OTc0NTM2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRGlnZ2luZyBpbnRvIFN5bmNocm9uaXphdGlvbiBPYmplY3RzKipcblxuQWxyaWdodCwgc28gYHZrbXNgIGlzIGdpdmluZyBtZSBzb21lIHRyb3VibGUgd2l0aCBgRFJJVkVSX1NZTkNPQkpfVElNRUxJTkVgLiBUaGF0J3MgYSBiaXQgdW5leHBlY3RlZC4gQnV0LCBob2xkIG9uIGEgbWludXRlLCBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgYHZpcnRpb19ncHVgIG1pZ2h0IHN1cHBvcnQgaXQuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0LiBIbW0sIGxldCBtZSBqdXN0IG9wZW4gdGhlIHNvdXJjZSB0cmVlLi4uXG5cbk9rYXksIG5vdywgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYHZnZW1gIGp1c3QgaW4gY2FzZSBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuY2AgYW5kIHNlZSBpZiB0aGUgdGltZWxpbmUgc3VwcG9ydCBpcyBpbiB0aGVyZSwgb3IgaWYgSSBzaG91bGQgZXZlbiBleHBlY3QgaXQgdG8gYmUuIEJldHRlciB0byBiZSB0aG9yb3VnaCwgSSBzdXBwb3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDIyMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM4OjQzLjk4NDE3NjgzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA5MzU3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJpdmVyX2ZlYXR1cmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92Z2VtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jPTExMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgdmdlbV9kcml2ZXIgPSB7XFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYzoxMTE6XFx0LmRyaXZlcl9mZWF0dXJlc1xcdFxcdD0gRFJJVkVSX0dFTSB8IERSSVZFUl9SRU5ERVIsXFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYy0xMTItXFx0Lm9wZW5cXHRcXHRcXHRcXHQ9IHZnZW1fb3BlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzg6NDQuMDM1MTIyMTA1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI0NDc1ODg1OTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZpcnRpby1HUFUgYW5kIFN5bmNvYmo6IEEgU3l6a2FsbGVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdmlydGlvLWdwdSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgaXRzIGRyaXZlciBpbXBsZW1lbnRhdGlvbiAoYGRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9kcnYuY2ApLiBJdCdzIGEgc3RhbmRhcmQgdmlydGlvIGhhcmR3YXJlIGNvbXBvbmVudCB0aGF0J3Mgd2VsbC1zdXBwb3J0ZWQgaW4gUUVNVS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzZWUgaXQncyBhIG1vZGVzZXR0aW5nIGRyaXZlciwgc3VwcG9ydHMgR0VNLCByZW5kZXJpbmcsIGF0b21pYyBvcGVyYXRpb25zLCBzeW5jIG9iamVjdHMsIHRpbWVsaW5lcyBhbmQgZXZlbiBjdXJzb3IgaG90IHNwb3RzLlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCBgZXZlbnRmZGAuIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBjb3JlIGZpbGVzeXN0ZW0gKGBmcy9ldmVudGZkLmNgKSwgd2l0aCBmdW5jdGlvbnMgbGlrZSBgZXZlbnRmZF9jdHhfcHV0YCBsaXZpbmcgdGhlcmUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBkb2VzIHN5emthbGxlciwgbXkgZ28tdG8gZnV6emluZyB0b29sLCBoYXZlIERSTSBpb2N0bHMgZW5hYmxlZD8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IHN1cHBvcnQgYERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkRgP1xuXG5BIHF1aWNrIGNoZWNrIGNvbmZpcm1zIGl0ISBTeXprYWxsZXIgKmRvZXMqIGhhdmUgZGVzY3JpcHRpb25zIGZvciBgZHJtX3N5bmNvYmpfZXZlbnRmZGAgaW4gaXRzIGBzeXMvbGludXgvZHJtLnR4dGAgZmlsZS4gUGVyZmVjdCEgSXQgZXZlbiBoYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uOiBgaW9jdGwkRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRChmZCBmZF9kcm0sIGNtZCBjb25zdFtEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEXSwgYXJnIHB0cltpbiwgZHJtX3N5bmNvYmpfZXZlbnRmZF0pYC5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzLiBXaGF0IGNvbmZpZ3VyYXRpb25zIGFjdHVhbGx5IGVuYWJsZSBgZHJtX3N5bmNvYmouY2A/IEdvdHRhIGRpZyB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGVzLiBUaW1lIHRvIGdyZXAgZm9yIGBkcm1fc3luY29iai5vYCBpbiB0aGUgYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWAgdG8gZmluZCBvdXQuIFRoaXMgaXMgYWxsIHZlcnkgcHJvbWlzaW5nIGZvciBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDU5OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDozOTowOC41MTEwMTEzMTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzI0NzcyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fc3luY29ialxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTM1PWRybS15IDo9IFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS02OC1cXHRkcm1fcmVjdC5vIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6Njk6XFx0ZHJtX3N5bmNvYmoubyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTcwLVxcdGRybV9zeXNmcy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzk6MDkuMDQ0MjY5MDY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjY2NDA0ODgzNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBJbnF1aXJ5OiBEUk0gU3luYyBPYmplY3RzIGFuZCBFdmVudEZEKipcblxuT2theSwgc28gYGRybV9zeW5jb2JqLm9gIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChEUk0pIGVjb3N5c3RlbSDigJMgYnVpbHQgaW4gd2hlbmV2ZXIgYENPTkZJR19EUk1gIGlzIHR1cm5lZCBvbiwgd2hpY2ggaXMgZ29vZCB0byByZW1lbWJlciBmb3IgZnV0dXJlIGRlYnVnZ2luZy4gSXQncyBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5LCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBrZXkuIEFuZCwgdG8gYmUgc3BlY2lmaWMsIGB2aXJ0aW8tZ3B1YCdzIGluY2x1c2lvbiBpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfRFJNX1ZJUlRJT19HUFVgLCBzbyBJJ2xsIGtlZXAgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiBtaW5kLlxuXG5Ob3csIG15IGN1cnJlbnQgZm9jdXMgaXMgb24gYGZzL2V2ZW50ZmQuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgaXMgYW4gb3ZlcmxhcCBpbiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBmcy9NYWtlZmlsZWAgdG8gc2VlIGhvdyBgZXZlbnRmZC5vYCBpcyBoYW5kbGVkIGF0IGJ1aWxkIHRpbWUuIEEgcXVpY2sgZ3JlcCBzaG91bGQgcmV2ZWFsIGFueSByZWxldmFudCBydWxlcyBvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlc2Ugb3RoZXIgRFJNIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzkzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6Mzk6MTUuNjg0NzYwMTk4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgxODQzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXZlbnRmZFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9NYWtlZmlsZT0yOD1vYmotJChDT05GSUdfVElNRVJGRClcXHRcXHQrPSB0aW1lcmZkLm9cXG5mcy9NYWtlZmlsZToyOTpvYmotJChDT05GSUdfRVZFTlRGRClcXHRcXHQrPSBldmVudGZkLm9cXG5mcy9NYWtlZmlsZS0zMC1vYmotJChDT05GSUdfQUlPKSAgICAgICAgICAgICAgICs9IGFpby5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM5OjE1LjgyMjk1MjA1NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2NzU0MjkwNTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIFZpcnR1YWxpemVkIEdyYXBoaWNzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gZ3JhcGhpY3MgYW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBldmVudGZkIGFuZCBEUk0gYXJlIGludGVncmF0ZWQsIGdpdmVuIHRoZWlyIGltcG9ydGFuY2UgaW4gbW9kZXJuIGdyYXBoaWNzIHN0YWNrcy4gSSB3YW50IHRvIGRlbHZlIGludG8gdGhpcyBpbnRlcmFjdGlvbiBmdXJ0aGVyLlxuXG5JJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgQ09ORklHX0RSTV9WSVJUSU9fR1BVYCBvcHRpb24uIFRoaXMgc2VlbXMgbGlrZSB0aGUga2V5IHRvIHZpcnR1YWxpemVkIGdyYXBoaWNzIHRocm91Z2ggdGhlIHZpcnRpbyBpbnRlcmZhY2UuIFRvIHVuZGVyc3RhbmQgaG93IGl0J3MgY29uZmlndXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCBJJ2xsIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIEtjb25maWcgZmlsZSBub3cuIFRoaXMgd2lsbCBsaWtlbHkgc2hvdyBtZSB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgYENPTkZJR19EUk1fVklSVElPX0dQVWAsIHdoaWNoIGZlYXR1cmVzIGNhbiBiZSBlbmFibGVkLCBhbmQgaG93IGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHZpcnRpby1iYXNlZCB2aXJ0dWFsaXplZCBHUFVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTc2OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM5OjIyLjU3NzI0NjA5M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBEUk1fVklSVElPX0dQVVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBHUFUgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgVklSVElPX01FTlUgXFx1MDAyNlxcdTAwMjYgTU1VXFxuICAgNTpcXHRcXHRzZWxlY3QgVklSVElPXFxuICAgNjpcXHRcXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG4gICA3OlxcdFxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbiAgIDg6XFx0XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuICAgOTpcXHRcXHRzZWxlY3QgVklSVElPX0RNQV9TSEFSRURfQlVGRkVSXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgICBUaGlzIGlzIHRoZSB2aXJ0dWFsIEdQVSBkcml2ZXIgZm9yIHZpcnRpby4gIEl0IGNhbiBiZSB1c2VkIHdpdGhcXG4gIDEyOlxcdFxcdCAgIFFFTVUgYmFzZWQgVk1NcyAobGlrZSBLVk0gb3IgWGVuKS5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICAgSWYgdW5zdXJlIHNheSBNLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb25maWcgRFJNX1ZJUlRJT19HUFVfS01TXFxuICAxNzpcXHRcXHRib29sIFxcXCJWaXJ0aW8gR1BVIGRyaXZlciBtb2Rlc2V0dGluZyBzdXBwb3J0XFxcIlxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBEUk1fVklSVElPX0dQVVxcbiAgMTk6XFx0XFx0ZGVmYXVsdCB5XFxuICAyMDpcXHRcXHRoZWxwXFxuICAyMTpcXHRcXHQgICBFbmFibGUgbW9kZXNldHRpbmcgc3VwcG9ydCBmb3IgdmlydGlvIEdQVSBkcml2ZXIuICBUaGlzIGNhbiBiZVxcbiAgMjI6XFx0XFx0ICAgZGlzYWJsZWQgaW4gY2FzZXMgd2hlcmUgb25seSBcXFwiaGVhZGxlc3NcXFwiIHVzYWdlIG9mIHRoZSBHUFUgaXNcXG4gIDIzOlxcdFxcdCAgIHJlcXVpcmVkLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHQgICBJZiB1bnN1cmUsIHNheSBZLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDozOToyMi41NzczMjkwMjNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODk2MjYzMzgyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGYsIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRVZFTlRGRCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhpcyBgQ09ORklHX0VWRU5URkRgIHNpdHVhdGlvbi4gTXkgZmlyc3QgbW92ZSBpcyB0byBjb25maXJtIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgd2hhdCBjb250ZXh0IGl0J3MgaW4uIExldCdzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBvYnZpb3VzIGxvY2F0aW9uOiB0aGUgYGZzL0tjb25maWdgIGZpbGUuIEdpdmVuIHRoZSBuYW1lLCBpdCdzIGhpZ2hseSBsaWtlbHkgaXQncyBhIGZpbGVzeXN0ZW0tcmVsYXRlZCBmZWF0dXJlLiBOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvdmVyIGFsbCBiYXNlcyBpbiB0aGUgaW5pdGlhbCBzY29waW5nLCBJJ2xsIHF1aWNrbHkgZ3JlcCBhY3Jvc3MgYGluaXQvS2NvbmZpZ2AgdG9vLCBqdXN0IGluIGNhc2UgaXQncyBkZWNsYXJlZCB0aGVyZS4gR3JhYmJpbmcgYSBzaW1wbGUgc2VhcmNoIHRlcm0gbGlrZSBgY29uZmlnIEVWRU5URkRgIHNob3VsZCB5aWVsZCB0aGUgcHJlY2lzZSBkZWZpbml0aW9uIGluIGVpdGhlciBmaWxlLiBJJ20gYWltaW5nIGZvciBhIHF1aWNrIGFuZCB0YXJnZXRlZCBzY2FuIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDEwLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDozOTozMS41Mzk5NjY2ODZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDU2MjM0NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVWRU5URkRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTE5MjM9Y29uZmlnIFRJTUVSRkRcXG4tLVxcbmluaXQvS2NvbmZpZy0xOTMxLVxcbmluaXQvS2NvbmZpZzoxOTMyOmNvbmZpZyBFVkVOVEZEXFxuaW5pdC9LY29uZmlnLTE5MzMtXFx0Ym9vbCBcXFwiRW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFxcXCIgaWYgRVhQRVJUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjM5OjMzLjc0NTU5NjU3MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyOTIwMzI0NjgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKktjb25maWcgRGl2ZTogSW52ZXN0aWdhdGluZyBhIFNwZWNpZmljIFllYXIqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIFwiV2hlcmUgc2hvdWxkIEkgc3RhcnQgbG9va2luZyB0byB1bmRlcnN0YW5kIG9yIGFkZHJlc3Mgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHllYXIgMTkzMiB3aXRoaW4gdGhpcyBjb250ZXh0P1wiIE15IGd1dCByZWFjdGlvbiBpcyB0byBjaGVjayB0aGUgYGluaXQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvIHBsYWNlIGZvciBjb3JlIHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBidWlsZCBzeXN0ZW0uIExldCdzIHNlZSBpZiAxOTMyIGlzIGRlZmluZWQgdGhlcmUsIG9yIGlmIHRoZXJlJ3MgYW55IGluZGljYXRpb24gb2YgaXRzIHJlbGV2YW5jZSB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyB0aGUgbW9zdCBsb2dpY2FsIGZpcnN0IHN0ZXAgd2hlbiBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjczMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQwOjAyLjk0ODg0NzEzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5pdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MzAsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE5MzA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbjE5MzE6XFx0XFxuMTkzMjpcXHRjb25maWcgRVZFTlRGRFxcbjE5MzM6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFxcXCIgaWYgRVhQRVJUXFxuMTkzNDpcXHRcXHRkZWZhdWx0IHlcXG4xOTM1OlxcdFxcdGhlbHBcXG4xOTM2OlxcdFxcdCAgRW5hYmxlIHRoZSBldmVudGZkKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gcmVjZWl2ZSBib3RoXFxuMTkzNzpcXHRcXHQgIGtlcm5lbCBub3RpZmljYXRpb24gKGllLiBLQUlPKSBvciB1c2Vyc3BhY2Ugbm90aWZpY2F0aW9ucy5cXG4xOTM4OlxcdFxcbjE5Mzk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbjE5NDA6XFx0XFxuMTk0MTpcXHRjb25maWcgU0hNRU1cXG4xOTQyOlxcdFxcdGJvb2wgXFxcIlVzZSBmdWxsIHNobWVtIGZpbGVzeXN0ZW1cXFwiIGlmIEVYUEVSVFxcbjE5NDM6XFx0XFx0ZGVmYXVsdCB5XFxuMTk0NDpcXHRcXHRkZXBlbmRzIG9uIE1NVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDo0MDowMi45NDg5NzQ1NDRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTIwNjA1ODE5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZ1bmN0aW9uIENhbGwgU2NvcGUgZm9yIEZ1enppbmcgUHJpb3JpdGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIGxvb2tpbmcgYXQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBldmVudGZkcyAoYENPTkZJR19FVkVOVEZEYCksIERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlciAoYENPTkZJR19EUk1gKSwgYW5kIHNwZWNpZmljYWxseSB0aGUgVmlydElPIEdQVSBpbiBEUk0gKGBDT05GSUdfRFJNX1ZJUlRJT19HUFVgKS4gVGhlIHRhc2sgaXMgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGNoYW5nZXMuIEkgc2VlIHR3byBmdW5jdGlvbnMgd2VyZSBtb2RpZmllZDogYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGluIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY2AgYW5kIGBldmVudGZkX2N0eF9wdXRgIGluIGBmcy9ldmVudGZkLmNgLlxuXG5Ob3csIHRoZSByZWQgZmxhZyBnb2VzIHVwLiBUaGUgZG9jdW1lbnRhdGlvbiB3YXJucyBhZ2FpbnN0IGxpc3RpbmcgXCJ1YmlxdWl0b3VzIGxpZmVjeWNsZSBob3QtcGF0aHMuXCIgSSBoYXZlIHRvIGFzayBteXNlbGY6IElzIGBldmVudGZkX2N0eF9wdXRgIHViaXF1aXRvdXM/IEl0J3MgY2FsbGVkIHdoZW4gYW4gZXZlbnRmZCBjb250ZXh0IGlzIGNsb3NlZCBvciByZWxlYXNlZCwgc28gbm8sIGl0J3MgcHJldHR5IHNwZWNpZmljLiBJdCdzIG5vdCBtZW1vcnkgYWxsb2NhdGlvbiwgYSBwYWdlIGZhdWx0IGhhbmRsZXIsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uLlxuXG5CdXQsIGFuZCB0aGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCwgY291bGQgaXQgYmUgY2FsbGVkIGJ5ICphbG1vc3QgZXZlcnkgcHJvZ3JhbSogaW4gdGhlIGNvcnB1cz8gTm8sIGl0J3Mgb25seSBwcm9ncmFtcyB0aGF0IHVzZSBldmVudGZkLCBzdWNoIGFzIEtWTSwgaW9fdXJpbmcgZXZlbnRmZCwgdmhvc3QsIERSTSBzeW5jb2JqIGV2ZW50ZmQsIGV0Yy4gU28gd2UncmUgaW4gdGhlIGNsZWFyIHRoZXJlLlxuXG5XaGF0IGFib3V0IGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYD8gSXQncyB0aGUgZXhhY3QgZW50cnlwb2ludCBmdW5jdGlvbiB0aGF0J3MgYmVlbiBtb2RpZmllZCEgUGVyZmVjdCwgdGhhdCdzIGRlZmluaXRlbHkgYSB0YXJnZXQuXG5cbkNhbiBJIGluY2x1ZGUgYGV2ZW50ZmRfY3R4X3B1dGAgYXMgd2VsbD8gTGV0J3MgY2hlY2sgdGhlIGd1aWRhbmNlOiBcIkxpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cyBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cIiBCaW5nbywgdGhlIHBhdGNoIG1vZGlmaWVzICpib3RoKiBgZXZlbnRmZF9jdHhfcHV0YCBhbmQgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLiBTbywgdGhleSBib3RoIGZpdCB0aGUgZGVzY3JpcHRpb24uXG5cblRoZXNlIGFyZW4ndCBzdGF0aWMgZnVuY3Rpb25zLCB0aGV5IHdlcmUgbW9kaWZpZWQsIGFuZCBub3QgdWJpcXVpdG91cy4gTGV0J3MgbWFrZSBzdXJlIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBpcyBub24tc3RhdGljOiBJIGNhbiBzZWUgaXQncyBleHBvc2VkIHZpYSBgZHJtX2lvY3Rsc2AgYW5kIGBldmVudGZkX2N0eF9wdXRgIGlzIGBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpYC4gR29vZC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBoYXZlIHRvIGNoZWNrIGZvciBvdGhlciBjaGFuZ2VkIGZ1bmN0aW9ucy4gSSBzZWUgYERFRklORV9GUkVFYCBpbiBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIHdpdGggYGV2ZW50ZmRfY3R4X3B1dGAuIFRoaXMgaXMgZGVmaW5pbmcgYSBjbGVhbnVwIGZ1bmN0aW9uIHN1Y2ggYXMgYGZyZWVfZXZlbnRmZGAgb3IgYGNsYXNzX2V2ZW50ZmRfZGVzdHJ1Y3RvcmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBERUZJTkVfRlJFRWAgaXMgdXNlZC4gSSdsbCBjaGVjayBgaW5jbHVkZS9saW51eC9jbGVhbnVwLmhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzExNywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQwOjE1LjAwOTU2MTI1MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNDk0NTk5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIERFRklORV9GUkVFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy94ZnNfdHJhY2UuaD0zMTE1PURFQ0xBUkVfRVZFTlRfQ0xBU1MoeGZzX2ZyZWVfZXh0ZW50X2RlZmVycmVkX2NsYXNzLFxcbi0tXFxuZnMveGZzL3hmc190cmFjZS5oLTMxNDItKTtcXG5mcy94ZnMveGZzX3RyYWNlLmg6MzE0MzojZGVmaW5lIERFRklORV9GUkVFX0VYVEVOVF9ERUZFUlJFRF9FVkVOVChuYW1lKSBcXFxcXFxuZnMveGZzL3hmc190cmFjZS5oLTMxNDQtREVGSU5FX0VWRU5UKHhmc19mcmVlX2V4dGVudF9kZWZlcnJlZF9jbGFzcywgbmFtZSwgXFxcXFxcbi0tXFxuZnMveGZzL3hmc190cmFjZS5oPTU4OTc9REVDTEFSRV9FVkVOVF9DTEFTUyh4ZnNfZnJlZWJsb2Nrc19yZXN2X2NsYXNzLFxcbi0tXFxuZnMveGZzL3hmc190cmFjZS5oLTU5MjQtKVxcbmZzL3hmcy94ZnNfdHJhY2UuaDo1OTI1OiNkZWZpbmUgREVGSU5FX0ZSRUVCTE9DS1NfUkVTVl9FVkVOVChuYW1lKSBcXFxcXFxuZnMveGZzL3hmc190cmFjZS5oLTU5MjYtREVGSU5FX0VWRU5UKHhmc19mcmVlYmxvY2tzX3Jlc3ZfY2xhc3MsIG5hbWUsIFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvY2xlYW51cC5oLTIwOS1cXG5pbmNsdWRlL2xpbnV4L2NsZWFudXAuaDoyMTA6I2RlZmluZSBERUZJTkVfRlJFRShfbmFtZSwgX3R5cGUsIF9mcmVlKSBcXFxcXFxuaW5jbHVkZS9saW51eC9jbGVhbnVwLmgtMjExLVxcdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBfX2ZyZWVfIyNfbmFtZSh2b2lkICpwKSB7IF90eXBlIF9UID0gKihfdHlwZSAqKXA7IF9mcmVlOyB9XFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kbWEuaD0yMDY9REVDTEFSRV9FVkVOVF9DTEFTUyhkbWFfZnJlZV9jbGFzcyxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RtYS5oLTIzNy1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kbWEuaDoyMzg6I2RlZmluZSBERUZJTkVfRlJFRV9FVkVOVChuYW1lKSBcXFxcXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvZG1hLmgtMjM5LURFRklORV9FVkVOVChkbWFfZnJlZV9jbGFzcywgbmFtZSwgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDo0MDoxNi43NDQ1MTM4NTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzcyMTk4NDU3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGludm9sdmVzIGBERUZJTkVfRlJFRWAsIHdoaWNoIGV4cGFuZHMgdG8gYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLCBtZWFuaW5nIGl0J3Mgbm90IGEgc3RhbmRhbG9uZSBzeW1ib2wgaW4gdm1saW51eC4gQ3J1Y2lhbGx5LCB0aGUgY2FsbGVyIGluIHRoaXMgc3BlY2lmaWMgaW5zdGFuY2UgaXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLlxuXG5GaXJzdCwgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQncyB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUsIGV4ZWN1dGFibGUgY29kZSwgc28gdGhhdCBpcyBvdXIgY3JpdGVyaWEuIFRoZSBzdGF0ZWQgZ29hbHMgZm9yIHBhdGNoIGZ1enppbmcgYXJlIHRvIGZpbmQgYnVncywgcmVncmVzc2lvbnMsIGFuZCBzdWNoLiBUaGUgcHJpbWFyeSBodXJkbGUgaXMgcmVhY2hhYmlsaXR5LiBUaGlzIGNvZGUgaXMgaW5kZWVkIHJlYWNoYWJsZS4gV2Ugc2hvdWxkIG5ldmVyIGJsaW5kbHkgdHJ1c3QgY2xhaW1zIG9mIFwibm8gZnVuY3Rpb25hbCBjaGFuZ2VcIiBvciByZWZhY3RvcmluZzsgbGV0J3MgZGlnIGRlZXBlci5cblxuVGhpcyBwYXRjaCBtb2RpZmllcyBjb2RlIGluIGBmcy9ldmVudGZkLmNgIChWRlMvc3lzY2FsbCBsZXZlbCkgYW5kIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY2AgKERSTSBzeW5jb2JqIGlvY3RsKS4gIFRoZSBgZXZlbnRmZF9jdHhfcHV0KClgIGZ1bmN0aW9uIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGhhbmRsZSBgSVNfRVJSX09SX05VTEwoY3R4KWAsIHdoaWNoIGNvdWxkIGV4cG9zZSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIGVycm9yIGhhbmRsaW5nIGlzc3Vlcywgb3IgbWVtb3J5IGlzc3VlcyBpbiB0aGUgY2FzZSB0aGUgY2xlYW51cCBpc24ndCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIERSTSBzeW5jb2JqIGlvY3RsIGlzIHJlYWNoYWJsZSB2aWEgRFJNIGRldmljZXMgc3VwcG9ydGluZyBzeW5jb2JqIHRpbWVsaW5lcywgc3BlY2lmaWNhbGx5IHZpcnRpby1ncHUgaW4gUUVNVS4gIFRoaXMgcmVmYWN0b3JpbmcgdXNlcyBhIGNsZWFudXAuaCBSQUlJLCBzcGVjaWZpY2FsbHkgYF9fZnJlZShldmVudGZkKWAuIEl0J3MgYSBjb21iaW5hdGlvbiBvZiBhIGNvcmUgc3Vic3lzdGVtIChldmVudGZkKSBhbmQgYSByZWFjaGFibGUgZHJpdmVyIGZyYW1ld29yayAoRFJNIHN5bmNvYmogLyB2aXJ0aW8tZ3B1KS4gU2luY2UgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgd2UgY29uc2lkZXIgaXQgdG8gYmUgd29ydGggZnV6emluZy5cblxuTmV4dCwgd2UgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFdlIG5lZWQgYEVWRU5URkRgIHRvIGVuYWJsZSB0aGUgYGZzL2V2ZW50ZmQuY2AgY29kZSwgYERSTWAgdG8gZW5hYmxlIHRoZSBEUk0gc3Vic3lzdGVtLCBhbmQgYERSTV9WSVJUSU9fR1BVYCB3aGljaCBhbGxvd3MgdGhlIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBmdW5jdGlvbiB0byBiZSBleGVyY2lzZWQgdGhyb3VnaCB2aXJ0aW8tZ3B1IGluIFFFTVUuIFRoZXNlIGFyZSBhbGwgYm9vbGVhbiBjb25maWdzLCBkZWZpbmVkIGFwcHJvcHJpYXRlbHkgaW4gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuXG5cblRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YC4gVGhlc2UgYXJlIHRoZSBvbmx5IHR3byBDIGZ1bmN0aW9ucyBkaXJlY3RseSB0b3VjaGVkIGJ5IHRoZSBjaGFuZ2VzLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXJhbWV0ZXJzIGZvciBgc2V0LXJlc3VsdHNgIHNob3VsZCBiZTpcblxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIkRSTVwiLCBcIkRSTV9WSVJUSU9fR1BVXCIsIFwiRVZFTlRGRFwiXWBcbiogICBgRm9jdXNTeW1ib2xzYDogYFtcImRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxcIiwgXCJldmVudGZkX2N0eF9wdXRcIl1gXG4qICAgYFJlYXNvbmluZ2A6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiBib3RoIGEgY29yZSBmaWxlc3lzdGVtIGNvbXBvbmVudCAoZXZlbnRmZCkgYW5kIGEgZHJpdmVyIGZyYW1ld29yayAoRFJNIHN5bmNvYmopLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgdmlydGlvLWdwdSBkcml2ZXIgd2l0aGluIFFFTVUuIFRoaXMgaXMgYSByZWZhY3RvcmluZywgaW50cm9kdWNpbmcgUkFJSSBjbGVhbnVwIHdoaWNoIGhhbmRsZXMgdGhlIGBfX2ZyZWVgIGxvZ2ljIHRvIHRoZSBldmVudGZkLCB3aGljaCBjb3VsZCBleHBvc2UgZXJyb3JzIGR1ZSB0byBpbmNvcnJlY3RseSBoYW5kbGVkIG51bGwgb3IgZXJyb3IgY29uZGl0aW9ucyBvciBtZW1vcnkgY29ycnVwdGlvbi5cbiogICBgV29ydGhGdXp6aW5nYDogYHRydWVgXG5cbkFscmlnaHQsIHRoYXQgY292ZXJzIGFsbCB0aGUgYmFzZXMuIEkgdGhpbmsgd2UncmUgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDkzMiwiT3V0cHV0VG9rZW5zIjoyMDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NDA6NTMuOTY0MzYzMjk2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg1MDg0MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX1ZJUlRJT19HUFVcIixcbiAgICBcIkVWRU5URkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fc3luY29ial9ldmVudGZkX2lvY3RsXCIsXG4gICAgXCJldmVudGZkX2N0eF9wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGV2ZW50ZmRfY3R4X3B1dCgpIGluIGZzL2V2ZW50ZmQuYyB0byBzYWZlbHkgaGFuZGxlIElTX0VSUl9PUl9OVUxMIHBvaW50ZXJzIGFuZCBpbnRyb2R1Y2VzIHRoZSBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pIHNjb3BlZCBjbGVhbnVwIGhlbHBlciwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIHJlZmFjdG9yIHJlc291cmNlIHJlbGVhc2UgYW5kIGVycm9yIHBhdGhzIGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0YWJsZSBhbmQgZnVsbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2aXJ0aW8tZ3B1IGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzICh3aGljaCBzdXBwb3J0cyBEUklWRVJfU1lOQ09CSl9USU1FTElORSkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBjbGVhbnVwIGF0dHJpYnV0ZSBoYW5kbGluZyBhbmQgbmV3IE5VTEwvRVJSIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZmVyZW5jZSBsZWFrcywgZG91YmxlIHB1dHMsIG9yIG90aGVyIHJlZ3Jlc3Npb25zIHVuZGVyIGVycm9yIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX1ZJUlRJT19HUFVcIixcbiAgICBcIkVWRU5URkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fc3luY29ial9ldmVudGZkX2lvY3RsXCIsXG4gICAgXCJldmVudGZkX2N0eF9wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGV2ZW50ZmRfY3R4X3B1dCgpIGluIGZzL2V2ZW50ZmQuYyB0byBzYWZlbHkgaGFuZGxlIElTX0VSUl9PUl9OVUxMIHBvaW50ZXJzIGFuZCBpbnRyb2R1Y2VzIHRoZSBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pIHNjb3BlZCBjbGVhbnVwIGhlbHBlciwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIHJlZmFjdG9yIHJlc291cmNlIHJlbGVhc2UgYW5kIGVycm9yIHBhdGhzIGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhlY3V0YWJsZSBhbmQgZnVsbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB2aXJ0aW8tZ3B1IGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzICh3aGljaCBzdXBwb3J0cyBEUklWRVJfU1lOQ09CSl9USU1FTElORSkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBjbGVhbnVwIGF0dHJpYnV0ZSBoYW5kbGluZyBhbmQgbmV3IE5VTEwvRVJSIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZmVyZW5jZSBsZWFrcywgZG91YmxlIHB1dHMsIG9yIG90aGVyIHJlZ3Jlc3Npb25zIHVuZGVyIGVycm9yIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNDo0MDo1NC4wNDI4ODIxNTVaIiwiU2VxIjozNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTQ4MTc4NzU3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQwOjU0LjA0MzQ1Nzg1NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjUyMTQ4MTIwNTY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxcblxcblRoZXNlIGNoYW5nZXMgY29uY2VybiBwb2ludGVyIGxpZmV0aW1lIGFuZCByZXNvdXJjZSBkZWFsbG9jYXRpb24uIFRoZSBsb2NhbCBwb2ludGVyIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgLCBhbmQgdGhlIGhlYXAgYWxsb2NhdGlvbiBgZW50cnlgIGNvbnRpbnVlcyB0byBiZSB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqKClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBieXRlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgYWx0ZXJlZC4gQW55IHBvdGVudGlhbCBidWdzIHdvdWxkIHJlbGF0ZSB0byByZWZlcmVuY2UgY291bnRpbmcsIHJlc291cmNlIGxlYWtzLCBvciBwb2ludGVyIGNsZWFudXAsIHdoaWNoIGZhbGwgdW5kZXIgc3RhbmRhcmQgS0FTQU4vcmVmY291bnQgdHJhY2tpbmcgcmF0aGVyIHRoYW4gS01TQU4gdW5pbml0aWFsaXplZCBtZW1vcnkgZGV0ZWN0aW9uLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM1ZGY0M2JlM2ViYzIxZGU0ODljNTU5OWNjYTgzYmZiYjRjZDg3OGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNDoyMzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbmluZGV4IGMyM2E1ZGUyN2VmZmEuLmVmYzRlOGFmMjIwYzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbkBAIC0xNDYyLDkgKzE0NjIsOSBAQCBpbnRcbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRcdFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcbiB7XG4rXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ5MCwxMCArMTQ5MCwxMCBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRlbnRyeSA9IGt6YWxsb2Nfb2JqKCplbnRyeSk7XG4gXHRpZiAoIWVudHJ5KSB7XG4gXHRcdHJldCA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZXJyX2t6YWxsb2M7XG4rXHRcdGdvdG8gZXJyX2ZkZ2V0O1xuIFx0fVxuIFx0ZW50cnktXHUwMDNlc3luY29iaiA9IHN5bmNvYmo7XG4tXHRlbnRyeS1cdTAwM2Vldl9mZF9jdHggPSBldl9mZF9jdHg7XG4rXHRlbnRyeS1cdTAwM2Vldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpO1xuIFx0ZW50cnktXHUwMDNlcG9pbnQgPSBhcmdzLVx1MDAzZXBvaW50O1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgPSBhcmdzLVx1MDAzZWZsYWdzO1xuIFxuQEAgLTE1MDIsOCArMTUwMiw2IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbiBcbiBcdHJldHVybiAwO1xuIFxuLWVycl9remFsbG9jOlxuLVx0ZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7XG4gZXJyX2ZkZ2V0OlxuIFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xuIFx0cmV0dXJuIHJldDtcbmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmNcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjFjZDE3NDFiODFiMTcgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudGZkLmNcbisrKyBiL2ZzL2V2ZW50ZmQuY1xuQEAgLTEwMiw2ICsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG4gICovXG4gdm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4ge1xuK1x0aWYgKElTX0VSUl9PUl9OVUxMKGN0eCkpXG4rXHRcdHJldHVybjtcbitcbiBcdGtyZWZfcHV0KFx1MDAyNmN0eC1cdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbmluZGV4IGUzMmJlZTQzNDVmYjkuLjY4OTM1OGMyYjBhZTcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuKysrIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbkBAIC0xMCw2ICsxMCw3IEBAXG4gI2RlZmluZSBfTElOVVhfRVZFTlRGRF9IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY2xlYW51cC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtZGVmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbkBAIC04OSw1ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbiBcdGV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTtcbiB9XG4gXG4rREVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXG4rXG4gI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQwOjU0LjA0MzQ1ODg4NVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0OTU1ODM0MTE1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSSBzZWUgY2hhbmdlcyB0byBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgLCBgZnMvZXZlbnRmZC5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAuICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGhhbmRsaW5nIGV2ZW50IGZpbGUgZGVzY3JpcHRvcnMgaW4gdGhlIGNvbnRleHQgb2YgRFJNIHN5bmMgb2JqZWN0cy4gSSdsbCBuZWVkIHRvIHBhcnNlIHRoZSBkaWZmIHRvIGFzY2VydGFpbiB0aGUgc3BlY2lmaWNzLlxuXG5GaXJzdCB0aGluZyBJIG5vdGljZSBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgYSBuZXcgbG9jYWwgdmFyaWFibGUgZGVjbGFyYXRpb246IGBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO2AuICBBaCwgdGhleSdyZSB1c2luZyBhIGNsZWFudXAgaGFuZGxlciwgYF9fZnJlZShldmVudGZkKWAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IHRoZXkncmUgYXNzb2NpYXRpbmcgdGhlIGBldmVudGZkX2N0eF9wdXRgIGZ1bmN0aW9uIHdpdGggdGhlIHZhcmlhYmxlLCBhbmQgdGhlIGNsZWFudXAgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgdmFyaWFibGUgZ29lcyBvdXQgb2Ygc2NvcGUsIG9yIHdoZW4gYG5vX2ZyZWVfcHRyKClgIGlzIGNhbGxlZCBvbiBpdC5cblxuUHJldmlvdXNseSwgYGV2X2ZkX2N0eGAgd2FzIGRlY2xhcmVkIGFuZCBpbml0aWFsaXplZCBzZXBhcmF0ZWx5LCBhbmQgdGhlIGZ1bmN0aW9uJ3MgZXJyb3IgaGFuZGxpbmcgdXNlZCBgZXZlbnRmZF9jdHhfcHV0YCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLCBsaWtlbHkgdG8gZnJlZSB0aGUgZXZlbnRmZCBjb250ZXh0LiBUaGlzIHBhdHRlcm4gaXMgZmFpcmx5IGNvbW1vbiwgc28gaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE5vdywgaXQgc2VlbXMgbGlrZSB0aGUgY2xlYW51cCBpcyBpbnRlZ3JhdGVkLCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByb2J1c3QgYW5kIHBvdGVudGlhbGx5IHNpbXBsZXIuXG5cbkZ1cnRoZXIgZG93biwgdGhlIGNvZGUgbm93IHVzZXMgYG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eClgIHdoZW4gYXNzaWduaW5nIGl0IHRvIGBlbnRyeS1cdTAwM2Vldl9mZF9jdHhgLiBUaGlzIGlzIGNydWNpYWwuIEl0IHByZXZlbnRzIHRoZSBjbGVhbnVwIGhhbmRsZXIgZnJvbSBydW5uaW5nIHdoZW4gYGVudHJ5LVx1MDAzZWV2X2ZkX2N0eGAgZ29lcyBvdXQgb2Ygc2NvcGUsIGJlY2F1c2UgdGhlIGV2ZW50ZmQgY29udGV4dCBpcyBub3cgbWFuYWdlZCBlbHNld2hlcmUuXG5cblRoZSBjaGFuZ2UgaW4gYGZzL2V2ZW50ZmQuY2AgYWRkcyBhIGNoZWNrIHRvIGBldmVudGZkX2N0eF9wdXRgIGZvciBhIGBOVUxMYCBvciBgRVJSX1BUUmAgcG9pbnRlciwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgaXQgYWxsb3dzIGhhbmRsaW5nIG9mIGNhc2VzIHdoZXJlIHRoZSBjb250ZXh0IHdhc24ndCBwcm9wZXJseSBpbml0aWFsaXplZC4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuXG5cbkZpbmFsbHksIHRoZSBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGNoYW5nZSBhZGRzIGEgYERFRklORV9GUkVFYCBtYWNybyBmb3IgYGV2ZW50ZmRgLCB3aGljaCBjbGVhcmx5IGFzc29jaWF0ZXMgdGhlIGBldmVudGZkX2N0eF9wdXRgIGZ1bmN0aW9uIHdpdGggdGhlIGBldmVudGZkX2N0eGAgc3RydWN0IGZvciB1c2Ugd2l0aCB0aGUgYF9fZnJlZWAgYXR0cmlidXRlLiBUaGlzIGlzIHRoZSBjb3JlIG9mIHRoZSBjbGVhbnVwIG1lY2hhbmlzbSBhbmQgcHJvdmlkZXMgYSBjbGVhbmVyIGFuZCBzYWZlciB3YXkgdG8gbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGUgYGV2ZW50ZmRfY3R4YCBvYmplY3QuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgcmVmYWN0b3JpbmcgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IG9mIGV2ZW50IGZpbGUgZGVzY3JpcHRvcnMgd2l0aGluIHRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24uIEl0J3MgdXNpbmcgY2xlYW51cCBoYW5kbGVycyB0byBhdXRvbWF0aWNhbGx5IHJlbGVhc2UgdGhlIGBldmVudGZkX2N0eGAgb24gc2NvcGUgZXhpdCBvciBtYW51YWwgY2FsbCB0byBgbm9fZnJlZV9wdHJgLCB0aHVzIHJlZHVjaW5nIHRoZSBjaGFuY2Ugb2YgbWVtb3J5IGxlYWtzIGFuZCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByZWFkYWJsZSBhbmQgbWFpbnRhaW5hYmxlLiBUaGlzIHNlZW1zIGxpa2UgYSBwb3NpdGl2ZSBjaGFuZ2UgdGhhdCBJIHNob3VsZCBkZWZpbml0ZWx5IHRha2Ugbm90ZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQ5OjA5LjYyNjg3NTMxOFoiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ2MDpcXHRcXG4xNDYxOlxcdGludFxcbjE0NjI6XFx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbjE0NjM6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNDY0OlxcdHtcXG4xNDY1OlxcdFxcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XFxuMTQ2NjpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XFxuMTQ2NzpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuMTQ2ODpcXHRcXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcXG4xNDY5OlxcdFxcdGludCByZXQ7XFxuMTQ3MDpcXHRcXG4xNDcxOlxcdFxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG4xNDcyOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4xNDczOlxcdFxcbjE0NzQ6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZWZsYWdzIFxcdTAwMjYgfkRSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BVkFJTEFCTEUpXFxuMTQ3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNDc2OlxcdFxcbjE0Nzc6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZXBhZClcXG4xNDc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE0Nzk6XFx0XFxuMTQ4MDpcXHRcXHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXFx1MDAzZWhhbmRsZSk7XFxuMTQ4MTpcXHRcXHRpZiAoIXN5bmNvYmopXFxuMTQ4MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4xNDgzOlxcdFxcbjE0ODQ6XFx0XFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cXHUwMDNlZmQpO1xcbjE0ODU6XFx0XFx0aWYgKElTX0VSUihldl9mZF9jdHgpKSB7XFxuMTQ4NjpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XFxuMTQ4NzpcXHRcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4xNDg4OlxcdFxcdH1cXG4xNDg5OlxcdFxcbjE0OTA6XFx0XFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xcbjE0OTE6XFx0XFx0aWYgKCFlbnRyeSkge1xcbjE0OTI6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xNDkzOlxcdFxcdFxcdGdvdG8gZXJyX2ZkZ2V0O1xcbjE0OTQ6XFx0XFx0fVxcbjE0OTU6XFx0XFx0ZW50cnktXFx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xcbjE0OTY6XFx0XFx0ZW50cnktXFx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XFxuMTQ5NzpcXHRcXHRlbnRyeS1cXHUwMDNlcG9pbnQgPSBhcmdzLVxcdTAwM2Vwb2ludDtcXG4xNDk4OlxcdFxcdGVudHJ5LVxcdTAwM2VmbGFncyA9IGFyZ3MtXFx1MDAzZWZsYWdzO1xcbjE0OTk6XFx0XFxuMTUwMDpcXHRcXHRkcm1fc3luY29ial9hZGRfZXZlbnRmZChzeW5jb2JqLCBlbnRyeSk7XFxuMTUwMTpcXHRcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuMTUwMjpcXHRcXG4xNTAzOlxcdFxcdHJldHVybiAwO1xcbjE1MDQ6XFx0XFxuMTUwNTpcXHRlcnJfZmRnZXQ6XFxuMTUwNjpcXHRcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuMTUwNzpcXHRcXHRyZXR1cm4gcmV0O1xcbjE1MDg6XFx0fVxcbjE1MDk6XFx0XFxuMTUxMDpcXHRpbnRcXG4xNTExOlxcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuMTUxMjpcXHRcXHRcXHRcXHRzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNTEzOlxcdHtcXG4xNTE0OlxcdFxcdHN0cnVjdCBkcm1fc3luY29ial9hcnJheSAqYXJncyA9IGRhdGE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE0OjQ5OjA5LjYyNjk5MTU0OFoiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNTg5NzY0NTEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGEgcmVmYWN0b3JpbmcgY2VudGVyZWQgYXJvdW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB1c2luZyB0aGUgYF9fZnJlZWAgY2xlYW51cCBhdHRyaWJ1dGUgYW5kIHRoZSBgZXZlbnRmZF9jdHhfcHV0YCBmdW5jdGlvbi4gSXQncyBkZXNpZ25lZCB0byBoYW5kbGUgcmVzb3VyY2UgbGlmZXRpbWUgYW5kIHByZXZlbnQgcG90ZW50aWFsIGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXG5cblRoZSBwYXRjaCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOlxuXG4xLiAgSXQgZGVmaW5lcyBgREVGSU5FX0ZSRUVgIGZvciBgZXZlbnRmZGAgY29udGV4dHMuXG4yLiAgSXQgdXBkYXRlcyBgZXZlbnRmZF9jdHhfcHV0YCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycy4gVGhpcyBpcyBnb29kIHByYWN0aWNlLlxuMy4gIEluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCwgd2UgaGF2ZSBhIGBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO2AgZGVjbGFyYXRpb24uIFRoZSBvd25lcnNoaXAgZ2V0cyB0cmFuc2ZlcnJlZCB0byBgZW50cnlgIHZpYSBgbm9fZnJlZV9wdHJgLiBDcnVjaWFsbHksIGVycm9yIHBhdGhzIG5vdyBzYWZlbHkgZnJlZSBgZXZfZmRfY3R4YCBpZiBpdCdzIG5vdCBgTlVMTGAgKG9yIGl0J3MgYW4gZXJyb3IgcG9pbnRlciwgd2hpY2ggYGV2ZW50ZmRfY3R4X3B1dGAgaGFuZGxlcykuIFRoZSByZW1vdmFsIG9mIGBlcnJfa3phbGxvY2Agc2ltcGxpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSByaXNrcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBrZXJuZWwgaW5mb3JtYXRpb24gbGVha3MgdGhhdCB3b3VsZCB3YXJyYW50IEtNU0FOPyBMZXQncyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3QgY2FyZWZ1bGx5OlxuXG4xLiAgKipLZXJuZWwgc3RydWN0dXJlcyB0byB1c2Vyc3BhY2U/KiogTm9wZS4gVGhlIGlucHV0LCBgdm9pZCAqZGF0YWAsIGNvbWVzIGZyb20gdGhlIERSTSBpb2N0bCBmcmFtZXdvcmsuIE5vIG5ldyBpbmZvcm1hdGlvbiBpcyBiZWluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLlxuMi4gICoqQ29uZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/KiogTm8gYWdhaW4uIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgLlxuMy4gICoqQ29tcGxleCBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHM/KiogYGVudHJ5YCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2Nfb2JqYCwgd2hpY2ggKnplcm9lcyogdGhlIG1lbW9yeS5cbjQuICAqKkJvdW5kcyBjaGVja3Mgb3IgbG9naWMgdGhhdCBleHBvc2VzIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/KiogTm8sIG5vdGhpbmcgaGVyZS5cblxuVGhpcyByZWZhY3RvcmluZyBpcyBhbGwgYWJvdXQgcmVzb3VyY2UgY2xlYW51cCBhbmQgYXZvaWRpbmcgbWVtb3J5IG1hbmFnZW1lbnQgYnVnc+KAlHNwZWNpZmljYWxseSB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSwgbGVha3MuIFRoZXNlIGFyZSAqc3RhbmRhcmQqIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyB0aGF0IEtBU0FOLCByZWZjb3VudCBkZXRlY3RvcnMsIG9yIGxlYWsgZGV0ZWN0b3JzIHdvdWxkIGNhdGNoLiBJdCdzIG5vdCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBjcml0ZXJpYSBvdXRsaW5lZCBhcmUgY2xlYXI6ICpLTVNBTiBpcyBub3QgbmVlZGVkKiBpbiB0aGlzIGNhc2UuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgdGhlIHR5cGVzIG9mIHJpc2tzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guIFRoZSBjb2RlIGNoYW5nZXMgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4gVGhlIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkIG9yIGluaXRpYWxpemVkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU49ZmFsc2VgLiBMZXQncyBwcmVwYXJlIHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNTEsIk91dHB1dFRva2VucyI6MjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODk4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NDk6MzUuNTI0NjQxNDAzWiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYF9fZnJlZShldmVudGZkKWAgY2xlYW51cCBoZWxwZXIgdXNpbmcgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gYW5kIHJlZmFjdG9ycyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIHJlc291cmNlIG1hbmFnZW1lbnQgKGBfX2ZyZWVgIGFuZCBgbm9fZnJlZV9wdHJgKSBmb3IgYHN0cnVjdCBldmVudGZkX2N0eGAuIEFkZGl0aW9uYWxseSwgYGV2ZW50ZmRfY3R4X3B1dCgpYCBpcyB1cGRhdGVkIHRvIHNhZmVseSBoYW5kbGUgYE5VTExgIG9yIGVycm9yIHBvaW50ZXJzIHZpYSBgSVNfRVJSX09SX05VTEwoY3R4KWAuXFxuXFxuVGhlc2UgY2hhbmdlcyBjb25jZXJuIHBvaW50ZXIgbGlmZXRpbWUgYW5kIHJlc291cmNlIGRlYWxsb2NhdGlvbi4gVGhlIGxvY2FsIHBvaW50ZXIgYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgTlVMTGAsIGFuZCB0aGUgaGVhcCBhbGxvY2F0aW9uIGBlbnRyeWAgY29udGludWVzIHRvIGJlIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmooKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBwYWRkaW5nIGJ5dGVzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBhbHRlcmVkLiBBbnkgcG90ZW50aWFsIGJ1Z3Mgd291bGQgcmVsYXRlIHRvIHJlZmVyZW5jZSBjb3VudGluZywgcmVzb3VyY2UgbGVha3MsIG9yIHBvaW50ZXIgY2xlYW51cCwgd2hpY2ggZmFsbCB1bmRlciBzdGFuZGFyZCBLQVNBTi9yZWZjb3VudCB0cmFja2luZyByYXRoZXIgdGhhbiBLTVNBTiB1bmluaXRpYWxpemVkIG1lbW9yeSBkZXRlY3Rpb24uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBfX2ZyZWUoZXZlbnRmZClgIGNsZWFudXAgaGVscGVyIHVzaW5nIHRoZSBgREVGSU5FX0ZSRUVgIG1hY3JvIGFuZCByZWZhY3RvcnMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IChgX19mcmVlYCBhbmQgYG5vX2ZyZWVfcHRyYCkgZm9yIGBzdHJ1Y3QgZXZlbnRmZF9jdHhgLiBBZGRpdGlvbmFsbHksIGBldmVudGZkX2N0eF9wdXQoKWAgaXMgdXBkYXRlZCB0byBzYWZlbHkgaGFuZGxlIGBOVUxMYCBvciBlcnJvciBwb2ludGVycyB2aWEgYElTX0VSUl9PUl9OVUxMKGN0eClgLlxcblxcblRoZXNlIGNoYW5nZXMgY29uY2VybiBwb2ludGVyIGxpZmV0aW1lIGFuZCByZXNvdXJjZSBkZWFsbG9jYXRpb24uIFRoZSBsb2NhbCBwb2ludGVyIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgLCBhbmQgdGhlIGhlYXAgYWxsb2NhdGlvbiBgZW50cnlgIGNvbnRpbnVlcyB0byBiZSB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqKClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSwgcGFkZGluZyBieXRlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgYWx0ZXJlZC4gQW55IHBvdGVudGlhbCBidWdzIHdvdWxkIHJlbGF0ZSB0byByZWZlcmVuY2UgY291bnRpbmcsIHJlc291cmNlIGxlYWtzLCBvciBwb2ludGVyIGNsZWFudXAsIHdoaWNoIGZhbGwgdW5kZXIgc3RhbmRhcmQgS0FTQU4vcmVmY291bnQgdHJhY2tpbmcgcmF0aGVyIHRoYW4gS01TQU4gdW5pbml0aWFsaXplZCBtZW1vcnkgZGV0ZWN0aW9uLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[1] Phase: Succeeded StartedAt: 2026-09-15 14:49:46 +0000 UTC FinishedAt: 2026-09-15 14:49:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[1].abort-on-skip-outcome Phase: Skipped Message: when 'false' evaluated false StartedAt: 2026-09-15 14:49:46 +0000 UTC FinishedAt: 2026-09-15 14:49:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2] Phase: Succeeded StartedAt: 2026-09-15 14:49:46 +0000 UTC FinishedAt: 2026-09-15 18:34:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-15 14:49:46 +0000 UTC FinishedAt: 2026-09-15 18:34:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-15 14:49:46 +0000 UTC FinishedAt: 2026-09-15 14:49:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-15 14:49:46 +0000 UTC FinishedAt: 2026-09-15 14:49:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},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-workflow8tcsd/series-workflow8tcsd-convert-artifact-3543274651/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-15 14:49:56 +0000 UTC FinishedAt: 2026-09-15 15:06:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-15 14:49:56 +0000 UTC FinishedAt: 2026-09-15 15:06: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:*e93bbc7b-5772-4e79-a09e-9647312460a3,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-workflow8tcsd/series-workflow8tcsd-convert-artifact-3543274651/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": "b5b0fc76-0142-4f93-8173-d12a4890ff1f", "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-workflow8tcsd/series-workflow8tcsd-build-action-3831996633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-15 14:49:56 +0000 UTC FinishedAt: 2026-09-15 15:06: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:*e93bbc7b-5772-4e79-a09e-9647312460a3,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-workflow8tcsd/series-workflow8tcsd-convert-artifact-3543274651/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": "b5b0fc76-0142-4f93-8173-d12a4890ff1f", "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-workflow8tcsd/series-workflow8tcsd-build-action-3831996633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-15 15:06:11 +0000 UTC FinishedAt: 2026-09-15 15:06:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped Message: when 'false' evaluated false StartedAt: 2026-09-15 15:06:11 +0000 UTC FinishedAt: 2026-09-15 15:06:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-15 15:06:11 +0000 UTC FinishedAt: 2026-09-15 15:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-15 15:06:11 +0000 UTC FinishedAt: 2026-09-15 15:06:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},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-workflow8tcsd/series-workflow8tcsd-convert-artifact-133527538/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-15 15:06:32 +0000 UTC FinishedAt: 2026-09-15 15:08:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-15 15:06:32 +0000 UTC FinishedAt: 2026-09-15 15:08:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b5b0fc76-0142-4f93-8173-d12a4890ff1f,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-workflow8tcsd/series-workflow8tcsd-build-action-3831996633/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-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-15 15:08:23 +0000 UTC FinishedAt: 2026-09-15 15:08:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped Message: when 'false' evaluated false StartedAt: 2026-09-15 15:08:23 +0000 UTC FinishedAt: 2026-09-15 15:08:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-15 15:08:23 +0000 UTC FinishedAt: 2026-09-15 15:28:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-15 15:08:23 +0000 UTC FinishedAt: 2026-09-15 15:28:05 +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:*e93bbc7b-5772-4e79-a09e-9647312460a3,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-workflow8tcsd/series-workflow8tcsd-convert-artifact-133527538/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": "1fcf1c49-4d91-42b7-8451-ef61ff54c18c", "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-workflow8tcsd/series-workflow8tcsd-build-action-799242118/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-15 15:08:23 +0000 UTC FinishedAt: 2026-09-15 15:27:55 +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:*e93bbc7b-5772-4e79-a09e-9647312460a3,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-workflow8tcsd/series-workflow8tcsd-convert-artifact-133527538/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": "1fcf1c49-4d91-42b7-8451-ef61ff54c18c", "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-workflow8tcsd/series-workflow8tcsd-build-action-799242118/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-15 15:28:05 +0000 UTC FinishedAt: 2026-09-15 15:28:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped Message: when 'false' evaluated false StartedAt: 2026-09-15 15:28:05 +0000 UTC FinishedAt: 2026-09-15 15:28:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-15 15:28:05 +0000 UTC FinishedAt: 2026-09-15 15:29:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-15 15:28:05 +0000 UTC FinishedAt: 2026-09-15 15:29:47 +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:*1fcf1c49-4d91-42b7-8451-ef61ff54c18c,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-workflow8tcsd/series-workflow8tcsd-build-action-799242118/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-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-15 15:29:57 +0000 UTC FinishedAt: 2026-09-15 18:34:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-15 15:29:57 +0000 UTC FinishedAt: 2026-09-15 18:34:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"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:*b5b0fc76-0142-4f93-8173-d12a4890ff1f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1fcf1c49-4d91-42b7-8451-ef61ff54c18c,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-workflow8tcsd/series-workflow8tcsd-build-action-3831996633/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-workflow8tcsd/series-workflow8tcsd-build-action-799242118/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-15 15:29:57 +0000 UTC FinishedAt: 2026-09-15 15:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-15 15:29:57 +0000 UTC FinishedAt: 2026-09-15 15:30:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"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-workflow8tcsd/series-workflow8tcsd-convert-artifact-95036487/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped Message: when 'false' evaluated false StartedAt: 2026-09-15 15:29:57 +0000 UTC FinishedAt: 2026-09-15 15:29:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-15 15:29:57 +0000 UTC FinishedAt: 2026-09-15 15:29:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped Message: when 'false' evaluated false StartedAt: 2026-09-15 15:29:57 +0000 UTC FinishedAt: 2026-09-15 15:29:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-15 15:30:07 +0000 UTC FinishedAt: 2026-09-15 18:34:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8tcsd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"base_commit":"14d6074f52d3af2b27565e6957b92dceeb8b00da","base_tree":"drm-next","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"14d6074f52d3af2b27565e6957b92dceeb8b00da","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_VIRTIO_GPU","EVENTFD"],"series_id":"75e7a1fd-118b-49fe-a70b-ada051e28d79","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-15 15:30:07 +0000 UTC FinishedAt: 2026-09-15 18:34:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b5b0fc76-0142-4f93-8173-d12a4890ff1f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1fcf1c49-4d91-42b7-8451-ef61ff54c18c,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-workflow8tcsd/series-workflow8tcsd-build-action-3831996633/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-workflow8tcsd/series-workflow8tcsd-build-action-799242118/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-workflow8tcsd/series-workflow8tcsd-convert-artifact-95036487/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,}