Name: series-workflow8xs8s Phase: Succeeded StartedAt: 2026-07-03 13:51:20 +0000 UTC FinishedAt: 2026-07-03 18:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[0] Phase: Succeeded StartedAt: 2026-07-03 13:51:20 +0000 UTC FinishedAt: 2026-07-03 14:05:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 13:51:20 +0000 UTC FinishedAt: 2026-07-03 14:05:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e031e55776cf9193b4720a253e92539ca536d224", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION", "TRANSPARENT_HUGEPAGE", "DEBUG_VM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e031e55776cf9193b4720a253e92539ca536d224", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION", "TRANSPARENT_HUGEPAGE", "DEBUG_VM" ], "series_id": "3ca04eb0-8886-4368-98a4-d961179c2d22" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__split_folio_to_order", "free_tail_page_prepare", "pcpu_destroy_chunk", "isolate_freepages_block", "fast_isolate_freepages", "compaction_alloc_noprof" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVCVUdfVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDssCiAgICAmIzM0O2ZyZWVfdGFpbF9wYWdlX3ByZXBhcmUmIzM0OywKICAgICYjMzQ7cGNwdV9kZXN0cm95X2NodW5rJiMzNDssCiAgICAmIzM0O2lzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrJiMzNDssCiAgICAmIzM0O2Zhc3RfaXNvbGF0ZV9mcmVlcGFnZXMmIzM0OywKICAgICYjMzQ7Y29tcGFjdGlvbl9hbGxvY19ub3Byb2YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBmaXggaXNzdWVzIHdpdGggYHBhZ2UtXHUwMDNlcHJpdmF0ZWAgbm90IGJlaW5nIHByb3Blcmx5IGNsZWFyZWQgb3IgY2hlY2tlZCBvbiB0YWlsIHBhZ2VzLiBJdCByZW1vdmVzIGBzZXRfcGFnZV9wcml2YXRlYCBpbiBjb21wYWN0aW9uLCBhZGRzIHdhcm5pbmdzIGluIGh1Z2UgbWVtb3J5IHNwbGl0dGluZyBhbmQgaW50ZXJuYWwgcHJlcCwgYW5kIGFkZHMgYSBjaGVjayBpbiBwYWdlIGFsbG9jYXRpb24uIEl0IGFsc28gY2xlYXJzIGNodW5rIGluZm8gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkb24mIzM5O3QgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgb3IgbWlzcyBhY3R1YWwgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJmZmY5ODU3NDZkNDc0Mjc0YzEwODVlNTg0OWFhNTJjOWMwYWRkODBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDE0OjAxOjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2NvbXBhY3Rpb24uYyBiL21tL2NvbXBhY3Rpb24uY1xuaW5kZXggZjA4NzY1YWRlMDE0Y2UuLjlmNDIwNDg1M2FmZDYyIDEwMDY0NFxuLS0tIGEvbW0vY29tcGFjdGlvbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9jb21wYWN0aW9uLmNcbkBAIC02NDQsNyAmIzQzOzY0NCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLFxuIFx0XHRpc29sYXRlZCA9IF9faXNvbGF0ZV9mcmVlX3BhZ2UocGFnZSwgb3JkZXIpO1xuIFx0XHRpZiAoIWlzb2xhdGVkKVxuIFx0XHRcdGJyZWFrO1xuLVx0XHRzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIG9yZGVyKTtcbiBcbiBcdFx0bnJfc2Nhbm5lZCAmIzQzOz0gaXNvbGF0ZWQgLSAxO1xuIFx0XHR0b3RhbF9pc29sYXRlZCAmIzQzOz0gaXNvbGF0ZWQ7XG5AQCAtMTYxNyw3ICYjNDM7MTYxNiw2IEBAIHN0YXRpYyB2b2lkIGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXMoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MpXG4gXHRcdC8qIElzb2xhdGUgdGhlIHBhZ2UgaWYgYXZhaWxhYmxlICovXG4gXHRcdGlmIChwYWdlKSB7XG4gXHRcdFx0aWYgKF9faXNvbGF0ZV9mcmVlX3BhZ2UocGFnZSwgb3JkZXIpKSB7XG4tXHRcdFx0XHRzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIG9yZGVyKTtcbiBcdFx0XHRcdG5yX2lzb2xhdGVkID0gMSBcdTAwM2NcdTAwM2Mgb3JkZXI7XG4gXHRcdFx0XHRucl9zY2FubmVkICYjNDM7PSBucl9pc29sYXRlZCAtIDE7XG4gXHRcdFx0XHR0b3RhbF9pc29sYXRlZCAmIzQzOz0gbnJfaXNvbGF0ZWQ7XG5AQCAtMTg0Niw3ICYjNDM7MTg0NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgZm9saW8gKmNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mKHN0cnVjdCBmb2xpbyAqc3JjLCB1bnNpZ25lZCBsb25nIGRhXG4gXHRcdHNpemUgXHUwMDNlXHUwMDNlPSAxO1xuIFxuIFx0XHRsaXN0X2FkZChcdTAwMjZmcmVlcGFnZVtzaXplXS5scnUsIFx1MDAyNmNjLVx1MDAzZWZyZWVwYWdlc1tzdGFydF9vcmRlcl0pO1xuLVx0XHRzZXRfcGFnZV9wcml2YXRlKFx1MDAyNmZyZWVwYWdlW3NpemVdLCBzdGFydF9vcmRlcik7XG4gXHR9XG4gXHRkc3QgPSAoc3RydWN0IGZvbGlvICopZnJlZXBhZ2U7XG4gXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcbmluZGV4IGJkZDg2MzU5MjJmOTZkLi4wNmQwNjcxY2ZmODk5MCAxMDA2NDRcbi0tLSBhL21tL2h1Z2VfbWVtb3J5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2VfbWVtb3J5LmNcbkBAIC0zNTkxLDYgJiM0MzszNTkxLDEzIEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbiBcdFx0bmV3X2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0XHRuZXdfZm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleCAmIzQzOyBpO1xuIFxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIHBhZ2UtXHUwMDNlcHJpdmF0ZSBzaG91bGQgbm90IGJlIHNldCBpbiB0YWlsIHBhZ2VzLiBXYXJuIG9uY2VcbiYjNDM7XHRcdCAqIGlmIHByaXZhdGUgaXMgdW5leHBlY3RlZGx5IHNldC4gRG8gaXQgYmVmb3JlIHN3YXAudmFsIGFzc2lnbm1lbnRcbiYjNDM7XHRcdCAqIHNpbmNlIHByaXZhdGUgb3ZlcmxhcHMgd2l0aCBzd2FwLnZhbC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0Vk1fV0FSTl9PTl9PTkNFX1BBR0UobmV3X2ZvbGlvLVx1MDAzZXByaXZhdGUsIG5ld19oZWFkKTtcbiYjNDM7XG4gXHRcdGlmIChmb2xpb190ZXN0X3N3YXBjYWNoZShmb2xpbykpXG4gXHRcdFx0bmV3X2ZvbGlvLVx1MDAzZXN3YXAudmFsID0gZm9saW8tXHUwMDNlc3dhcC52YWwgJiM0MzsgaTtcbiBcbmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaFxuaW5kZXggZmE0ZmI2OTQ0NGVjZGMuLmZiZDlmYjg0MzQxYmM3IDEwMDY0NFxuLS0tIGEvbW0vaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaW50ZXJuYWwuaFxuQEAgLTkwMiw3ICYjNDM7OTAyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHByZXBfY29tcG91bmRfdGFpbChzdHJ1Y3QgcGFnZSAqdGFpbCxcbiB7XG4gXHR0YWlsLVx1MDAzZW1hcHBpbmcgPSBUQUlMX01BUFBJTkc7XG4gXHRzZXRfY29tcG91bmRfaGVhZCh0YWlsLCBoZWFkLCBvcmRlcik7XG4tXHRzZXRfcGFnZV9wcml2YXRlKHRhaWwsIDApO1xuJiM0MztcdFZNX1dBUk5fT05fT05DRSh0YWlsLVx1MDAzZXByaXZhdGUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9jb21wb3VuZF90YWlsKHN0cnVjdCBwYWdlICp0YWlsLFxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xuaW5kZXggNzYyZDliNmJjNzkyZjEuLjcyM2E1MmRmYzgwZjZkIDEwMDY0NFxuLS0tIGEvbW0vcGFnZV9hbGxvYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmNcbkBAIC0xMzc2LDE1ICYjNDM7MTM3NiwyMiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gI2VuZGlmXG4gXHRcdH1cbiBcdFx0Zm9yIChpID0gMTsgaSBcdTAwM2MgKDEgXHUwMDNjXHUwMDNjIG9yZGVyKTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0c3RydWN0IHBhZ2UgKnRhaWxfcGFnZSA9IHBhZ2UgJiM0MzsgaTtcbiYjNDM7XG4gXHRcdFx0aWYgKGNvbXBvdW5kKVxuLVx0XHRcdFx0YmFkICYjNDM7PSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHBhZ2UgJiM0MzsgaSk7XG4mIzQzO1x0XHRcdFx0YmFkICYjNDM7PSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XG4gXHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xuLVx0XHRcdFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSAmIzQzOyBpKSkge1xuJiM0MztcdFx0XHRcdGlmIChmcmVlX3BhZ2VfaXNfYmFkKHRhaWxfcGFnZSkpIHtcbiBcdFx0XHRcdFx0YmFkJiM0MzsmIzQzOztcbiBcdFx0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuLVx0XHRcdChwYWdlICYjNDM7IGkpLVx1MDAzZWZsYWdzLmYgXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xuJiM0MztcdFx0XHR0YWlsX3BhZ2UtXHUwMDNlZmxhZ3MuZiBcdTAwMjY9IH5QQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVA7XG4mIzQzO1x0XHRcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkgXHUwMDI2XHUwMDI2IHRhaWxfcGFnZS1cdTAwM2Vwcml2YXRlKSB7XG4mIzQzO1x0XHRcdFx0YmFkX3BhZ2UodGFpbF9wYWdlLCBcJiMzNDtub256ZXJvIHByaXZhdGVcJiMzNDspO1xuJiM0MztcdFx0XHRcdGJhZCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fVxuIFx0fVxuIFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHtcbmRpZmYgLS1naXQgYS9tbS9wZXJjcHUta20uYyBiL21tL3BlcmNwdS1rbS5jXG5pbmRleCA0ZWZhNzRhNDk1Y2I2Yi4uN2ZmZTg0YWRhZGI5ZDkgMTAwNjQ0XG4tLS0gYS9tbS9wZXJjcHUta20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGVyY3B1LWttLmNcbkBAIC05NCw4ICYjNDM7OTQsMTUgQEAgc3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcbiBcdHBjcHVfc3RhdHNfY2h1bmtfZGVhbGxvYygpO1xuIFx0dHJhY2VfcGVyY3B1X2Rlc3Ryb3lfY2h1bmsoY2h1bmstXHUwMDNlYmFzZV9hZGRyKTtcbiBcbi1cdGlmIChjaHVuay1cdTAwM2VkYXRhKVxuJiM0MztcdGlmIChjaHVuay1cdTAwM2VkYXRhKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgcGFnZSAqcGFnZXMgPSAoc3RydWN0IHBhZ2UgKiljaHVuay1cdTAwM2VkYXRhO1xuJiM0MztcdFx0aW50IGk7XG4mIzQzO1xuJiM0MztcdFx0LyogY2xlYXIgY2h1bmsgaW5mbyBmcm9tIGVhY2ggcGFnZSBiZWZvcmUgZnJlZSB0aGVtICovXG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9wYWdlczsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdHBjcHVfc2V0X3BhZ2VfY2h1bmsocGFnZXMgJiM0MzsgaSwgTlVMTCk7XG4gXHRcdF9fZnJlZV9wYWdlcyhjaHVuay1cdTAwM2VkYXRhLCBvcmRlcl9iYXNlXzIobnJfcGFnZXMpKTtcbiYjNDM7XHR9XG4gXHRwY3B1X2ZyZWVfY2h1bmsoY2h1bmspO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT01QQUNUSU9OJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFQlVHX1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zcGxpdF9mb2xpb190b19vcmRlciYjMzQ7LAogICAgJiMzNDtmcmVlX3RhaWxfcGFnZV9wcmVwYXJlJiMzNDssCiAgICAmIzM0O3BjcHVfZGVzdHJveV9jaHVuayYjMzQ7LAogICAgJiMzNDtpc29sYXRlX2ZyZWVwYWdlc19ibG9jayYjMzQ7LAogICAgJiMzNDtmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzJiMzNDssCiAgICAmIzM0O2NvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gZml4IGlzc3VlcyB3aXRoIGBwYWdlLVx1MDAzZXByaXZhdGVgIG5vdCBiZWluZyBwcm9wZXJseSBjbGVhcmVkIG9yIGNoZWNrZWQgb24gdGFpbCBwYWdlcy4gSXQgcmVtb3ZlcyBgc2V0X3BhZ2VfcHJpdmF0ZWAgaW4gY29tcGFjdGlvbiwgYWRkcyB3YXJuaW5ncyBpbiBodWdlIG1lbW9yeSBzcGxpdHRpbmcgYW5kIGludGVybmFsIHByZXAsIGFuZCBhZGRzIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBJdCBhbHNvIGNsZWFycyBjaHVuayBpbmZvIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGluIHBlcmNwdS1rbS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG9uJiMzOTt0IHRyaWdnZXIgZmFsc2UgcG9zaXRpdmVzIG9yIG1pc3MgYWN0dWFsIGJ1Z3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJmZmY5ODU3NDZkNDc0Mjc0YzEwODVlNTg0OWFhNTJjOWMwYWRkODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzIDE0OjAxOjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jCmluZGV4IGYwODc2NWFkZTAxNGNlLi45ZjQyMDQ4NTNhZmQ2MiAxMDA2NDQKLS0tIGEvbW0vY29tcGFjdGlvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2NvbXBhY3Rpb24uYwpAQCAtNjQ0LDcgJiM0Mzs2NDQsNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywKIAkJaXNvbGF0ZWQgPSBfX2lzb2xhdGVfZnJlZV9wYWdlKHBhZ2UsIG9yZGVyKTsKIAkJaWYgKCFpc29sYXRlZCkKIAkJCWJyZWFrOwotCQlzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIG9yZGVyKTsKIAogCQlucl9zY2FubmVkICYjNDM7PSBpc29sYXRlZCAtIDE7CiAJCXRvdGFsX2lzb2xhdGVkICYjNDM7PSBpc29sYXRlZDsKQEAgLTE2MTcsNyAmIzQzOzE2MTYsNiBAQCBzdGF0aWMgdm9pZCBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKQogCQkvKiBJc29sYXRlIHRoZSBwYWdlIGlmIGF2YWlsYWJsZSAqLwogCQlpZiAocGFnZSkgewogCQkJaWYgKF9faXNvbGF0ZV9mcmVlX3BhZ2UocGFnZSwgb3JkZXIpKSB7Ci0JCQkJc2V0X3BhZ2VfcHJpdmF0ZShwYWdlLCBvcmRlcik7CiAJCQkJbnJfaXNvbGF0ZWQgPSAxICZsdDsmbHQ7IG9yZGVyOwogCQkJCW5yX3NjYW5uZWQgJiM0Mzs9IG5yX2lzb2xhdGVkIC0gMTsKIAkJCQl0b3RhbF9pc29sYXRlZCAmIzQzOz0gbnJfaXNvbGF0ZWQ7CkBAIC0xODQ2LDcgJiM0MzsxODQ0LDYgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqY29tcGFjdGlvbl9hbGxvY19ub3Byb2Yoc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGEKIAkJc2l6ZSAmZ3Q7Jmd0Oz0gMTsKIAogCQlsaXN0X2FkZCgmYW1wO2ZyZWVwYWdlW3NpemVdLmxydSwgJmFtcDtjYy0mZ3Q7ZnJlZXBhZ2VzW3N0YXJ0X29yZGVyXSk7Ci0JCXNldF9wYWdlX3ByaXZhdGUoJmFtcDtmcmVlcGFnZVtzaXplXSwgc3RhcnRfb3JkZXIpOwogCX0KIAlkc3QgPSAoc3RydWN0IGZvbGlvICopZnJlZXBhZ2U7CiAKZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jCmluZGV4IGJkZDg2MzU5MjJmOTZkLi4wNmQwNjcxY2ZmODk5MCAxMDA2NDQKLS0tIGEvbW0vaHVnZV9tZW1vcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jCkBAIC0zNTkxLDYgJiM0MzszNTkxLDEzIEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlciwKIAkJbmV3X2ZvbGlvLSZndDttYXBwaW5nID0gZm9saW8tJmd0O21hcHBpbmc7CiAJCW5ld19mb2xpby0mZ3Q7aW5kZXggPSBmb2xpby0mZ3Q7aW5kZXggJiM0MzsgaTsKIAomIzQzOwkJLyoKJiM0MzsJCSAqIHBhZ2UtJmd0O3ByaXZhdGUgc2hvdWxkIG5vdCBiZSBzZXQgaW4gdGFpbCBwYWdlcy4gV2FybiBvbmNlCiYjNDM7CQkgKiBpZiBwcml2YXRlIGlzIHVuZXhwZWN0ZWRseSBzZXQuIERvIGl0IGJlZm9yZSBzd2FwLnZhbCBhc3NpZ25tZW50CiYjNDM7CQkgKiBzaW5jZSBwcml2YXRlIG92ZXJsYXBzIHdpdGggc3dhcC52YWwuCiYjNDM7CQkgKi8KJiM0MzsJCVZNX1dBUk5fT05fT05DRV9QQUdFKG5ld19mb2xpby0mZ3Q7cHJpdmF0ZSwgbmV3X2hlYWQpOwomIzQzOwogCQlpZiAoZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKQogCQkJbmV3X2ZvbGlvLSZndDtzd2FwLnZhbCA9IGZvbGlvLSZndDtzd2FwLnZhbCAmIzQzOyBpOwogCmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaAppbmRleCBmYTRmYjY5NDQ0ZWNkYy4uZmJkOWZiODQzNDFiYzcgMTAwNjQ0Ci0tLSBhL21tL2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvbW0vaW50ZXJuYWwuaApAQCAtOTAyLDcgJiM0Mzs5MDIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJlcF9jb21wb3VuZF90YWlsKHN0cnVjdCBwYWdlICp0YWlsLAogewogCXRhaWwtJmd0O21hcHBpbmcgPSBUQUlMX01BUFBJTkc7CiAJc2V0X2NvbXBvdW5kX2hlYWQodGFpbCwgaGVhZCwgb3JkZXIpOwotCXNldF9wYWdlX3ByaXZhdGUodGFpbCwgMCk7CiYjNDM7CVZNX1dBUk5fT05fT05DRSh0YWlsLSZndDtwcml2YXRlKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGluaXRfY29tcG91bmRfdGFpbChzdHJ1Y3QgcGFnZSAqdGFpbCwKZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuYwppbmRleCA3NjJkOWI2YmM3OTJmMS4uNzIzYTUyZGZjODBmNmQgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmMKQEAgLTEzNzYsMTUgJiM0MzsxMzc2LDIyIEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSwKICNlbmRpZgogCQl9CiAJCWZvciAoaSA9IDE7IGkgJmx0OyAoMSAmbHQ7Jmx0OyBvcmRlcik7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJc3RydWN0IHBhZ2UgKnRhaWxfcGFnZSA9IHBhZ2UgJiM0MzsgaTsKJiM0MzsKIAkJCWlmIChjb21wb3VuZCkKLQkJCQliYWQgJiM0Mzs9IGZyZWVfdGFpbF9wYWdlX3ByZXBhcmUocGFnZSwgcGFnZSAmIzQzOyBpKTsKJiM0MzsJCQkJYmFkICYjNDM7PSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7CiAJCQlpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7Ci0JCQkJaWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSAmIzQzOyBpKSkgewomIzQzOwkJCQlpZiAoZnJlZV9wYWdlX2lzX2JhZCh0YWlsX3BhZ2UpKSB7CiAJCQkJCWJhZCYjNDM7JiM0Mzs7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAkJCX0KLQkJCShwYWdlICYjNDM7IGkpLSZndDtmbGFncy5mICZhbXA7PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQOwomIzQzOwkJCXRhaWxfcGFnZS0mZ3Q7ZmxhZ3MuZiAmYW1wOz0gflBBR0VfRkxBR1NfQ0hFQ0tfQVRfUFJFUDsKJiM0MzsJCQlpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpICZhbXA7JmFtcDsgdGFpbF9wYWdlLSZndDtwcml2YXRlKSB7CiYjNDM7CQkJCWJhZF9wYWdlKHRhaWxfcGFnZSwgJiMzNDtub256ZXJvIHByaXZhdGUmIzM0Oyk7CiYjNDM7CQkJCWJhZCYjNDM7JiM0Mzs7CiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwkJCX0KIAkJfQogCX0KIAlpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSkgewpkaWZmIC0tZ2l0IGEvbW0vcGVyY3B1LWttLmMgYi9tbS9wZXJjcHUta20uYwppbmRleCA0ZWZhNzRhNDk1Y2I2Yi4uN2ZmZTg0YWRhZGI5ZDkgMTAwNjQ0Ci0tLSBhL21tL3BlcmNwdS1rbS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3BlcmNwdS1rbS5jCkBAIC05NCw4ICYjNDM7OTQsMTUgQEAgc3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaykKIAlwY3B1X3N0YXRzX2NodW5rX2RlYWxsb2MoKTsKIAl0cmFjZV9wZXJjcHVfZGVzdHJveV9jaHVuayhjaHVuay0mZ3Q7YmFzZV9hZGRyKTsKIAotCWlmIChjaHVuay0mZ3Q7ZGF0YSkKJiM0MzsJaWYgKGNodW5rLSZndDtkYXRhKSB7CiYjNDM7CQlzdHJ1Y3QgcGFnZSAqcGFnZXMgPSAoc3RydWN0IHBhZ2UgKiljaHVuay0mZ3Q7ZGF0YTsKJiM0MzsJCWludCBpOwomIzQzOwomIzQzOwkJLyogY2xlYXIgY2h1bmsgaW5mbyBmcm9tIGVhY2ggcGFnZSBiZWZvcmUgZnJlZSB0aGVtICovCiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgbnJfcGFnZXM7IGkmIzQzOyYjNDM7KQomIzQzOwkJCXBjcHVfc2V0X3BhZ2VfY2h1bmsocGFnZXMgJiM0MzsgaSwgTlVMTCk7CiAJCV9fZnJlZV9wYWdlcyhjaHVuay0mZ3Q7ZGF0YSwgb3JkZXJfYmFzZV8yKG5yX3BhZ2VzKSk7CiYjNDM7CX0KIAlwY3B1X2ZyZWVfY2h1bmsoY2h1bmspOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMzIKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBjbGVhcmx5IG1lc3Npbmcgd2l0aCBzb21lIGNyaXRpY2FsIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIEl0IHRvdWNoZXMgc2V2ZXJhbCBrZXkgZmlsZXM6IGBtbS9jb21wYWN0aW9uLmNgLCBgbW0vaHVnZV9tZW1vcnkuY2AsIGBtbS9pbnRlcm5hbC5oYCwgYG1tL3BhZ2VfYWxsb2MuY2AsIGFuZCBgbW0vcGVyY3B1LWttLmNgLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBob3cgbWVtb3J5IGlzIGFsbG9jYXRlZCwgZnJlZWQsIGFuZCBtYW5hZ2VkIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEkgc2VlIHRoZXkmIzM5O3ZlIHJlbW92ZWQgYHNldF9wYWdlX3ByaXZhdGUocGFnZSwgb3JkZXIpYCBpbiBgbW0vY29tcGFjdGlvbi5jYCwgYWRkZWQgYSBgVk1fV0FSTl9PTl9PTkNFX1BBR0VgIGNoZWNrIGluIGBtbS9odWdlX21lbW9yeS5jYCwgYW5kIHJlcGxhY2VkIHNvbWUgYHNldF9wYWdlX3ByaXZhdGVgIGNhbGxzIHdpdGggYFZNX1dBUk5fT05fT05DRWAgYXNzZXJ0aW9ucyBpbiBgbW0vaW50ZXJuYWwuaGAuIFRoZXJlJiMzOTtzIGFsc28gYSBuZXcgYHRhaWxfcGFnZS0mZ3Q7cHJpdmF0ZWAgY2hlY2sgaW4gYG1tL3BhZ2VfYWxsb2MuY2AgYW5kIHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgY2xlYXJpbmcgY2h1bmsgaW5mb3JtYXRpb24gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gYG1tL3BlcmNwdS1rbS5jYC4KCkdpdmVuIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCBteSBndXQgc2F5cyB0aGlzIGRlZmluaXRlbHkgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIEkgbmVlZCB0byBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGF0IEkgY291bGQgdGFyZ2V0LiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IGZ1bmN0aW9ucyBsaWtlIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYF9fZnJlZV9wYWdlc19wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AsIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAgYXJlIHByb2JhYmx5IGdvb2QgY2FuZGlkYXRlcyB0byBmb2N1cyBvbi4gVGhlc2Ugc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciB0cmlnZ2VyaW5nIGludGVyZXN0aW5nIG1lbW9yeSBtYW5hZ2VtZW50IHNjZW5hcmlvcy4KCkkmIzM5O20gYWxzbyBnb2luZyB0byBjaGVjayB3aGljaCBjb25maWd1cmF0aW9ucyBlbmFibGUgdGhlc2Ugc2VjdGlvbnMgb2YgY29kZS4gU28sIGBtbS9jb21wYWN0aW9uLmNgIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19DT01QQUNUSU9OYCwgYG1tL2h1Z2VfbWVtb3J5LmNgIGRlcGVuZHMgb24gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGFuZCBgbW0vcGVyY3B1LWttLmNgIG5lZWRzIGBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNYC4gSSYjMzk7bGwgYWxzbyBuZWVkIHRvIGRpdmUgaW50byB0aGUgdXNhZ2Ugb2YgYG1tL3BlcmNwdS1rbS5jYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19ORUVEX1BFUl9DUFVfS00mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3Rfdm1hbGxvYy5jPTMxNj1wY3B1X2FsbG9jX3Rlc3Qodm9pZClcbi0tXG5saWIvdGVzdF92bWFsbG9jLmMtMzE4LVx0aW50IHJ2ID0gMDtcbmxpYi90ZXN0X3ZtYWxsb2MuYzozMTk6I2lmbmRlZiBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNXG5saWIvdGVzdF92bWFsbG9jLmMtMzIwLVx0dm9pZCBfX3BlcmNwdSAqKnBjcHU7XG4tLVxubW0vcGVyY3B1LWttLmMtMTItICpcbm1tL3BlcmNwdS1rbS5jOjEzOiAqIC0gZGVmaW5lIENPTkZJR19ORUVEX1BFUl9DUFVfS00gZnJvbSB0aGUgYXJjaCBLY29uZmlnLlxubW0vcGVyY3B1LWttLmMtMTQtICpcbi0tXG5tbS9wZXJjcHUuYz0xNTc2PXN0YXRpYyBpbnQgX19pbml0IHBjcHVfdmVyaWZ5X2FsbG9jX2luZm8oY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWkpO1xubW0vcGVyY3B1LmMtMTU3Ny1cbm1tL3BlcmNwdS5jOjE1Nzg6I2lmZGVmIENPTkZJR19ORUVEX1BFUl9DUFVfS01cbm1tL3BlcmNwdS5jLTE1NzktI2luY2x1ZGUgXCYjMzQ7cGVyY3B1LWttLmNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjU2CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBgQ09ORklHX05FRURfUEVSX0NQVV9LTWAgYW5kIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIHNvIGBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNYCBpcyBhbiBhcmNoIGNvbmZpZywgbm90IHNvbWV0aGluZyBJIHNlZSBhbGwgdGhlIHRpbWUsIGJ1dCBJIGtub3cgaXQmIzM5O3MgdXN1YWxseSBzcGVjaWZpYyB0byBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZXMuIFRoaW5rIG02OGssIG1pY3JvYmxhemUsIG5pb3MyLCB0aGF0IHNvcnQgb2YgdGhpbmcuLi4gb3Igc3lzdGVtcyB3aXRob3V0IGZ1bGwgbWVtb3J5IG1hbmFnZW1lbnQgdW5pdHMgKG5vbW11KS4gSXQmIzM5O3MgZ290IG1lIGN1cmlvdXMsIHRob3VnaC4KCkkgc2hvdWxkIHByb2JhYmx5IGRpdmUgaW50byBob3cgdGhpcyBpbXBhY3RzIHRoZSBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQuIENvbXBhY3Rpb24gaXMgd2hlcmUgSSYjMzk7ZCBzdGFydC4gQW5kIGh1Z2VwYWdlcyEgYG1tL2NvbXBhY3Rpb24uY2AgYW5kIGBtbS9odWdlX21lbW9yeS5jYCBzZWVtIGxpa2UgdGhlIGxpa2VseSBwbGFjZXMgdGhpcyBjb25maWcgd291bGQgaGF2ZSBhbiBpbXBhY3QuIExldCBtZSBjaGVjayB0aGUgY29kZSB0aGVyZS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBwZXItQ1BVIGttYWxsb2Mgc3R1ZmYgaXMgaG9va2VkIGluLi4uIGFuZCBob3cgdGhlIGFyY2hpdGVjdHVyZXMgdGhhdCAqbmVlZCogdGhpcyBzZXR0aW5nIGludGVyYWN0IHdpdGggY29tcGFjdGlvbiBhbmQgaHVnZSBwYWdlIGFsbG9jYXRpb24uIFNvdW5kcyBsaWtlIGEgZnVuIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0NPTVBBQ1RJT04mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0PTExND1jb21wYWN0X21lbW9yeVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdC0xMTYtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3Q6MTE3OkF2YWlsYWJsZSBvbmx5IHdoZW4gQ09ORklHX0NPTVBBQ1RJT04gaXMgc2V0LiBXaGVuIDEgaXMgd3JpdHRlbiB0byB0aGUgZmlsZSxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdC0xMTgtYWxsIHpvbmVzIGFyZSBjb21wYWN0ZWQgc3VjaCB0aGF0IGZyZWUgbWVtb3J5IGlzIGF2YWlsYWJsZSBpbiBjb250aWd1b3VzXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0PTE0NT1jb21wYWN0X3VuZXZpY3RhYmxlX2FsbG93ZWRcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3QtMTQ3LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0OjE0ODpBdmFpbGFibGUgb25seSB3aGVuIENPTkZJR19DT01QQUNUSU9OIGlzIHNldC4gV2hlbiBzZXQgdG8gMSwgY29tcGFjdGlvbiBpc1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0LTE0OS1hbGxvd2VkIHRvIGV4YW1pbmUgdGhlIHVuZXZpY3RhYmxlIGxydSAobWxvY2tlZCBwYWdlcykgZm9yIHBhZ2VzIHRvIGNvbXBhY3QuXG4tLVxuYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9Mjc0PWV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTtcbmFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3NS1cbmFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjI3NjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3Ny0jZGVmaW5lIF9fSEFWRV9BUkNIX1BURVBfR0VUX0FORF9DTEVBUlxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAxX2RlZmNvbmZpZz0yNz1DT05GSUdfUFJFRU1QVD15XG5hcmNoL2FyYy9jb25maWdzL2F4czEwMV9kZWZjb25maWc6Mjg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL2F4czEwMV9kZWZjb25maWctMjktQ09ORklHX05FVD15XG4tLVxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnPTI2PUNPTkZJR19QUkVFTVBUPXlcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX2RlZmNvbmZpZzoyNzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX2RlZmNvbmZpZy0yOC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnPTI2PUNPTkZJR19QUkVFTVBUPXlcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX3NtcF9kZWZjb25maWc6Mjc6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnLTI4LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvaGFwc19oc19kZWZjb25maWc9MTg9Q09ORklHX01PRFVMRVM9eVxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZy0xOS0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfZGVmY29uZmlnOjIwOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZy0yMS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZz0yMT1DT05GSUdfTU9EVUxFUz15XG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZy0yMi0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZzoyMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvaGFwc19oc19zbXBfZGVmY29uZmlnLTI0LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc9MjQ9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9hcmMvY29uZmlncy9oc2RrX2RlZmNvbmZpZzoyNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWctMjYtQ09ORklHX05FVD15XG4tLVxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWc9MjI9Q09ORklHX01PRFVMRVM9eVxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWctMjMtIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldFxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWc6MjQ6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL25zaW1fNzAwX2RlZmNvbmZpZy0yNS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2RlZmNvbmZpZz0yMj1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cJiMzNDtuc2ltb3NjaVwmIzM0O1xuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9kZWZjb25maWc6MjM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2RlZmNvbmZpZy0yNC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX2RlZmNvbmZpZz0yMj1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cJiMzNDtuc2ltb3NjaV9oc1wmIzM0O1xuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19kZWZjb25maWc6MjM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX2RlZmNvbmZpZy0yNC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWc9MjA9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19zbXBfZGVmY29uZmlnOjIxOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19zbXBfZGVmY29uZmlnLTIyLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvdGIxMHhfZGVmY29uZmlnPTMwPUNPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWT15XG5hcmNoL2FyYy9jb25maWdzL3RiMTB4X2RlZmNvbmZpZzozMTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvdGIxMHhfZGVmY29uZmlnLTMyLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz0zNj1DT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRD15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWctMzktQ09ORklHX05FVD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTQzPUNPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy00NC0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo0NTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy00Ni1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y3X2RlZmNvbmZpZz0yNT1DT05GSUdfTU9EVUxFX1VOTE9BRD15XG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y3X2RlZmNvbmZpZzoyNjojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnLTI3LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZz00Nz1DT05GSUdfU0xVQl9USU5ZPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZzo0ODojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy00OS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NhbWE3X2RlZmNvbmZpZz0zOT1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NhbWE3X2RlZmNvbmZpZy00Mi0jIENPTkZJR19TV0FQIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTdfZGVmY29uZmlnOjQzOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctNDQtQ09ORklHX0NNQT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTQ0PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6NDU6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNDYtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz00MD1DT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZzo0MTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNDItQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnPTQ3PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc6NDg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNDktQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnPTM3PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWctMzktQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTM5PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc6NDA6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNDEtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZz0zOD1DT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzozOTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctNDAtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTU4PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6NTk6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctNjAtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc9MzY9Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnOjM3OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctMzgtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc9Mzc9Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnOjM4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctMzktQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz0zOD1DT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZzozOTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWctNDAtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc9MzQ9Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnOjM1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctMzYtQ09ORklHX1VTRVJGQVVMVEZEPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc9MzQ9Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZzozNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZy0zNi1DT05GSUdfRE1BUE9PTF9URVNUPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWc9MjM9Q09ORklHX01PRFVMRV9VTkxPQUQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnLTI0LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2F0aDI1X2RlZmNvbmZpZzoyNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2F0aDI1X2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZz0yOD1DT05GSUdfTU9EVUxFUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWctMzAtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZzozMTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2NpMjBfZGVmY29uZmlnLTMyLUNPTkZJR19DTUE9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnPTI3PUNPTkZJR19NT0RVTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnLTI4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnOjI5OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWctMzAtQ09ORklHX0NNQT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc9Mjc9Q09ORklHX01PRFVMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWctMjgtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc6Mjk6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9jdTE4MzAtbmVvX2RlZmNvbmZpZy0zMC1DT05GSUdfQ01BPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZz0zMD1DT05GSUdfTUlQU19DTURMSU5FX0ZST01fQk9PVExPQURFUj15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3Mvb21lZ2EycF9kZWZjb25maWctMzItIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3Mvb21lZ2EycF9kZWZjb25maWc6MzM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZy0zNC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnPTIzPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZy0yNC0jIENPTkZJR19DT1JFRFVNUCBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnOjI1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy92b2NvcmUyX2RlZmNvbmZpZz0zMD1DT05GSUdfTUlQU19DTURMSU5FX0ZST01fQk9PVExPQURFUj15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWctMzItIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWc6MzM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy92b2NvcmUyX2RlZmNvbmZpZy0zNC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZz0yNT1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnLTI2LSMgQ09ORklHX0NPUkVEVU1QIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnOjI3OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MveHdheV9kZWZjb25maWctMjgtQ09ORklHX05FVD15XG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0zNj1DT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0zNy0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTM5LUNPTkZJR19NRU1PUllfRkFJTFVSRT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2FrZWJvbm9fZGVmY29uZmlnPTE5PUNPTkZJR19JUlFfQUxMX0NQVVM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2FrZWJvbm9fZGVmY29uZmlnOjIwOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2FrZWJvbm9fZGVmY29uZmlnLTIxLSMgQ09ORklHX1NVU1BFTkQgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21pY3Jvd2F0dF9kZWZjb25maWc9MzA9Q09ORklHX1BQQ180S19QQUdFUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWljcm93YXR0X2RlZmNvbmZpZy0zMy0jIENPTkZJR19DT1JFRFVNUCBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9taWNyb3dhdHRfZGVmY29uZmlnOjM0OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWljcm93YXR0X2RlZmNvbmZpZy0zNS0jIENPTkZJR19NSUdSQVRJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZz0yMz1DT05GSUdfQ01ETElORT1cJiMzNDtjb25zb2xlPXR0eVMwLDk2MDAgaXA9ZGhjcCByb290PS9kZXYvbmZzXCYjMzQ7XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjQtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnOjI1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnLTI2LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc9MzU9Q09ORklHX0JJTkZNVF9NSVNDPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTM3LSMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQIGlzIG5vdCBzZXRcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTM5LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnPTU2PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTU4LSMgQ09ORklHX01RX0lPU0NIRURfS1lCRVIgaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc6NTk6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZy02MC0jIENPTkZJR19NSUdSQVRJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvdW0vY29uZmlncy9pMzg2X2RlZmNvbmZpZzoxOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnLTItQ09ORklHX0JJTkZNVF9NSVNDPW1cbi0tXG5hcmNoL3VtL2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoxOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMi1DT05GSUdfQklORk1UX01JU0M9bVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTMzPUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVwmIzM0O2tjNzA1XCYjMzQ7XG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzozNDojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnLTM1LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZz0zNz1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cJiMzNDtjc3BcJiMzNDtcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY2FkZW5jZV9jc3BfZGVmY29uZmlnOjM4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy9jYWRlbmNlX2NzcF9kZWZjb25maWctMzktQ09ORklHX1hURlBHQV9MQ0Q9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9MzI9Q09ORklHX0JVSUxUSU5fRFRCX05BTUU9XCYjMzQ7a2M3MDVcJiMzNDtcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc6MzM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnLTM0LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWc9MzY9Q09ORklHX0JVSUxUSU5fRFRCX05BTUU9XCYjMzQ7bHgyMDBteFwmIzM0O1xuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjM3OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL3ZpcnRfZGVmY29uZmlnPTMxPUNPTkZJR19NT0RVTEVfVU5MT0FEPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWctMzItIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZzozMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWctMzQtQ09ORklHX05FVD15XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnPTMyPUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVwmIzM0O2tjNzA1XCYjMzQ7XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnLTM0LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZzozNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZy0zNi1DT05GSUdfTkVUPXlcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaD04Mz1zdGF0aWMgaW5saW5lIGludCBjdXJyZW50X2lzX2tjb21wYWN0ZCh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTg3LVxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmg6ODg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC04OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaD0xMjk9c3RhdGljIGlubGluZSB2b2lkIHdha2V1cF9rY29tcGFjdGQocGdfZGF0YV90ICpwZ2RhdCxcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzMtXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMzQ6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzUtXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaD0xMzY9c3RydWN0IG5vZGU7XG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMzc6I2lmIGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TWVNGUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzgtZXh0ZXJuIGludCBjb21wYWN0aW9uX3JlZ2lzdGVyX25vZGUoc3RydWN0IG5vZGUgKm5vZGUpO1xuLS1cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTE0OD1zdGF0aWMgaW5saW5lIHZvaWQgY29tcGFjdGlvbl91bnJlZ2lzdGVyX25vZGUoc3RydWN0IG5vZGUgKm5vZGUpXG4tLVxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTUwLX1cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oOjE1MTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gXHUwMDI2XHUwMDI2IENPTkZJR19TWVNGUyBcdTAwMjZcdTAwMjYgQ09ORklHX05VTUEgKi9cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTE1Mi1cbi0tXG5pbmNsdWRlL2xpbnV4L2dmcC5oPTQzND1zdGF0aWMgaW5saW5lIGJvb2wgZ2ZwX2NvbXBhY3Rpb25fYWxsb3dlZChnZnBfdCBnZnBfbWFzaylcbmluY2x1ZGUvbGludXgvZ2ZwLmgtNDM1LXtcbmluY2x1ZGUvbGludXgvZ2ZwLmg6NDM2Olx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pIFx1MDAyNlx1MDAyNiAoZ2ZwX21hc2sgXHUwMDI2IF9fR0ZQX0lPKTtcbmluY2x1ZGUvbGludXgvZ2ZwLmgtNDM3LX1cbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTk2OD1zdHJ1Y3Qgem9uZSB7XG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTE2LVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxMTE3OiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTE4LVx0LyogcGZuIHdoZXJlIGNvbXBhY3Rpb24gZnJlZSBzY2FubmVyIHNob3VsZCBzdGFydCAqL1xuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTEyNS1cbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTEyNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTEyNy1cdC8qXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTM3LVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxMTM4OiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTM5LVx0LyogU2V0IHRvIHRydWUgd2hlbiB0aGUgUEdfbWlncmF0ZV9za2lwIGJpdHMgc2hvdWxkIGJlIGNsZWFyZWQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTE0Njc9dHlwZWRlZiBzdHJ1Y3QgcGdsaXN0X2RhdGEge1xuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTUyNi1cbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTUyNzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTUyOC1cdGludCBrY29tcGFjdGRfbWF4X29yZGVyO1xuLS1cbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmg9OTA9dm9pZCBjbGVhcl9wZm5ibG9ja19iaXQoY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgcGZuLFxuLS1cbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgtOTMtLyogRGVjbGFyYXRpb25zIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIGZsYWdzLiBTZWUgbW0vcGFnZV9hbGxvYy5jICovXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oOjk0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaC05NS0jZGVmaW5lIGdldF9wYWdlYmxvY2tfc2tpcChwYWdlKSBcXFxuLS1cbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmg9MTA5PXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZWJsb2NrX3NraXAoc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaC0xMTEtfVxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaDoxMTI6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oLTExMy1cbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODI2PXN0cnVjdCB0YXNrX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEzMTItXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTMxMzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMzE0LVx0c3RydWN0IGNhcHR1cmVfY29udHJvbFx0XHQqY2FwdHVyZV9jb250cm9sO1xuLS1cbmluY2x1ZGUvbGludXgvdm1fZXZlbnRfaXRlbS5oPTM0PWVudW0gdm1fZXZlbnRfaXRlbSB7IFBHUEdJTiwgUEdQR09VVCwgUFNXUElOLCBQU1dQT1VULFxuLS1cbmluY2x1ZGUvbGludXgvdm1fZXZlbnRfaXRlbS5oLTY0LSNlbmRpZlxuaW5jbHVkZS9saW51eC92bV9ldmVudF9pdGVtLmg6NjU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5pbmNsdWRlL2xpbnV4L3ZtX2V2ZW50X2l0ZW0uaC02Ni1cdFx0Q09NUEFDVE1JR1JBVEVfU0NBTk5FRCwgQ09NUEFDVEZSRUVfU0NBTk5FRCxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmg9Njc9REVGSU5FX0VWRU5UKG1tX2NvbXBhY3Rpb25faXNvbGF0ZV90ZW1wbGF0ZSwgbW1fY29tcGFjdGlvbl9mYXN0X2lzb2xhdGVfZnJlZXBhZ2VzLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaC03Ny1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaDo3ODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaC03OS1UUkFDRV9FVkVOVChtbV9jb21wYWN0aW9uX21pZ3JhdGVwYWdlcyxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tbWZsYWdzLmg9MjM2PUlGX0hBVkVfVk1fRFJPUFBBQkxFKFZNX0RST1BQQUJMRSxcdFwmIzM0O2Ryb3BwYWJsZVwmIzM0O1x0KVx0XHRcXFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21tZmxhZ3MuaC0yNDMtXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tbWZsYWdzLmg6MjQ0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxuaW5jbHVkZS90cmFjZS9ldmVudHMvbW1mbGFncy5oLTI0NS0jZGVmaW5lIENPTVBBQ1RJT05fU1RBVFVTXHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmg9MTY2PVRSQUNFX0VWRU5UKHNraXBfdGFza19yZWFwaW5nLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTE4MS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oOjE4MjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTE4My1UUkFDRV9FVkVOVChjb21wYWN0X3JldHJ5LFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTIxOC0pO1xuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmg6MjE5OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmgtMjIwLSNlbmRpZlxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDU2Mz1zdGF0aWMgdm9pZCBfX3NjaGVkX2ZvcmsodTY0IGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy00NjA4LVxua2VybmVsL3NjaGVkL2NvcmUuYzo0NjA5OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxua2VybmVsL3NjaGVkL2NvcmUuYy00NjEwLVx0cC1cdTAwM2VjYXB0dXJlX2NvbnRyb2wgPSBOVUxMO1xuLS1cbm1tL2NvbXBhY3Rpb24uYy0yOC1cbm1tL2NvbXBhY3Rpb24uYzoyOTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL2NvbXBhY3Rpb24uYy0zMC0vKlxuLS1cbm1tL2NvbXBhY3Rpb24uYz01OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdmlhX2NvbXBhY3RfbWVtb3J5KGludCBvcmRlcikgeyByZXR1cm4gZmFsc2U7IH1cbi0tXG5tbS9jb21wYWN0aW9uLmMtNjEtXG5tbS9jb21wYWN0aW9uLmM6NjI6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXG5tbS9jb21wYWN0aW9uLmMtNjMtXG4tLVxubW0vY29tcGFjdGlvbi5jPTkxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHJlbGVhc2VfZnJlZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVwYWdlcylcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTE1LVxubW0vY29tcGFjdGlvbi5jOjExNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL2NvbXBhY3Rpb24uYy0xMTctXG4tLVxubW0vY29tcGFjdGlvbi5jPTQ5MD1zdGF0aWMgYm9vbCB0ZXN0X2FuZF9zZXRfc2tpcChzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxubW0vY29tcGFjdGlvbi5jLTQ5My19XG5tbS9jb21wYWN0aW9uLmM6NDk0OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vY29tcGFjdGlvbi5jLTQ5NS1cbi0tXG5tbS9jb21wYWN0aW9uLmM9MTMzNj1pc29sYXRlX21pZ3JhdGVwYWdlc19yYW5nZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4tLVxubW0vY29tcGFjdGlvbi5jLTEzNzEtXG5tbS9jb21wYWN0aW9uLmM6MTM3MjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xubW0vY29tcGFjdGlvbi5jOjEzNzM6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS9jb21wYWN0aW9uLmMtMTM3NC1cbi0tXG5tbS9jb21wYWN0aW9uLmM9MzM1MD1zdWJzeXNfaW5pdGNhbGwoa2NvbXBhY3RkX2luaXQpXG5tbS9jb21wYWN0aW9uLmMtMzM1MS1cbm1tL2NvbXBhY3Rpb24uYzozMzUyOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xuLS1cbm1tL2ludGVybmFsLmg9MTAwNj1zdGF0aWMgaW5saW5lIHZvaWQgc3BhcnNlX2luaXRfc3Vic2VjdGlvbl9tYXAodm9pZClcbi0tXG5tbS9pbnRlcm5hbC5oLTEwMTAtXG5tbS9pbnRlcm5hbC5oOjEwMTE6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXG5tbS9pbnRlcm5hbC5oLTEwMTItXG4tLVxubW0vaW50ZXJuYWwuaD0xMDgwPXZvaWQgaW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHN0cnVjdCBwYWdlICpwYWdlKTtcbm1tL2ludGVybmFsLmgtMTA4MS1cbm1tL2ludGVybmFsLmg6MTA4MjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xubW0vaW50ZXJuYWwuaC0xMDgzLVxuLS1cbm1tL21tX2luaXQuYz0xMzI3PXN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsXG4tLVxubW0vbW1faW5pdC5jLTEzNjktXG5tbS9tbV9pbml0LmM6MTM3MDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL21tX2luaXQuYy0xMzcxLXN0YXRpYyB2b2lkIHBnZGF0X2luaXRfa2NvbXBhY3RkKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4tLVxubW0vb29tX2tpbGwuYz00NTY9c3RhdGljIHZvaWQgZHVtcF9oZWFkZXIoc3RydWN0IG9vbV9jb250cm9sICpvYylcbi0tXG5tbS9vb21fa2lsbC5jLTQ2MC1cdFx0XHRjdXJyZW50LVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqKTtcbm1tL29vbV9raWxsLmM6NDYxOlx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01QQUNUSU9OKSBcdTAwMjZcdTAwMjYgb2MtXHUwMDNlb3JkZXIpXG5tbS9vb21fa2lsbC5jLTQ2Mi1cdFx0cHJfd2FybihcJiMzNDtDT01QQUNUSU9OIGlzIGRpc2FibGVkISEhXFxuXCYjMzQ7KTtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NzEyPXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYnVkZHlfb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNzE3LVxubW0vcGFnZV9hbGxvYy5jOjcxODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL3BhZ2VfYWxsb2MuYy03MTktc3RhdGljIGlubGluZSBzdHJ1Y3QgY2FwdHVyZV9jb250cm9sICp0YXNrX2NhcGMoc3RydWN0IHpvbmUgKnpvbmUpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTc2Nz1jb21wYWN0aW9uX2NhcHR1cmUoc3RydWN0IGNhcHR1cmVfY29udHJvbCAqY2FwYywgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTc3MS19XG5tbS9wYWdlX2FsbG9jLmM6NzcyOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vcGFnZV9hbGxvYy5jLTc3My1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDA1ND1fX2FsbG9jX3BhZ2VzX21heV9vb20oZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDE0NS1cbm1tL3BhZ2VfYWxsb2MuYzo0MTQ2OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0vcGFnZV9hbGxvYy5jLTQxNDctLyogVHJ5IG1lbW9yeSBjb21wYWN0aW9uIGZvciBoaWdoLW9yZGVyIGFsbG9jYXRpb25zIGJlZm9yZSByZWNsYWltICovXG4tLVxubW0vcGFnZV9hbGxvYy5jPTQyODY9c2hvdWxkX2NvbXBhY3RfcmV0cnkoZ2ZwX3QgZ2ZwX21hc2ssIHN0cnVjdCBhbGxvY19jb250ZXh0ICphYywgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00MzExLX1cbm1tL3BhZ2VfYWxsb2MuYzo0MzEyOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vcGFnZV9hbGxvYy5jLTQzMTMtXG4tLVxubW0vdm1zY2FuLmM9NjMyMz1zdGF0aWMgdm9pZCBzaHJpbmtfem9uZXMoc3RydWN0IHpvbmVsaXN0ICp6b25lbGlzdCwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXG4tLVxubW0vdm1zY2FuLmMtNjM2My1cdFx0XHQgKi9cbm1tL3Ztc2Nhbi5jOjYzNjQ6XHRcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pIFx1MDAyNlx1MDAyNlxubW0vdm1zY2FuLmMtNjM2NS1cdFx0XHQgICAgc2MtXHUwMDNlb3JkZXIgXHUwMDNlIFBBR0VfQUxMT0NfQ09TVExZX09SREVSIFx1MDAyNlx1MDAyNlxuLS1cbm1tL3Ztc3RhdC5jPTEwNDI9dm9pZCBtZW1tYXBfcGFnZXNfYWRkKGxvbmcgZGVsdGEpXG4tLVxubW0vdm1zdGF0LmMtMTA0Ni1cbm1tL3Ztc3RhdC5jOjEwNDc6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS92bXN0YXQuYy0xMDQ4LVxuLS1cbm1tL3Ztc3RhdC5jPTExODc9Y29uc3QgY2hhciAqIGNvbnN0IHZtc3RhdF90ZXh0W10gPSB7XG4tLVxubW0vdm1zdGF0LmMtMTM3MC0jZW5kaWZcbm1tL3Ztc3RhdC5jOjEzNzE6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS92bXN0YXQuYy0xMzcyLVx0W0koQ09NUEFDVE1JR1JBVEVfU0NBTk5FRCldXHRcdD0gXCYjMzQ7Y29tcGFjdF9taWdyYXRlX3NjYW5uZWRcJiMzNDssXG4tLVxubW0vdm1zdGF0LmMtMTQ5Ni1cbm1tL3Ztc3RhdC5jOjE0OTc6I2lmIChkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pKSB8fCBcXFxubW0vdm1zdGF0LmMtMTQ5OC0gICAgIGRlZmluZWQoQ09ORklHX1BST0NfRlMpXG4tLVxubW0vdm1zdGF0LmM9MjI2OD12b2lkIF9faW5pdCBpbml0X21tX2ludGVybmFscyh2b2lkKVxuLS1cbm1tL3Ztc3RhdC5jLTIzMDEtXG5tbS92bXN0YXQuYzoyMzAyOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pXG5tbS92bXN0YXQuYy0yMzAzLVxuLS1cbm1tL3pzbWFsbG9jLmM9MjcwPXN0cnVjdCB6c19wb29sIHtcbi0tXG5tbS96c21hbGxvYy5jLTI4NC0jZW5kaWZcbm1tL3pzbWFsbG9jLmM6Mjg1OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yODYtXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrO1xuLS1cbm1tL3pzbWFsbG9jLmM9NDMxPXN0YXRpYyBib29sIFpzSHVnZVBhZ2Uoc3RydWN0IHpzcGFnZSAqenNwYWdlKVxuLS1cbm1tL3pzbWFsbG9jLmMtNDM1LVxubW0venNtYWxsb2MuYzo0MzY6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTQzNy1zdGF0aWMgdm9pZCBraWNrX2RlZmVycmVkX2ZyZWUoc3RydWN0IHpzX3Bvb2wgKnBvb2wpO1xuLS1cbm1tL3pzbWFsbG9jLmM9MTAyNz1zdGF0aWMgc3RydWN0IHpzcGFnZSAqYWxsb2NfenNwYWdlKHN0cnVjdCB6c19wb29sICpwb29sLFxuLS1cbm1tL3pzbWFsbG9jLmMtMTAzNy1cbm1tL3pzbWFsbG9jLmM6MTAzODpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikpXG5tbS96c21hbGxvYy5jLTEwMzktXHRcdGdmcCBcdTAwMjY9IH5fX0dGUF9NT1ZBQkxFO1xuLS1cbm1tL3pzbWFsbG9jLmM9MTQ1MT1zdGF0aWMgdm9pZCBvYmpfZnJlZShpbnQgY2xhc3Nfc2l6ZSwgdW5zaWduZWQgbG9uZyBvYmopXG4tLVxubW0venNtYWxsb2MuYy0xNDc4LVxubW0venNtYWxsb2MuYzoxNDc5OiNpZiAoWlNfT0JKX0NMQVNTX0JJVFMgXHUwMDNlIDApIHx8IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pXG5tbS96c21hbGxvYy5jLTE0ODAtLyogRm9sZHMgdG8gMCB3aGVuIFpTX09CSl9DTEFTU19CSVRTID09IDA7IG5vIGlmZGVmIG5lZWRlZCBhdCBjYWxsZXJzLiAqL1xuLS1cbm1tL3pzbWFsbG9jLmM9MTc1MD1zdGF0aWMgaW50IHB1dGJhY2tfenNwYWdlKHN0cnVjdCBzaXplX2NsYXNzICpjbGFzcywgc3RydWN0IHpzcGFnZSAqenNwYWdlKVxuLS1cbm1tL3pzbWFsbG9jLmMtMTc1OS1cbm1tL3pzbWFsbG9jLmM6MTc2MDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL3pzbWFsbG9jLmMtMTc2MS0vKlxuLS1cbm1tL3pzbWFsbG9jLmM9MjM5MT1zdGF0aWMgaW50IF9faW5pdCB6c19pbml0KHZvaWQpXG4tLVxubW0venNtYWxsb2MuYy0yMzk4LVxubW0venNtYWxsb2MuYzoyMzk5OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yNDAwLVx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXHUwMDI2enNtYWxsb2NfbW9wcywgUEdUWV96c21hbGxvYyk7XG4tLVxubW0venNtYWxsb2MuYz0yNDEwPXN0YXRpYyB2b2lkIF9fZXhpdCB6c19leGl0KHZvaWQpXG5tbS96c21hbGxvYy5jLTI0MTEte1xubW0venNtYWxsb2MuYzoyNDEyOiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yNDEzLVx0c2V0X21vdmFibGVfb3BzKE5VTEwsIFBHVFlfenNtYWxsb2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTk2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFzc2Vzc2luZyBQb3RlbnRpYWwgU3lzdGVtIEltcGFjdHMqKgoKUmlnaHQsIGBDT05GSUdfQ09NUEFDVElPTmAgaXMgYmFzaWNhbGx5IGV2ZXJ5d2hlcmUgdGhlc2UgZGF5cywgc28gdGhhdCYjMzk7cyBhIGdpdmVuLiBOb3csIGxldCYjMzk7cyBwaXZvdCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGludGVycGxheSB3aXRoIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaG93IHRoZXNlIHR3byBpbnRlcmFjdCBpbiB0aGUgb3ZlcmFsbCBtZW1vcnkgbWFuYWdlbWVudCBzY2hlbWUuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBmcmFnbWVudGF0aW9uIGlzc3VlcywgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcy4gSSBuZWVkIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgZ290Y2hhcyBvciBvcHRpbWl6YXRpb25zIHRoYXQgaW1tZWRpYXRlbHkganVtcCBvdXQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgbXkgb3duIHByaW9yIGV4cGVyaWVuY2Ugc3VnZ2VzdHMgYWJvdXQgaG93IHRoZXNlIHR3byB3b3JrIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTkyNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjIucnN0PTE0MjY9VGhlIGZvbGxvd2luZyBuZXN0ZWQga2V5cyBhcmUgZGVmaW5lZC5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3QtMTc0My1cdFx0TnVtYmVyIG9mIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyB3aGljaCB3ZXJlIGFsbG9jYXRlZCB0byBzYXRpc2Z5XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3Q6MTc0NDpcdFx0YSBwYWdlIGZhdWx0LiBUaGlzIGNvdW50ZXIgaXMgbm90IHByZXNlbnQgd2hlbiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdC0xNzQ1LSAgICAgICAgICAgICAgICBpcyBub3Qgc2V0LlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdC0xNzQ5LVx0XHRjb2xsYXBzaW5nIGFuIGV4aXN0aW5nIHJhbmdlIG9mIHBhZ2VzLiBUaGlzIGNvdW50ZXIgaXMgbm90XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3Q6MTc1MDpcdFx0cHJlc2VudCB3aGVuIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSBpcyBub3Qgc2V0LlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjIucnN0LTE3NTEtXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS90cmFuc2h1Z2UucnN0PTM5OT1BZGRpdGlvbmFsbHksIEtjb25maWcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgZGVmYXVsdCBodWdlcGFnZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS90cmFuc2h1Z2UucnN0OjQwMDpwb2xpY2llcyBmb3Igc2htZW0gKGBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfKmBgKSBhbmQgdG1wZnNcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJzdDo0MDE6KGBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfKmBgKSBhdCBidWlsZCB0aW1lLiBSZWZlciB0byB0aGVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJzdC00MDItS2NvbmZpZyBoZWxwIGZvciBtb3JlIGRldGFpbHMuXG4tLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy90bXBmcy5yc3Q9MTExPXRtcGZzIGFsc28gc3VwcG9ydHMgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyB3aGljaCByZXF1aXJlcyBhIGtlcm5lbFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy90bXBmcy5yc3Q6MTEyOmNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgYW5kIHdpdGggaHVnZSBzdXBwb3J0ZWQgZm9yXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3RtcGZzLnJzdC0xMTMteW91ciBzeXN0ZW0gKGhhc190cmFuc3BhcmVudF9odWdlcGFnZSgpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMpLlxuLS1cbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3Q9MTYyPXNobWVtIG1vdW50cG9pbnQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvbmUgKCYjMzk7c2htX21udCYjMzk7KS4gRm9yIGJ1aWxkc1xuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdDoxNjM6d2l0aCBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgZW5hYmxlZCwgZnVydGhlciBjYWxscyB0b1xuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdC0xNjQtZHJtX2dlbV9vYmplY3RfaW5pdCgpIHdpbGwgbGV0IHNobWVtIGFsbG9jYXRlIGh1Z2UgcGFnZXMgd2hlblxuLS1cbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3Q9MzA4PUluIG9yZGVyIHRvIHJlZHVjZSBwYWdlIHRhYmxlIG92ZXJoZWFkLCBpZiB0aGUgaW50ZXJuYWwgc2htZW0gbW91bnRwb2ludFxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdC0zMDktXCYjMzQ7c2htX21udFwmIzM0OyBpcyBjb25maWd1cmVkIHRvIHVzZSB0cmFuc3BhcmVudCBodWdlIHBhZ2VzIChmb3IgYnVpbGRzIHdpdGhcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3Q6MzEwOkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSBlbmFibGVkKSBhbmQgaWYgdGhlIHNobWVtIGJhY2tpbmcgc3RvcmVcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QtMzExLW1hbmFnZWQgdG8gYWxsb2NhdGUgYSBodWdlIHBhZ2UgZm9yIGEgZmF1bHR5IGFkZHJlc3MsIHRoZSBmYXVsdCBoYW5kbGVyXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIxMD1HZW5lcmFsXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI2NS1gYGRlZmVycmVkX3NwbGl0X3F1ZXVlYGBcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNjY6ICBQZXItbm9kZSBxdWV1ZSBvZiBodWdlIHBhZ2VzIHRoYXQgdGhlaXIgc3BsaXQgd2FzIGRlZmVycmVkLiBEZWZpbmVkIG9ubHkgd2hlbiBgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWBgIGlzIGVuYWJsZWQuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjY3LVxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q9MjA1PW5vZGVfem9uZWxpc3Rz5byV55So44CCXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTEtYGBkZWZlcnJlZF9zcGxpdF9xdWV1ZWBgXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjI1Mjrmr4/kuKroioLngrnnmoTlpKfpobXpmJ/liJfvvIzov5nkupvlpKfpobXnmoTmi4bliIbooqvmjqjov5/kuobjgILku4XlnKjlvIDlkK/kuoYgYGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgYFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTMt6YWN572u6YCJ6aG55pe25a6a5LmJ44CCXG4tLVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmg9MTM5PVBURV9CSVRfRlVOQyhzd3BfY2xlYXJfZXhjbHVzaXZlLCBcdTAwMjY9IH4oX1BBR0VfU1dQX0VYQ0xVU0lWRSkpO1xuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmgtMTQwLVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmg6MTQxOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3BndGFibGUtYml0cy1hcmN2Mi5oLTE0Mi0jaW5jbHVkZSBcdTAwM2Nhc20vaHVnZXBhZ2UuaFx1MDAzZVxuLS1cbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3RsYmZsdXNoLmg9MTU9dm9pZCBsb2NhbF9mbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTE2LVx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTtcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3RsYmZsdXNoLmg6MTc6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0xOC12b2lkIGxvY2FsX2ZsdXNoX3BtZF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0yNy0jZGVmaW5lIGZsdXNoX3RsYl9tbShtbSlcdFx0bG9jYWxfZmx1c2hfdGxiX21tKG1tKVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaDoyODojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTI5LSNkZWZpbmUgZmx1c2hfcG1kX3RsYl9yYW5nZSh2bWEsIHMsIGUpXHRsb2NhbF9mbHVzaF9wbWRfdGxiX3JhbmdlKHZtYSwgcywgZSlcbi0tXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oPTM3PWV4dGVybiB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oOjM4OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3RsYmZsdXNoLmgtMzktZXh0ZXJuIHZvaWQgZmx1c2hfcG1kX3RsYl9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpO1xuLS1cbmFyY2gvYXJjL21tL3RsYi5jPTEzND1ub2lubGluZSB2b2lkIGxvY2FsX2ZsdXNoX3RsYl9hbGwodm9pZClcbi0tXG5hcmNoL2FyYy9tbS90bGIuYy0xNTYtXG5hcmNoL2FyYy9tbS90bGIuYzoxNTc6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpKSB7XG5hcmNoL2FyYy9tbS90bGIuYy0xNTgtXHRcdGNvbnN0IGludCBzdGxiX2lkeCA9IDB4ODAwO1xuLS1cbmFyY2gvYXJjL21tL3RsYi5jPTMxMD1zdGF0aWMgaW5saW5lIHZvaWQgaXBpX2ZsdXNoX3RsYl9yYW5nZSh2b2lkICphcmcpXG4tLVxuYXJjaC9hcmMvbW0vdGxiLmMtMzE2LVxuYXJjaC9hcmMvbW0vdGxiLmM6MzE3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJjL21tL3RsYi5jLTMxOC1zdGF0aWMgaW5saW5lIHZvaWQgaXBpX2ZsdXNoX3BtZF90bGJfcmFuZ2Uodm9pZCAqYXJnKVxuLS1cbmFyY2gvYXJjL21tL3RsYi5jPTM1ND12b2lkIGZsdXNoX3RsYl9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL2FyYy9tbS90bGIuYy0zNjUtXG5hcmNoL2FyYy9tbS90bGIuYzozNjY6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcmMvbW0vdGxiLmMtMzY3LXZvaWQgZmx1c2hfcG1kX3RsYl9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL2FyYy9tbS90bGIuYz00NzI9dm9pZCB1cGRhdGVfbW11X2NhY2hlX3JhbmdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5hcmNoL2FyYy9tbS90bGIuYy01MDYtXG5hcmNoL2FyYy9tbS90bGIuYzo1MDc6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcmMvbW0vdGxiLmMtNTA4LVxuLS1cbmFyY2gvYXJjL21tL3RsYi5jPTU2Mz1pbnQgYXJjX21tdV9tdW1ib2p1bWJvKGludCBjLCBjaGFyICpidWYsIGludCBsZW4pXG4tLVxuYXJjaC9hcmMvbW0vdGxiLmMtNTk3LVx0XHRcdCAgbW11LVx1MDAzZXNfcGdfc3pfbSxcbmFyY2gvYXJjL21tL3RsYi5jOjU5ODpcdFx0XHQgIElTX0VOQUJMRUQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSA/IFwmIzM0OyAoVEhQIGVuYWJsZWQpXCYjMzQ7OlwmIzM0O1wmIzM0Oyk7XG5hcmNoL2FyYy9tbS90bGIuYy01OTktXG4tLVxuYXJjaC9hcmMvbW0vdGxiLmM9NjE2PXZvaWQgYXJjX21tdV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcmMvbW0vdGxiLmMtNjQ4LVxuYXJjaC9hcmMvbW0vdGxiLmM6NjQ5Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSBcdTAwMjZcdTAwMjZcbmFyY2gvYXJjL21tL3RsYi5jLTY1MC1cdCAgICBtbXUtXHUwMDNlc19wZ19zel9tICE9IFRPX01CKEhQQUdFX1BNRF9TSVpFKSlcbi0tXG5hcmNoL2FyYy9tbS90bGJleC5TPTc5PWV4X3NhdmVkX3JlZzE6XG4tLVxuYXJjaC9hcmMvbW0vdGxiZXguUy0xOTMtXG5hcmNoL2FyYy9tbS90bGJleC5TOjE5NDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2FyYy9tbS90bGJleC5TLTE5NS1cdGFuZC5mXHQwLCByMywgX1BBR0VfSFdfU1pcdDsgSXMgdGhpcyBIdWdlIFBNRCAodGhwKVxuLS1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3BndGFibGUtM2xldmVsLmg9MTgzPXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rc3BlY2lhbChwdGVfdCBwdGUpXG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcGd0YWJsZS0zbGV2ZWwuaC0xOTMtXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxlLTNsZXZlbC5oOjE5NDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxlLTNsZXZlbC5oLTE5NS0jZGVmaW5lIHBtZF90cmFuc19odWdlKHBtZClcdChwbWRfdmFsKHBtZCkgXHUwMDI2XHUwMDI2ICFwbWRfdGFibGUocG1kKSlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTEzNj1DT05GSUdfTUVNT1JZX0ZBSUxVUkU9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzoxMzc6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTM4LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTgyPXN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2xlYXZlX2xhenlfbW11X21vZGUodm9pZClcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC04Ni1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjg3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTg4LSNkZWZpbmUgX19IQVZFX0FSQ0hfRkxVU0hfUE1EX1RMQl9SQU5HRVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTk0LVx0X19mbHVzaF90bGJfcmFuZ2Uodm1hLCBhZGRyLCBlbmQsIFBVRF9TSVpFLCAxLCBUTEJGX05PTkUpXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDo5NTojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC05Ni1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD03ODM9c3RhdGljIGlubGluZSBib29sIHBtZF9sZWFmKHBtZF90IHBtZClcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC03OTItXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDo3OTM6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzk0LXN0YXRpYyBpbmxpbmUgaW50IHBtZF90cmFuc19odWdlKHBtZF90IHBtZClcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC04MDEtfVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6ODAyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTgwMy1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMjU5PXN0YXRpYyBpbmxpbmUgaW50IF9fcHRlcF9zZXRfYWNjZXNzX2ZsYWdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEyNjYtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMjY3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEyNjgtI2RlZmluZSBfX0hBVkVfQVJDSF9QTURQX1NFVF9BQ0NFU1NfRkxBR1Ncbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMzIxPXN0YXRpYyBpbmxpbmUgYm9vbCBfX3B0ZXBfY2xlYXJfZmx1c2hfeW91bmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTM0MC1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjEzNDE6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSB8fCBkZWZpbmVkKENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORylcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEzNDItI2RlZmluZSBfX0hBVkVfQVJDSF9QTURQX1RFU1RfQU5EX0NMRUFSX1lPVU5HXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMzQzPXN0YXRpYyBpbmxpbmUgYm9vbCBwbWRwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEzNDktfVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTM1MDojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFIHx8IENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORyAqL1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTM1MS1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMzk2PXN0YXRpYyBpbmxpbmUgcHRlX3QgX19nZXRfYW5kX2NsZWFyX2Z1bGxfcHRlcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDE0LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTQxNTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDE2LSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9IVUdFX0dFVF9BTkRfQ0xFQVJcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE0MTc9c3RhdGljIGlubGluZSBwbWRfdCBwbWRwX2h1Z2VfZ2V0X2FuZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDIxLX1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE0MjI6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQyMy1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xNDc2PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2NsZWFyX3lvdW5nX2RpcnR5X3B0ZXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQ5Ni1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE0OTc6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQ5OC0jZGVmaW5lIF9fSEFWRV9BUkNIX1BNRFBfU0VUX1dSUFJPVEVDVFxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTIwPUNPTkZJR19LU009eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMjE6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTIyLUNPTkZJR19DTUE9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3BndGFibGUuaD0yNjQ9c3RhdGljIGlubGluZSB2b2lkIHBtZF9jbGVhcihwbWRfdCAqcG1kcClcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMjcwLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjI3MTojaWZuZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3Mi0jZGVmaW5lIHBtZF9wYWdlKHBtZClcdFx0KHBmbl90b19wYWdlKHBtZF9waHlzKHBtZCkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpKVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjI3MzojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICAqL1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3NC1cbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9NTAwPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBwbWRfcGZuKHBtZF90IHBtZClcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTA0LVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjUwNTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTA2LVxuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3BndGFibGUuaD02MTQ9c3RhdGljIGlubGluZSBwbWRfdCBwbWRwX2h1Z2VfZ2V0X2FuZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNjIzLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjYyNDojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNjI1LVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnPTI0PUNPTkZJR19NT0RVTEVfVU5MT0FEPXlcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnLTI1LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnOjI2OkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy0yNy1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZz0yMz1DT05GSUdfT1NGX1BBUlRJVElPTj15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZy0yNC0jIENPTkZJR19FRklfUEFSVElUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnOjI1OkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTYwNz11bnNpZ25lZCBsb25nIGlvX3JlbWFwX3Bmbl9yYW5nZV9wZm4odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4tLVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaC02MTItXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjYxMzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTYxNC1cbi0tXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTczND1zdGF0aWMgaW5saW5lIHBtZF90IHBtZHBfaHVnZV9nZXRfYW5kX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzQzLVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaDo3NDQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaC03NDUtXG4tLVxuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYz0xNj12b2lkIHBnZF9pbml0KHZvaWQgKmFkZHIpXG4tLVxuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYy0zMi1cbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTMyLmM6MzM6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKVxuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYy0zNC12b2lkIHNldF9wbWRfYXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jLTM4LX1cbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTMyLmM6Mzk6I2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSAqL1xuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYy00MC1cbi0tXG5hcmNoL21pcHMvbW0vcGd0YWJsZS02NC5jPTcwPXZvaWQgcHVkX2luaXQodm9pZCAqYWRkcilcbi0tXG5hcmNoL21pcHMvbW0vcGd0YWJsZS02NC5jLTkxLVxuYXJjaC9taXBzL21tL3BndGFibGUtNjQuYzo5MjojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL21pcHMvbW0vcGd0YWJsZS02NC5jLTkzLXZvaWQgc2V0X3BtZF9hdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmFyY2gvbWlwcy9tbS90bGItcjRrLmM9MzkxPXZvaWQgYWRkX3dpcmVkX2VudHJ5KHVuc2lnbmVkIGxvbmcgZW50cnlsbzAsIHVuc2lnbmVkIGxvbmcgZW50cnlsbzEsXG4tLVxuYXJjaC9taXBzL21tL3RsYi1yNGsuYy00MzQtXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jOjQzNTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jLTQzNi1cbi0tXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jPTQ1Mz1FWFBPUlRfU1lNQk9MKGhhc190cmFuc3BhcmVudF9odWdlcGFnZSk7XG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jLTQ1NC1cbmFyY2gvbWlwcy9tbS90bGItcjRrLmM6NDU1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgICovXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jLTQ1Ni1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz02Mj1DT05GSUdfSFdQT0lTT05fSU5KRUNUPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjYzOkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy02NC1DT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTkwPUNPTkZJR19LU009eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjkxOkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTItQ09ORklHX01FTV9TT0ZUX0RJUlRZPXlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNGsuaD0xMTI9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHB0ZV9zZXRfaGlkeChwdGVfdCAqcHRlcCwgcmVhbF9wdGVfdCBycHRlLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC00ay5oLTExOS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC00ay5oOjEyMDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNGsuaC0xMjEtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTc0LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjc1OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTc2LSNkZWZpbmUgSF9QTURfRlJBR19TSVpFX1NISUZUICAoSF9QTURfSU5ERVhfU0laRSAmIzQzOyAzICYjNDM7IDEpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oPTE3NT1zdGF0aWMgaW5saW5lIGludCBoYXNoX19yZW1hcF80a19wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg2LSNkZWZpbmUgSF9QVEVfVEFCTEVfU0laRVx0UFRFX0ZSQUdfU0laRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjE4NzojaWYgZGVmaW5lZChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpIHx8IGRlZmluZWQgKENPTkZJR19IVUdFVExCX1BBR0UpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg4LSNkZWZpbmUgSF9QTURfVEFCTEVfU0laRVx0KChzaXplb2YocG1kX3QpIFx1MDAzY1x1MDAzYyBQTURfSU5ERVhfU0laRSkgJiM0MzsgXFxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjAwLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjIwMTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjAyLXN0YXRpYyBpbmxpbmUgY2hhciAqZ2V0X2hwdGVfc2xvdF9hcnJheShwbWRfdCAqcG1kcClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg9MjM4PXN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2hwdGVfc2xvdF92YWxpZCh1bnNpZ25lZCBjaGFyICpocHRlX3Nsb3RfYXJyYXksXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTI1MS0gKiBwbWRfdHJhbnNfaHVnZSgpIGlzIGRlZmluZWQgYXMgZmFsc2UgYXQgYnVpbGQgdGltZSBpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjI1MjogKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9biB0byBvcHRpbWl6ZSBhd2F5IGNvZGUgYmxvY2tzIGF0IGJ1aWxkXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjUzLSAqIHRpbWUgaW4gc3VjaCBjYXNlLlxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaD0yODE9ZXh0ZXJuIGludCBoYXNoX19oYXNfdHJhbnNwYXJlbnRfaHVnZXBhZ2Uodm9pZCk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg6MjgyOiNlbmRpZiAvKiAgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjgzLVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oPTI2ND1zdGF0aWMgaW5saW5lIHZvaWQgaGFzaF9fc2V0X3B0ZV9hdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTI3My1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oOjI3NDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC0yNzUtZXh0ZXJuIHZvaWQgaHB0ZV9kb19odWdlcGFnZV9mbHVzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oPTI3OD1zdGF0aWMgaW5saW5lIHZvaWQgaHB0ZV9kb19odWdlcGFnZV9mbHVzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC0yODMtfVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmg6Mjg0OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTI4NS1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmg9NDc0PWludCBfX2hhc2hfcGFnZV9odWdlKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgYWNjZXNzLCB1bnNpZ25lZCBsb25nIHZzaWQsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oLTQ3Ni1cdFx0ICAgICBpbnQgc3NpemUsIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50IG1tdV9wc2l6ZSk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmg6NDc3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaC00NzgtZXh0ZXJuIGludCBfX2hhc2hfcGFnZV90aHAodW5zaWduZWQgbG9uZyBlYSwgdW5zaWduZWQgbG9uZyBhY2Nlc3MsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg9MTA5OT1zdGF0aWMgaW5saW5lIGJvb2wgcG1kX3VzZXJfYWNjZXNzaWJsZV9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsIHBtZF90IHBtZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMTAzLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg6MTEwNDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMTA1LWV4dGVybiBwbWRfdCBwZm5fcG1kKHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oPTE0MzU9c3RhdGljIGlubGluZSBib29sIGFyY2hfbmVlZHNfcGd0YWJsZV9kZXBvc2l0KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmgtMTQ0MS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oOjE0NDI6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmgtMTQ0My1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg9MjU4PXN0YXRpYyBpbmxpbmUgaW50IHJhZGl4X19wNGRfYmFkKHA0ZF90IHA0ZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMjYyLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oOjI2MzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMjY0LVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtd2Fsay5oPTEwPXN0YXRpYyBpbmxpbmUgcHRlX3QgKmZpbmRfbGludXhfcHRlKHBnZF90ICpwZ2RpciwgdW5zaWduZWQgbG9uZyBlYSxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0xOC0jaWYgZGVmaW5lZChDT05GSUdfREVCVUdfVk0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaDoxOTpcdCEoZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSB8fCBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0yMC1cdC8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BQQ182NEtfUEFHRVMpXHQmIzQzOz0gaGFzaF82NGsub1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgJiM0Mzs9IGhhc2hfaHVnZXBhZ2Uub1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L01ha2VmaWxlLTExLW9iai0kKENPTkZJR19QUENfU1VCUEFHRV9QUk9UKVx0JiM0Mzs9IHN1YnBhZ2VfcHJvdC5vXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfbmF0aXZlLmM9NTUxPXN0YXRpYyB2b2lkIG5hdGl2ZV9ocHRlX2ludmFsaWRhdGUodW5zaWduZWQgbG9uZyBzbG90LCB1bnNpZ25lZCBsb25nIHZwbixcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9uYXRpdmUuYy01ODktXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9uYXRpdmUuYzo1OTA6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfbmF0aXZlLmMtNTkxLXN0YXRpYyB2b2lkIG5hdGl2ZV9odWdlcGFnZV9pbnZhbGlkYXRlKHVuc2lnbmVkIGxvbmcgdnNpZCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM9MTQ4PWludCBoYXNoX19tYXBfa2VybmVsX3BhZ2UodW5zaWduZWQgbG9uZyBlYSwgdW5zaWduZWQgbG9uZyBwYSwgcGdwcm90X3QgcHJvdClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMTg4LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jOjE4OTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMTkwLVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYz00MjM9RVhQT1JUX1NZTUJPTF9HUEwoaGFzaF9faGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKTtcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy00MjQtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6NDI1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy00MjYtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0yMTk4PXZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGxvbmcgdnBuLCByZWFsX3B0ZV90IHB0ZSwgaW50IHBzaXplLCBpbnQgc3NpemUsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0yMjE4LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoyMjE5OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMjIyMC12b2lkIGZsdXNoX2hhc2hfaHVnZXBhZ2UodW5zaWduZWQgbG9uZyB2c2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0yMjc0LX1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MjI3NTojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTIyNzYtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYz00OD1lYXJseV9wYXJhbShcJiMzNDtrZmVuY2Uuc2FtcGxlX2ludGVydmFsXCYjMzQ7LCBwYXJzZV9rZmVuY2VfZWFybHlfaW5pdCk7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy01MC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6NTE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy01Mi0vKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9MjY0PXB1ZF90IHB1ZF9tb2RpZnkocHVkX3QgcHVkLCBwZ3Byb3RfdCBuZXdwcm90KVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjcxLX1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6MjcyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjczLVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9NTMyPXZvaWQgcHRlcF9tb2RpZnlfcHJvdF9jb21taXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTU0MC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6NTQxOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtNTQyLS8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz0xNDE1PXZvaWQgX19yZWYgcmFkaXhfX3ZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE0MjItXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjE0MjM6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy0xNDI0LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9MTUzNj1wdWRfdCByYWRpeF9fcHVkcF9odWdlX2dldF9hbmRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy0xNTQ2LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzoxNTQ3OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTU0OC1cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9MTAxMj1zdGF0aWMgaW5saW5lIHZvaWQgX19yYWRpeF9fZmx1c2hfdGxiX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMDUwLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEwNTE6XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTA1Mi1cdFx0XHRwZ19zaXplcyB8PSBwc2l6ZV90b19ycHRpX3Bnc2l6ZShNTVVfUEFHRV8yTSk7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEwNzYtXHRcdGhlbmQgPSBlbmQgXHUwMDI2IFBNRF9NQVNLO1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEwNzc6XHRcdGhmbHVzaCA9IElTX0VOQUJMRUQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSBcdTAwMjZcdTAwMjYgaHN0YXJ0IFx1MDAzYyBoZW5kO1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEwNzgtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jPTEzMDM9dm9pZCByYWRpeF9fZmx1c2hfdGxiX3B3Y19yYW5nZV9wc2l6ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTMwOC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYzoxMzA5OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMzEwLXZvaWQgcmFkaXhfX2ZsdXNoX3RsYl9jb2xsYXBzZWRfcG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEzNTMtfVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEzNTQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEzNTUtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3N1YnBhZ2VfcHJvdC5jPTkwPXN0YXRpYyB2b2lkIHN1YnBhZ2VfcHJvdF9jbGVhcih1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zdWJwYWdlX3Byb3QuYy0xMzYtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc3VicGFnZV9wcm90LmM6MTM3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zdWJwYWdlX3Byb3QuYy0xMzgtc3RhdGljIGludCBzdWJwYWdlX3dhbGtfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvdHJhY2UuYy00LSAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3RyYWNlLmM6NTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvdHJhY2UuYy02LSNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy90aHAuaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYz0xMTc9dm9pZCBwdGVfZnJhZ21lbnRfZnJlZSh1bnNpZ25lZCBsb25nICp0YWJsZSwgaW50IGtlcm5lbClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMtMTMyLVxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jOjEzMzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMtMTM0LXZvaWQgcHRlX2ZyZWVfZGVmZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBndGFibGVfdCBwZ3RhYmxlKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYy0xNDEtfVxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jOjE0MjojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2xwYXIuYz0xMDg5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGNhbGxfYmxvY2tfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaWR4LCB1bnNpZ25lZCBsb25nICpwYXJhbSxcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvbHBhci5jLTExNDAtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvbHBhci5jOjExNDE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2xwYXIuYy0xMTQyLS8qXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0Lmg9Mzk5PXA0ZF90ICpwNGRfb2Zmc2V0KHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUtNjQuaC00MDAtXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUtNjQuaDo0MDE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0LmgtNDAyLXN0YXRpYyBpbmxpbmUgcHRlX3QgcG1kX3B0ZShwbWRfdCBwbWQpO1xuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTIwND1leHRlcm4gcGdkX3QgZWFybHlfcGdfZGlyW107XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0yMDUtXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaDoyMDY6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMjA3LXN0YXRpYyBpbmxpbmUgaW50IHBtZF9wcmVzZW50KHBtZF90IHBtZClcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaD05OTI9c3RhdGljIGlubGluZSBib29sIHB1ZF91c2VyX2FjY2Vzc2libGVfcGFnZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLCBwdWRfdCBwdWQpXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtOTk3LVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6OTk4OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTk5OS1zdGF0aWMgaW5saW5lIGludCBwbWRfdHJhbnNfaHVnZShwbWRfdCBwbWQpXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTE1OD1zdGF0aWMgaW5saW5lIHB1ZF90IHB1ZF9tb2RpZnkocHVkX3QgcHVkLCBwZ3Byb3RfdCBuZXdwcm90KVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExNjItXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMTYzOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExNjQtXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90bGJmbHVzaC5oPTU0PXZvaWQgbG9jYWxfZmx1c2hfdGxiX2tlcm5lbF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RsYmZsdXNoLmg6NTU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTU2LSNkZWZpbmUgX19IQVZFX0FSQ0hfRkxVU0hfUE1EX1RMQl9SQU5HRVxuLS1cbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jPTEyNT1pbnQgcG1kX2ZyZWVfcHRlX3BhZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jLTEzNi0jZW5kaWYgLyogQ09ORklHX0hBVkVfQVJDSF9IVUdFX1ZNQVAgKi9cbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jOjEzNzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xMzgtcG1kX3QgcG1kcF9jb2xsYXBzZV9mbHVzaChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYz0xNTc9cHVkX3QgcHVkcF9pbnZhbGlkYXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsXG4tLVxuYXJjaC9yaXNjdi9tbS9wZ3RhYmxlLmMtMTY1LX1cbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jOjE2NjojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xNjctXG4tLVxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jPTIwMz12b2lkIGZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jLTIwOC1cbmFyY2gvcmlzY3YvbW0vdGxiZmx1c2guYzoyMDk6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jLTIxMC12b2lkIGZsdXNoX3BtZF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEwOD1DT05GSUdfUEVSU0lTVEVOVF9IVUdFX1pFUk9fRk9MSU89eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwOTpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTExMC1DT05GSUdfQ01BX0RFQlVHRlM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMDE9Q09ORklHX1BFUlNJU1RFTlRfSFVHRV9aRVJPX0ZPTElPPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMDI6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMDMtQ09ORklHX0NNQV9TWVNGUz15XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xNTYwPXN0YXRpYyBpbmxpbmUgcHVkX3QgcHVkX21rZGlydHkocHVkX3QgcHVkKVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTU2Ny1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTU2ODojaWYgZGVmaW5lZChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpIHx8IGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTU2OS1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFzc2FnZV9wZ3Byb3RfcG1kKHBncHJvdF90IHBncHJvdClcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE2MTg9c3RhdGljIGlubGluZSBwbWRfdCBta19wbWRfcGh5cyh1bnNpZ25lZCBsb25nIHBoeXNwYWdlLCBwZ3Byb3RfdCBwZ3Byb3QpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjIyLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNjIzOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgfHwgQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjI0LVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTY5Mz1wdWRfdCBwdWRwX3hjaGdfZGlyZWN0KHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgcHVkX3QgKiwgcHVkX3QpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjk0LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNjk1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTY5Ni1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE4MzA9c3RhdGljIGlubGluZSBpbnQgaGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKHZvaWQpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xODMzLX1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTgzNDojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE4MzUtXG4tLVxuYXJjaC9zMzkwL21tL3BnYWxsb2MuYz0xMzk9dm9pZCBwYWdlX3RhYmxlX2ZyZWUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgKnRhYmxlKVxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjYyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUmVjZW50IENoYW5nZXMgUmVsYXRlZCB0byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApKioKCk9rYXksIHNvIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIHdpZGVseSBkZXBsb3llZCwgbWVhbmluZyBhbnkgaXNzdWVzIGFyb3VuZCBpdCBuZWVkIHRvIGJlIGFkZHJlc3NlZCBtZXRpY3Vsb3VzbHkuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgcmVjZW50IGNoYW5nZXMgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGBtbS9wYWdlX2FsbG9jLmNgLCBgbW0vaW50ZXJuYWwuaGAsIGBtbS9odWdlX21lbW9yeS5jYCwgYG1tL2NvbXBhY3Rpb24uY2AsIGFuZCBgbW0vcGVyY3B1LWttLmNgLiBUaGUgcGF0dGVybiBoZXJlIHN1Z2dlc3RzIGEgc2lnbmlmaWNhbnQgY29uY2VybiBhcm91bmQgdGhlIGBwYWdlLSZndDtwcml2YXRlYCBmaWVsZCBhbmQgaXRzIHByb3BlciBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IG9uIHRhaWwgcGFnZXMgb2YgY29tcG91bmQgcGFnZXMuCgpMb29raW5nIGF0IGBtbS9wYWdlX2FsbG9jLmNgLCB0aGUgY2hhbmdlcyBpbiBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgIGFyZSBub3RpY2VhYmxlLiBUaGUgY29kZSBub3cgaXRlcmF0ZXMgdGhyb3VnaCB0YWlsIHBhZ2VzLCB3aGljaCBpcyBleHBlY3RlZC4gQ3JpdGljYWxseSwgd2Ugc2VlIGFkZGl0aW9uYWwgY2hlY2tzIGFuZCBjbGVhcmVyIGNsZWFyaW5nIG9mIHRoZSBgUEFHRV9GTEFHU19DSEVDS19BVF9QUkVQYCBmbGFnIGFuZCBhbiBhZGRlZCBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHByaXZhdGUgZmllbGQgb24gdGFpbCBwYWdlcyBpcyBjbGVhcmVkLiBUaGVyZSYjMzk7cyBhbHNvIGEgYFZNX1dBUk5fT05fT05DRWAgbm93IGlmIGB0YWlsLSZndDtwcml2YXRlYCBpcyB1bmV4cGVjdGVkbHkgbm9uLXplcm8uIFRoaXMgc3Ryb25nbHkgaW1wbGllcyB0aGF0IHRoZXJlIHdlcmUgc2NlbmFyaW9zIHdoZXJlIHRhaWwgcGFnZXMgd2VyZW4mIzM5O3QgaGF2aW5nIHRoZWlyIHByaXZhdGUgaW5mb3JtYXRpb24gcHJvcGVybHkgY2xlYXJlZCBkdXJpbmcgdGhlIGZyZWUgcHJvY2VzcywgbGVhZGluZyB0byBwb3RlbnRpYWwgY29ycnVwdGlvbiBvciBpbmNvcnJlY3Qgc3RhdGUuCgpJbiBgbW0vaW50ZXJuYWwuaGAsIGBwcmVwX2NvbXBvdW5kX3RhaWxgIG5vdyBoYXMgYSBgVk1fV0FSTl9PTl9PTkNFYCBpZiBgdGFpbC0mZ3Q7cHJpdmF0ZWAgaXMgc2V0LCBjb25maXJtaW5nIHRoZSBhYm92ZSwgd2hlcmUgdGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHRoZSBwcml2YXRlIGZpZWxkIG9uIHRhaWwgcGFnZXMuCgpUaGVuLCB0aGUgYWRkaXRpb25zIGluIGBtbS9odWdlX21lbW9yeS5jYCBhcmUgYWxzbyBpbnRlcmVzdGluZy4gVGhlIGNvZGUgdGhhdCYjMzk7cyByZXNwb25zaWJsZSBmb3Igc3BsaXR0aW5nIGh1Z2UgcGFnZXMsIG5vdyBjb250YWlucyBhIGBWTV9XQVJOX09OX09OQ0VfUEFHRWAgY2hlY2sgdG8gZW5zdXJlIHRoZSBgcHJpdmF0ZWAgZmllbGQgaXNuJiMzOTt0IHNldCBvbiB0aGUgbmV3bHkgY3JlYXRlZCB0YWlsIGZvbGlvLCBiZWZvcmUgdGhlIGFzc2lnbm1lbnQgdG8gYHN3YXAudmFsYC4gVGhpcyBzaG93cyB0aGF0IHRoZSBvcmlnaW5hbCBwcm9ibGVtIHdhcyBldmVuIHdvcnNlLCBhZmZlY3RpbmcgaG93IGBzd2FwLnZhbGAgaXMgc2V0LCBhcyB0aGUgY29kZSB1c2VzIGBzd2FwLnZhbGAgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uIGFzIGBwcml2YXRlYC4gQWdhaW4sIHRoaXMgcmVpbmZvcmNlcyB0aGF0IHRoZSBgcGFnZS0mZ3Q7cHJpdmF0ZWAgZmllbGQgaXMgYSBjcml0aWNhbCBwb2ludCBvZiBjb25jZXJuIGluIHRoZSBoYW5kbGluZyBvZiBjb21wb3VuZCBwYWdlcyBhbmQgZXNwZWNpYWxseSBodWdlcGFnZXMuCgpUaGUgYG1tL2NvbXBhY3Rpb24uY2AgY2hhbmdlcyBzdWdnZXN0IGEgcmVsYXRlZCBwcm9ibGVtIHdpdGggcGFnZSBpc29sYXRpb24gZHVyaW5nIGNvbXBhY3Rpb24uIFRoZSByZW1vdmFsIG9mIGBzZXRfcGFnZV9wcml2YXRlYCBpbiB2YXJpb3VzIGxvY2F0aW9ucyB3aXRoaW4gYF9faXNvbGF0ZV9mcmVlX3BhZ2VgIGltcGxpZXMgdGhhdCB3ZSB3ZXJlIHBvdGVudGlhbGx5IGluY29ycmVjdGx5IHVzaW5nIGBwYWdlLSZndDtwcml2YXRlYCBmb3IgY29tcGFjdGlvbi1yZWxhdGVkIG1ldGFkYXRhLCBvciB0aGF0IHRoaXMgd2FzIGNhdXNpbmcgaXNzdWVzLiBBbHNvLCB3aXRoaW4gdGhpcyBmaWxlIHRoZXJlJiMzOTtzIGNvZGUgdGhhdCBmcmVlcyBhIHBhZ2UgaW4gYGZyZWVwYWdlYCwgd2hpY2ggcHJldmlvdXNseSB1c2VkIGBzZXRfcGFnZV9wcml2YXRlYC4KCkZpbmFsbHksIHRoZSBgbW0vcGVyY3B1LWttLmNgIGNoYW5nZXMgYXJlIGNydWNpYWwuIEhlcmUsIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGFsbG9jYXRlZCBmb3IgcGVyLUNQVSBrbWVtIGNhY2hlcywgdGhlIGNvZGUgZXhwbGljaXRseSBpdGVyYXRlcyB0aHJvdWdoIGVhY2ggcGFnZSwgY2xlYXJpbmcgcGVyLUNQVSBjaHVuayBpbmZvcm1hdGlvbi4gVGhpcyBpbmNsdWRlcyBjYWxsaW5nIGBwY3B1X3NldF9wYWdlX2NodW5rKHBhZ2VzICYjNDM7IGksIE5VTEwpYC4gVGhlIGNvbW1lbnQgaGlnaGxpZ2h0cyB0aGF0IHRoZSBzeXN0ZW0gKmNsZWFycyBjaHVuayBpbmZvKiAqZnJvbSBlYWNoIHBhZ2UqIGJlZm9yZSB0aGUgcGFnZXMgYXJlIGZyZWVkLiBUaGlzIGNsZWFycyB0aGUgbWV0YWRhdGEgZnJvbSB0aGUgcGFnZXMgYmVmb3JlIGJlaW5nIGRlYWxsb2NhdGVkLCBiZWNhdXNlIGBwY3B1X3NldF9wYWdlX2NodW5rYCBsaWtlbHkgdXRpbGl6ZXMsIGF0IHNvbWUgcG9pbnQsIHRoZSBgcGFnZS0mZ3Q7aW5kZXhgIGZpZWxkLiBUaGlzIGhpbnRzIHRoYXQgYHBhZ2UtJmd0O2luZGV4YCBjYW4gYmUgdXNlZCB0byBzZXQgY2h1bmsgaW5mb3JtYXRpb24sIGFuZCB0aGF0IHRoaXMgaW5mb3JtYXRpb24gbXVzdCBiZSByZW1vdmVkLgoKSW4gc2hvcnQsIHRoaXMgZW50aXJlIHNldCBvZiBjaGFuZ2VzIGlzIGRlZGljYXRlZCB0byBjbGVhbmluZyB1cCBhbmQgZW5zdXJpbmcgdGhlIGBwYWdlLSZndDtwcml2YXRlYCBmaWVsZCwgYW5kIHJlbGF0ZWQgbWVtb3J5IGxvY2F0aW9ucywgYXJlIHByb3Blcmx5IG1hbmFnZWQsIGVzcGVjaWFsbHkgb24gdGFpbCBwYWdlcywgZHVyaW5nIHBhZ2UgZnJlZWluZywgaXNvbGF0aW9uLCBhbmQgaHVnZSBwYWdlIG9wZXJhdGlvbnMuIFRoZSBrZXkgcHJvYmxlbSBoZXJlIHNlZW1zIHRvIGhhdmUgYmVlbiB0aGF0IGBwYWdlLSZndDtwcml2YXRlYCB3YXMgbm90IGJlaW5nIGNsZWFyZWQgY29uc2lzdGVudGx5LCB3aGljaCB3YXMgbGVhZGluZyB0byBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW5jb3JyZWN0IHN0YXRlIGFmdGVyIGZyZWUgYW5kL29yIHJlYWxsb2NhdGlvbi4gVGhlIGBtbS9wZXJjcHUta20uY2AgY2hhbmdlcyBmdXJ0aGVyIGhpZ2hsaWdodCBob3cgdGhlc2UgaXNzdWVzIGltcGFjdGVkIG90aGVyIGFyZWFzLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgcGF0Y2hzZXQgdGhhdCBhZGRyZXNzZXMgdGhlIHJvb3QgY2F1c2Ugb2YgYW4gaXNzdWUgd2hlcmUgcHJpdmF0ZSBtZXRhZGF0YSBpc24mIzM5O3QgcHJvcGVybHkgY2xlYXJlZCwgYW5kIGFkZGluZyBjaGVja3MgdG8gZW5zdXJlIHRoZSBtZXRhZGF0YSBpc24mIzM5O3Qgc2V0IHdoZW4gaXQgc2hvdWxkbiYjMzk7dCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNwdV9zZXRfcGFnZV9jaHVuayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wZXJjcHUta20uYz01Mz1zdGF0aWMgc3RydWN0IHBjcHVfY2h1bmsgKnBjcHVfY3JlYXRlX2NodW5rKGdmcF90IGdmcClcbi0tXG5tbS9wZXJjcHUta20uYy03MS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpJiM0MzsmIzQzOylcbm1tL3BlcmNwdS1rbS5jOjcyOlx0XHRwY3B1X3NldF9wYWdlX2NodW5rKHBhZ2VzICYjNDM7IGksIGNodW5rKTtcbm1tL3BlcmNwdS1rbS5jLTczLVxuLS1cbm1tL3BlcmNwdS1rbS5jPTg3PXN0YXRpYyB2b2lkIHBjcHVfZGVzdHJveV9jaHVuayhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmspXG4tLVxubW0vcGVyY3B1LWttLmMtMTAyLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9wYWdlczsgaSYjNDM7JiM0MzspXG5tbS9wZXJjcHUta20uYzoxMDM6XHRcdFx0cGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlcyAmIzQzOyBpLCBOVUxMKTtcbm1tL3BlcmNwdS1rbS5jLTEwNC1cdFx0X19mcmVlX3BhZ2VzKGNodW5rLVx1MDAzZWRhdGEsIG9yZGVyX2Jhc2VfMihucl9wYWdlcykpO1xuLS1cbm1tL3BlcmNwdS12bS5jPTIzND1zdGF0aWMgaW50IHBjcHVfbWFwX3BhZ2VzKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaywgc3RydWN0IHBhZ2UgKipwYWdlcyxcbi0tXG5tbS9wZXJjcHUtdm0uYy0yNDctXHRcdGZvciAoaSA9IHBhZ2Vfc3RhcnQ7IGkgXHUwMDNjIHBhZ2VfZW5kOyBpJiM0MzsmIzQzOylcbm1tL3BlcmNwdS12bS5jOjI0ODpcdFx0XHRwY3B1X3NldF9wYWdlX2NodW5rKHBhZ2VzW3BjcHVfcGFnZV9pZHgoY3B1LCBpKV0sXG5tbS9wZXJjcHUtdm0uYy0yNDktXHRcdFx0XHRcdCAgICBjaHVuayk7XG4tLVxubW0vcGVyY3B1LmM9MjQyPXN0YXRpYyBpbnQgcGNwdV9jaHVua19zbG90KGNvbnN0IHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcbi0tXG5tbS9wZXJjcHUuYy0yNTMtLyogc2V0IHRoZSBwb2ludGVyIHRvIGEgY2h1bmsgaW4gYSBwYWdlIHN0cnVjdCAqL1xubW0vcGVyY3B1LmM6MjU0OnN0YXRpYyB2b2lkIHBjcHVfc2V0X3BhZ2VfY2h1bmsoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1KVxubW0vcGVyY3B1LmMtMjU1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwODkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBwY3B1X3NldF9wYWdlX2NodW5rYCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBwY3B1X3NldF9wYWdlX2NodW5rYC4gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGludG8gYG1tL3BlcmNwdS5jYCB0byBzZWUgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGNvbnRyaWJ1dGVzIHRvIHBlci1DUFUgbWVtb3J5IG1hbmFnZW1lbnQuIEkgc3VzcGVjdCBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgbWFwcGluZyBvciBpbml0aWFsaXppbmcgYSBjaHVuayBvZiBtZW1vcnkgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHBlci1DUFUgdmFyaWFibGVzIG9yIGRhdGEgc3RydWN0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgcGVyLUNQVSBtZW1vcnkgYWxsb2NhdGlvbiBzY2hlbWUuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHBlci1DUFUgYWxsb2NhdG9yIGl0c2VsZi4gRG9lcyBpdCB1c2UgdGhlIGV4aXN0aW5nIHBhZ2UgYWxsb2NhdG9yLCBvciBkb2VzIGl0IGhhdmUgc29tZSBzcGVjaWFsaXplZCBhbGxvY2F0aW9uIHN0cmF0ZWd5PyBBbHNvLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9uIE5VTUEgc3lzdGVtcyBhbmQgbWVtb3J5IGFmZmluaXR5PyBJcyBhbnkgcGFnZS1jb2xvcmluZyBiZWluZyBkb25lIGhlcmU/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vcGVyY3B1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MzpcdC8qIHNldCB0aGUgcG9pbnRlciB0byBhIGNodW5rIGluIGEgcGFnZSBzdHJ1Y3QgKi9cbiAyNTQ6XHRzdGF0aWMgdm9pZCBwY3B1X3NldF9wYWdlX2NodW5rKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdSlcbiAyNTU6XHR7XG4gMjU2Olx0XHRwYWdlLVx1MDAzZXByaXZhdGUgPSAodW5zaWduZWQgbG9uZylwY3B1O1xuIDI1NzpcdH1cbiAyNTg6XHRcbiAyNTk6XHQvKiBvYnRhaW4gcG9pbnRlciB0byBhIGNodW5rIGZyb20gYSBwYWdlIHN0cnVjdCAqL1xuIDI2MDpcdHN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdV9nZXRfcGFnZV9jaHVuayhzdHJ1Y3QgcGFnZSAqcGFnZSlcbiAyNjE6XHR7XG4gMjYyOlx0XHRyZXR1cm4gKHN0cnVjdCBwY3B1X2NodW5rICopcGFnZS1cdTAwM2Vwcml2YXRlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODUyNgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBlci1DUFUgS00gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgYHBjcHVfc2V0X3BhZ2VfY2h1bmtgIGlzIHNldHRpbmcgYHBhZ2UtJmd0O3ByaXZhdGVgLiBUaGUgZml4IGluIGBtbS9wZXJjcHUta20uY2AgaXMgc3BlY2lmaWNhbGx5IGFib3V0IGNsZWFyaW5nIHRoYXQgYHBhZ2UtJmd0O3ByaXZhdGVgIGZpZWxkIGJlZm9yZSB0aGUgcGFnZXMgYXJlIGZyZWVkLiBJdCBsb29rcyBsaWtlIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgaGFzIGJlZW4gdXBkYXRlZCB0byBjaGVjayBpZiBgdGFpbF9wYWdlLSZndDtwcml2YXRlYCBpcyBub24temVybywgYW5kIGl04oCZcyBub3cgdGhyb3dpbmcgYW4gZXJyb3IgaWYgaXQgaXMuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgc291bmRzIGxpa2UgYSBsZWdpdGltYXRlIGJ1ZyBmaXggd2l0aCBhZGRlZCBjaGVja3MsIHdoaWNoIGlzIGFsd2F5cyBnb29kIHRvIHNlZS4KCkkmIzM5O20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhlIGtleSBzeW1ib2xzIGludm9sdmVkIGhlcmUg4oCTIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYF9fZnJlZV9wYWdlc19wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AsIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAg4oCTIHRob3NlIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZXhhY3QgbWVjaGFuaWNzIG9mIHRoZSBjaGFuZ2UuCgpGcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSBzZWUgYENPTVBBQ1RJT05gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBhbmQgYE5FRURfUEVSX0NQVV9LTWAgbWVudGlvbmVkLiBIYW5nIG9uLCBpc24mIzM5O3QgYE5FRURfUEVSX0NQVV9LTWAgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudD8gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyB0aGUgdXNlciB1c3VhbGx5IGVuYWJsZXMgZGlyZWN0bHkuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgd2F5IHRvIGV4cGxpY2l0bHkgZW5hYmxlIHRoaXMuIEl0IG1pZ2h0IGdpdmUgbWUgbW9yZSBpbnNpZ2h0IHRvIHRlc3QgaWYgdGhpcyBuZXcgY29kZSBhZmZlY3RzIGEgc3BlY2lmaWMgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVFRF9QRVJfQ1BVX0tNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTA0ND1jb25maWcgQVJDSF9NT0RVTEVfTkVFRFNfV0VBS19QRVJfQ1BVXG4tLVxubW0vS2NvbmZpZy0xMDQ5LSNcbm1tL0tjb25maWc6MTA1MDpjb25maWcgTkVFRF9QRVJfQ1BVX0tNXG5tbS9LY29uZmlnLTEwNTEtXHRkZXBlbmRzIG9uICFTTVAgfHwgIU1NVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE2MgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0JiMzOTtzIGxvb2tpbmcgbGlrZSBgTkVFRF9QRVJfQ1BVX0tNYCBpcyBjb25kaXRpb25hbC4gSXQmIzM5O3MgdGllZCB0byBgIVNNUCB8fCAhTU1VYC4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBXZSBjYW4mIzM5O3QganVzdCBzbGFwIHRoaXMgb24gYSBzdGFuZGFyZCBTTVAga2VybmVsIGFuZCBleHBlY3QgaXQgdG8gd29yayB3aXRob3V0IGJyZWFraW5nIHRoaW5ncy4gSG1tLiBTbywgYmFzZWQgb24gdGhpcywgaXQmIzM5O3Mgbm90IGRpcmVjdGx5IHNlbGVjdGFibGUsIG9yIG1pZ2h0IGNvbmZsaWN0IGlmIGVuYWJsZWQuIFRoZXJlZm9yZSwgaXQmIzM5O3MgYSB0ZXJyaWJsZSBpZGVhIHRvIGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLgoKT24gdGhlIHBvc2l0aXZlIHNpZGUsIGBDT01QQUNUSU9OYCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBzZWVtIGxpa2Ugc29saWQgb3B0aW9ucyB0byBpbmNsdWRlLiBUaG9zZSBhcmUgdXN1YWxseSBiZW5lZmljaWFsLiBOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgZGV0YWlscyBvZiBgQ09NUEFDVElPTmAgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBtbS9LY29uZmlnYCB0byBiZSBzdXJlIHRoZXJlIGFyZSBubyBzdXJwcmlzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDT01QQUNUSU9OJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjUzLSMgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbXBhY3Rpb25cbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXG5tbS9LY29uZmlnLTY1NS1cdGJvb2wgXCYjMzQ7QWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTQ5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgdGhlIEJvb2xlYW4qKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBib29sZWFuIHZhbHVlIGhlcmUuIFJpZ2h0LCBhIHNpbXBsZSB0cnVlL2ZhbHNlLCBvbi9vZmYgc2l0dWF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGUgZGVmaW5pdGlvbj8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0xldCYjMzk7cyBkaWcgaW50byBgbW0vS2NvbmZpZ2AuJiMzNDsgU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEkga25vdyB0aGF0JiMzOTtzIHRoZSBrZXkgdmFyaWFibGUgdG8gY2hlY2ssIHRvIHVuZGVyc3RhbmQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGlzIGJvb2xlYW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXRzIGNvbmZpZ3VyYXRpb24gbWVhbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTg0Mz1jb25maWcgTU1fSURcbi0tXG5tbS9LY29uZmlnLTg0NS1cbm1tL0tjb25maWc6ODQ2Om1lbnVjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL0tjb25maWctODQ3LVx0Ym9vbCBcJiMzNDtUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0XCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04NjQ9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy04NjktXG5tbS9LY29uZmlnOjg3MDpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcbm1tL0tjb25maWctODcxLVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctODc2LVxubW0vS2NvbmZpZzo4Nzc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxubW0vS2NvbmZpZy04NzgtXHRcdGJvb2wgXCYjMzQ7bWFkdmlzZVwmIzM0O1xuLS1cbm1tL0tjb25maWctODg1LVxubW0vS2NvbmZpZzo4ODY6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcbm1tL0tjb25maWctODg3LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04OTM9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy05MDItXG5tbS9LY29uZmlnOjkwMzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXG5tbS9LY29uZmlnLTkwNC1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTEyLVxubW0vS2NvbmZpZzo5MTM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTE0LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTIwLVxubW0vS2NvbmZpZzo5MjE6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05MjItXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyOC1cbm1tL0tjb25maWc6OTI5Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTkzMC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTkzOD1jaG9pY2Vcbi0tXG5tbS9LY29uZmlnLTk0Ny1cbm1tL0tjb25maWc6OTQ4Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcbm1tL0tjb25maWctOTQ5LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NTYtXG5tbS9LY29uZmlnOjk1NzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FMV0FZU1xubW0vS2NvbmZpZy05NTgtXHRcdGJvb2wgXCYjMzQ7YWx3YXlzXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NjQtXG5tbS9LY29uZmlnOjk2NTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX1dJVEhJTl9TSVpFXG5tbS9LY29uZmlnLTk2Ni1cdFx0Ym9vbCBcJiMzNDt3aXRoaW5fc2l6ZVwmIzM0O1xuLS1cbm1tL0tjb25maWctOTcyLVxubW0vS2NvbmZpZzo5NzM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BRFZJU0Vcbm1tL0tjb25maWctOTc0LVx0XHRib29sIFwmIzM0O2FkdmlzZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQzMwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBIdWdlcGFnZSBUcmFuc3BhcmVuY3kgYW5kIEFsbG9jYXRpb24gQ2hlY2tzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgc2VlaW5nIHRoYXQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBiZWluZyBmbGFnZ2VkIGFzIGEgcG9zaXRpdmUuIEdvb2QsIGdvb2QuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTm93LCBob2xkIG9uIGEgc2Vjb25kLi4uIG15IGludGVybmFsIHJhZGFyIGlzIHBpbmdpbmcgYSBkZXRhaWwgaW4gYG1tL3BhZ2VfYWxsb2MuY2AgdGhhdCBJIG5lZWQgdG8gY2hlY2suIFNwZWNpZmljYWxseSwgdGhlcmUmIzM5O3MgYGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKWAgaW4gdGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBjaGVja3MgaXQmIzM5O3MgcnVubmluZy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVidWdnaW5nIGNoZWNrcz8gUG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdHMgZHVyaW5nIGFsbG9jYXRpb24/IEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgc2NoZW1lIG9mIHRoaW5ncyBiZWZvcmUgSSBjYW4gY29uZmlkZW50bHkgYXNzZXNzIHRoZSBzaXR1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX2NoZWNrX3BhZ2VzX2VuYWJsZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9hbGxvYy5jPTEwNzQ9c3RhdGljIGlubGluZSBib29sIGZyZWVfcGFnZV9pc19iYWQoc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxubW0vcGFnZV9hbGxvYy5jLTEwODMtXG5tbS9wYWdlX2FsbG9jLmM6MTA4NDpzdGF0aWMgaW5saW5lIGJvb2wgaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCh2b2lkKVxubW0vcGFnZV9hbGxvYy5jLTEwODUte1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMDg5PXN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTA5OS1cbm1tL3BhZ2VfYWxsb2MuYzoxMTAwOlx0aWYgKCFpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYy0xMTAxLVx0XHRyZXQgPSAwO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMzE0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTM4Mi1cdFx0XHRcdGJhZCAmIzQzOz0gZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShwYWdlLCB0YWlsX3BhZ2UpO1xubW0vcGFnZV9hbGxvYy5jOjEzODM6XHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xubW0vcGFnZV9hbGxvYy5jLTEzODQtXHRcdFx0XHRpZiAoZnJlZV9wYWdlX2lzX2JhZCh0YWlsX3BhZ2UpKSB7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTEzODktXHRcdFx0dGFpbF9wYWdlLVx1MDAzZWZsYWdzLmYgXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xubW0vcGFnZV9hbGxvYy5jOjEzOTA6XHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSBcdTAwMjZcdTAwMjYgdGFpbF9wYWdlLVx1MDAzZXByaXZhdGUpIHtcbm1tL3BhZ2VfYWxsb2MuYy0xMzkxLVx0XHRcdFx0YmFkX3BhZ2UodGFpbF9wYWdlLCBcJiMzNDtub256ZXJvIHByaXZhdGVcJiMzNDspO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xNDA0LVxubW0vcGFnZV9hbGxvYy5jOjE0MDU6XHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmMtMTQwNi1cdFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSkpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTE3NzY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX25ld19wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxubW0vcGFnZV9hbGxvYy5jLTE3Nzcte1xubW0vcGFnZV9hbGxvYy5jOjE3Nzg6XHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmMtMTc3OS1cdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjICgxIFx1MDAzY1x1MDAzYyBvcmRlcik7IGkmIzQzOyYjNDM7KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjc1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQW5hbHl6aW5nIGBpc19jaGVja19wYWdlc19lbmFibGVkYCBpbiBgbW0vcGFnZV9hbGxvYy5jYCoqCgpBbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBkb2luZyBpcyB6ZXJvaW5nIGluIG9uIGBpc19jaGVja19wYWdlc19lbmFibGVkYCB3aXRoaW4gdGhlIGBtbS9wYWdlX2FsbG9jLmNgIGZpbGUuIEkmIzM5O20gaW1tZWRpYXRlbHkgcmVjb2duaXppbmcgdGhhdCB0aGlzIGZ1bmN0aW9uIG9yIHZhcmlhYmxlIGlzIHBhcnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSBwYWdlIGFsbG9jYXRpb24gYXNwZWN0LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IHN0cm9uZyBtZW50YWwgbW9kZWwgb2YgaG93IHRoZSBwYWdlIGFsbG9jYXRvciB3b3Jrcywgc28gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byByZWxhdGUgdG8gc29tZSBraW5kIG9mIGRlYnVnZ2luZywgZXJyb3IgY2hlY2tpbmcsIG9yIHBlcmhhcHMgZXZlbiBhIGZlYXR1cmUgZmxhZyBjb250cm9sbGluZyBjZXJ0YWluIGFsbG9jYXRpb24gYmVoYXZpb3JzLiBVbmRlcnN0YW5kaW5nIHRoaXMgbWlnaHQgZ2l2ZSBtZSBjcnVjaWFsIGluc2lnaHRzIGludG8gaG93IHBhZ2UgYWxsb2NhdGlvbnMgYXJlIHZhbGlkYXRlZCwgb3IgaG93IHdlIG1pZ2h0IGJlIGNvbnRyb2xsaW5nIHRoYXQgYmVoYXZpb3VyIGF0IHJ1biB0aW1lLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGxvY2F0ZWQgd2l0aGluIGBwYWdlX2FsbG9jLmNgIGlzIGhpZ2hseSBzdWdnZXN0aXZlLiBJIGtub3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbmFsaXR5IHRoaXMgcGllY2UgY29udHJvbHMsIGFuZCBpdHMgcHVycG9zZSBpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL3BhZ2VfYWxsb2MuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA4MDpcdFx0YmFkX3BhZ2UocGFnZSwgcGFnZV9iYWRfcmVhc29uKHBhZ2UsIFBBR0VfRkxBR1NfQ0hFQ0tfQVRfRlJFRSkpO1xuMTA4MTpcdFx0cmV0dXJuIHRydWU7XG4xMDgyOlx0fVxuMTA4MzpcdFxuMTA4NDpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19jaGVja19wYWdlc19lbmFibGVkKHZvaWQpXG4xMDg1Olx0e1xuMTA4NjpcdFx0cmV0dXJuIHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2Y2hlY2tfcGFnZXNfZW5hYmxlZCk7XG4xMDg3Olx0fVxuMTA4ODpcdFxuMTA4OTpcdHN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbjEwOTA6XHR7XG4xMDkxOlx0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvID0gKHN0cnVjdCBmb2xpbyAqKWhlYWRfcGFnZTtcbjEwOTI6XHRcdGludCByZXQgPSAxO1xuMTA5MzpcdFxuMTA5NDpcdFx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3NjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIHRoZSBTb3VyY2Ugb2YgYGNoZWNrX3BhZ2VzX2VuYWJsZWRgKioKCk9rYXksIHNvIGBjaGVja19wYWdlc19lbmFibGVkYCBpcyBhIHN0YXRpYyBrZXksIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGRlZmluZWQgc29tZXdoZXJlIGFuZCBwcm9iYWJseSB1c2VkIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRyYWNrIGRvd24gd2hlcmUgaXQmIzM5O3MgYWN0dWFsbHkgZ2V0dGluZyBzZXQuIFVuZGVyc3RhbmRpbmcgaXRzIGluaXRpYWwgdmFsdWUgYW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIG1vZGlmaWVkIGlzIGNydWNpYWwgdG8gZmlndXJpbmcgb3V0IGl0cyBpbXBhY3QuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGEgY29kZSBzZWFyY2gsIG9yIGp1bXAgdG8gZGVmaW5pdGlvbiwgdG8gZmluZCBpdHMgZGVjbGFyYXRpb24gYW5kIGFueSBhc3NpZ25tZW50cy4gS25vd2luZyB0aGUgc2NvcGUgYW5kIGNvbnRleHQgb2YgaXRzIHNldHRpbmcgd2lsbCBnaXZlIG1lIGEgc29saWQgYmFzZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgb3BlcmF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX3BhZ2VzX2VuYWJsZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaW50ZXJuYWwuaD02NTA9ZXh0ZXJuIGNoYXIgKiBjb25zdCB6b25lX25hbWVzW01BWF9OUl9aT05FU107XG4tLVxubW0vaW50ZXJuYWwuaC02NTItLyogcGVyZm9ybSBzYW5pdHkgY2hlY2tzIG9uIHN0cnVjdCBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgb3IgZnJlZWQgKi9cbm1tL2ludGVybmFsLmg6NjUzOkRFQ0xBUkVfU1RBVElDX0tFWV9NQVlCRShDT05GSUdfREVCVUdfVk0sIGNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xubW0vaW50ZXJuYWwuaC02NTQtXG4tLVxubW0vbW1faW5pdC5jPTI1MDQ9ZWFybHlfcGFyYW0oXCYjMzQ7aW5pdF9vbl9mcmVlXCYjMzQ7LCBlYXJseV9pbml0X29uX2ZyZWUpO1xubW0vbW1faW5pdC5jLTI1MDUtXG5tbS9tbV9pbml0LmM6MjUwNjpERUZJTkVfU1RBVElDX0tFWV9NQVlCRShDT05GSUdfREVCVUdfVk0sIGNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xubW0vbW1faW5pdC5jLTI1MDctXG5tbS9tbV9pbml0LmM6MjUwODpzdGF0aWMgYm9vbCBjaGVja19wYWdlc19lbmFibGVkX2Vhcmx5IF9faW5pdGRhdGE7XG5tbS9tbV9pbml0LmMtMjUwOS1cbm1tL21tX2luaXQuYz0yNTEwPXN0YXRpYyBpbnQgX19pbml0IGVhcmx5X2NoZWNrX3BhZ2VzKGNoYXIgKmJ1Zilcbm1tL21tX2luaXQuYy0yNTExLXtcbm1tL21tX2luaXQuYzoyNTEyOlx0cmV0dXJuIGtzdHJ0b2Jvb2woYnVmLCBcdTAwMjZjaGVja19wYWdlc19lbmFibGVkX2Vhcmx5KTtcbm1tL21tX2luaXQuYy0yNTEzLX1cbi0tXG5tbS9tbV9pbml0LmM9MjUyMj1zdGF0aWMgdm9pZCBfX2luaXQgbWVtX2RlYnVnZ2luZ19hbmRfaGFyZGVuaW5nX2luaXQodm9pZClcbi0tXG5tbS9tbV9pbml0LmMtMjUyNC1cdGJvb2wgcGFnZV9wb2lzb25pbmdfcmVxdWVzdGVkID0gZmFsc2U7XG5tbS9tbV9pbml0LmM6MjUyNTpcdGJvb2wgd2FudF9jaGVja19wYWdlcyA9IGNoZWNrX3BhZ2VzX2VuYWJsZWRfZWFybHk7XG5tbS9tbV9pbml0LmMtMjUyNi1cbi0tXG5tbS9tbV9pbml0LmMtMjU4Mi1cdGlmICghSVNfRU5BQkxFRChDT05GSUdfREVCVUdfVk0pIFx1MDAyNlx1MDAyNiB3YW50X2NoZWNrX3BhZ2VzKVxubW0vbW1faW5pdC5jOjI1ODM6XHRcdHN0YXRpY19icmFuY2hfZW5hYmxlKFx1MDAyNmNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xubW0vbW1faW5pdC5jLTI1ODQtfVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMDc0PXN0YXRpYyBpbmxpbmUgYm9vbCBmcmVlX3BhZ2VfaXNfYmFkKHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMDgzLVxubW0vcGFnZV9hbGxvYy5jOjEwODQ6c3RhdGljIGlubGluZSBib29sIGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQodm9pZClcbm1tL3BhZ2VfYWxsb2MuYy0xMDg1LXtcbm1tL3BhZ2VfYWxsb2MuYzoxMDg2Olx0cmV0dXJuIHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2Y2hlY2tfcGFnZXNfZW5hYmxlZCk7XG5tbS9wYWdlX2FsbG9jLmMtMTA4Ny19XG4tLVxubW0vcGFnZV9hbGxvYy5jPTEwODk9c3RhdGljIGludCBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHN0cnVjdCBwYWdlICpoZWFkX3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMDk5LVxubW0vcGFnZV9hbGxvYy5jOjExMDA6XHRpZiAoIWlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xubW0vcGFnZV9hbGxvYy5jLTExMDEtXHRcdHJldCA9IDA7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTEzMTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIF9fZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMzgyLVx0XHRcdFx0YmFkICYjNDM7PSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XG5tbS9wYWdlX2FsbG9jLmM6MTM4MzpcdFx0XHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmMtMTM4NC1cdFx0XHRcdGlmIChmcmVlX3BhZ2VfaXNfYmFkKHRhaWxfcGFnZSkpIHtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTM4OS1cdFx0XHR0YWlsX3BhZ2UtXHUwMDNlZmxhZ3MuZiBcdTAwMjY9IH5QQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVA7XG5tbS9wYWdlX2FsbG9jLmM6MTM5MDpcdFx0XHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpIFx1MDAyNlx1MDAyNiB0YWlsX3BhZ2UtXHUwMDNlcHJpdmF0ZSkge1xubW0vcGFnZV9hbGxvYy5jLTEzOTEtXHRcdFx0XHRiYWRfcGFnZSh0YWlsX3BhZ2UsIFwmIzM0O25vbnplcm8gcHJpdmF0ZVwmIzM0Oyk7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTE0MDQtXG5tbS9wYWdlX2FsbG9jLmM6MTQwNTpcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYy0xNDA2LVx0XHRpZiAoZnJlZV9wYWdlX2lzX2JhZChwYWdlKSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9MTc3Nj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfbmV3X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG5tbS9wYWdlX2FsbG9jLmMtMTc3Ny17XG5tbS9wYWdlX2FsbG9jLmM6MTc3ODpcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYy0xNzc5LVx0XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgKDEgXHUwMDNjXHUwMDNjIG9yZGVyKTsgaSYjNDM7JiM0MzspIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMwNzMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgVmlydHVhbCBNZW1vcnk6IEVuc3VyaW5nIEFjdGl2ZSBDaGVja3MqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyBsaWtlIGBDT05GSUdfREVCVUdfVk1gIGVpdGhlciBlbmFibGVzIGRlYnVnZ2luZyBmZWF0dXJlcyBieSBkZWZhdWx0LCBvciBpdCYjMzk7cyBwb3RlbnRpYWxseSBhIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbi4gVG8gbWFrZSBzdXJlIHRoZSB2aXJ0dWFsIG1lbW9yeSBkZWJ1Z2dpbmcgY2hlY2tzIGFyZSBkZWZpbml0ZWx5IHJ1bm5pbmcgYXMgZXhwZWN0ZWQsIGl0JiMzOTtzIGJlc3QgdG8gZXhwbGljaXRseSBpbmNsdWRlIGBERUJVR19WTWAgd2l0aGluIGBFbmFibGVDb25maWdzYC4gVGhpcyB3aWxsIHJlbW92ZSBhbnkgYW1iaWd1aXR5IGFuZCBlbnN1cmUgdGhhdCB0aG9zZSBkZWJ1Z2dpbmcgY2hlY2tzIGFyZSBhY3RpdmUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgQ09ORklHX0RFQlVHX1ZNYCBzZXR0aW5nIHRvIGNvbmZpcm0sIG9mIGNvdXJzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFQlVHX1ZNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTg2MD1jb25maWcgREVCVUdfVkZTXG4tLVxubGliL0tjb25maWcuZGVidWctODY4LVxubGliL0tjb25maWcuZGVidWc6ODY5OmNvbmZpZyBERUJVR19WTV9JUlFTT0ZGXG5saWIvS2NvbmZpZy5kZWJ1Zy04NzAtXHRkZWZfYm9vbCBERUJVR19WTSBcdTAwMjZcdTAwMjYgIVBSRUVNUFRfUlRcbmxpYi9LY29uZmlnLmRlYnVnLTg3MS1cbmxpYi9LY29uZmlnLmRlYnVnOjg3Mjpjb25maWcgREVCVUdfVk1cbmxpYi9LY29uZmlnLmRlYnVnLTg3My1cdGJvb2wgXCYjMzQ7RGVidWcgVk1cJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy04ODAtXG5saWIvS2NvbmZpZy5kZWJ1Zzo4ODE6Y29uZmlnIERFQlVHX1ZNX1NIT09UX0xBWklFU1xubGliL0tjb25maWcuZGVidWctODgyLVx0Ym9vbCBcJiMzNDtEZWJ1ZyBNTVVfTEFaWV9UTEJfU0hPT1RET1dOIGltcGxlbWVudGF0aW9uXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctODkwLVxubGliL0tjb25maWcuZGVidWc6ODkxOmNvbmZpZyBERUJVR19WTV9NQVBMRV9UUkVFXG5saWIvS2NvbmZpZy5kZWJ1Zy04OTItXHRib29sIFwmIzM0O0RlYnVnIFZNIG1hcGxlIHRyZWVzXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctODk5LVxubGliL0tjb25maWcuZGVidWc6OTAwOmNvbmZpZyBERUJVR19WTV9SQlxubGliL0tjb25maWcuZGVidWctOTAxLVx0Ym9vbCBcJiMzNDtEZWJ1ZyBWTSByZWQtYmxhY2sgdHJlZXNcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy05MDctXG5saWIvS2NvbmZpZy5kZWJ1Zzo5MDg6Y29uZmlnIERFQlVHX1ZNX1BHRkxBR1NcbmxpYi9LY29uZmlnLmRlYnVnLTkwOS1cdGJvb2wgXCYjMzQ7RGVidWcgcGFnZS1mbGFncyBvcGVyYXRpb25zXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctOTE1LVxubGliL0tjb25maWcuZGVidWc6OTE2OmNvbmZpZyBERUJVR19WTV9QR1RBQkxFXG5saWIvS2NvbmZpZy5kZWJ1Zy05MTctXHRib29sIFwmIzM0O0RlYnVnIGFyY2ggcGFnZSB0YWJsZSBmb3Igc2VtYW50aWNzIGNvbXBsaWFuY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2NzkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgRnVuY3Rpb25zKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgaW5jbHVkaW5nIGBERUJVR19WTWAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5pdGVseSBhIHNvbGlkIGNob2ljZS4gTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aG9zZSBmb2N1cyBzeW1ib2xzLgoKQWxyaWdodCwgdGhlIGxpc3QgaW5jbHVkZXMgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgLCBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgLCBgcGNwdV9kZXN0cm95X2NodW5rYCwgYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLCBhbmQgYGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mYC4gSG9sZCBvbiBhIG1pbnV0ZS4uLiBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgPyBUaGF0JiMzOTtzIGEgaG90IHBhdGgsIGlzbiYjMzk7dCBpdD8gSXQmIzM5O3MgY2FsbGVkIGZvciAqZXZlcnkqIHBhZ2UgZnJlZS4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgc2F5IHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3QgZGlzdHJpYnV0aW9uIGZyb20gYmVpbmcgc2tld2VkLiBTbywgbm8sIGRlZmluaXRlbHkgbm90IGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAuCgpIb3cgYWJvdXQgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgPyBUaGF0JiMzOTtzIGNhbGxlZCBkdXJpbmcgaHVnZSBwYWdlIHNwbGl0dGluZywgd2hpY2ggaXMgYSBzcGVjaWZpYyBvcGVyYXRpb24sIG5vdCBhIGdlbmVyaWMgb25lLiBUaGF0IGNvdWxkIGJlIGdvb2QuIGBwY3B1X2Rlc3Ryb3lfY2h1bmtgIHNlZW1zIG9rYXkgdG9vOyBkZXN0cm95aW5nIHBlcmNwdSBjaHVua3MgaXMgdGFyZ2V0ZWQuIEFzIGZvciBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgLCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AsIGFuZCBgY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZgLCB0aGV5JiMzOTtyZSBhbGwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gbWVtb3J5IGNvbXBhY3Rpb24uIEFnYWluLCB0aGV5JiMzOTtyZSBub3QgZ2VuZXJpYyBob3QgcGF0aHMsIGJ1dCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgbWVtb3J5IG1hbmFnZW1lbnQgcHJvY2Vzcy4gVGhhdCBsb29rcyBwcm9taXNpbmcuIE5vdywgdG8gZG91YmxlLWNoZWNrIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGVhZm9wcy5oPTM4Nj1zdGF0aWMgaW5saW5lIHZvaWQgc29mdGxlYWZfbWlncmF0aW9uX3N5bmMoc29mdGxlYWZfdCBlbnRyeSxcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zOTEtXHQgKiBmb2xpb3MgYW5kIHRodXMgcmVzdWx0IGluIG9ic2VydmluZyBhbiB1bmxvY2tlZCBmb2xpby5cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjM5MjpcdCAqIFRoaXMgbWF0Y2hlcyB0aGUgd3JpdGUgYmFycmllciBpbiBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkuXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zOTMtXHQgKi9cbi0tXG5tbS9odWdlX21lbW9yeS5jPTM1MTY9c3RhdGljIGJvb2wgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChzdHJ1Y3QgcGFnZSAqcGFnZSwgbG9uZyBucl9wYWdlcylcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM1MjctICovXG5tbS9odWdlX21lbW9yeS5jOjM1Mjg6c3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxubW0vaHVnZV9tZW1vcnkuYy0zNTI5LVx0XHRpbnQgbmV3X29yZGVyKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzY2OC0gKiAxLiB1bmlmb3JtIHNwbGl0OiBAeGFzIGlzIHNwbGl0IHdpdGggbm8gZXhwZWN0YXRpb24gb2YgZmFpbHVyZSBhbmQgYSBzaW5nbGVcbm1tL2h1Z2VfbWVtb3J5LmM6MzY2OTogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgaXMgY2FsbGVkIHRvIHNwbGl0IHRoZSBAZm9saW8gaW50byBAbmV3X29yZGVyXG5tbS9odWdlX21lbW9yeS5jLTM2NzAtICogICAgYWxvbmcgd2l0aCBzdGF0cyB1cGRhdGUuXG5tbS9odWdlX21lbW9yeS5jLTM2NzEtICogMi4gbm9uLXVuaWZvcm0gc3BsaXQ6IGZvbGlvX29yZGVyIC0gQG5ld19vcmRlciBjYWxscyB0b1xubW0vaHVnZV9tZW1vcnkuYzozNjcyOiAqICAgIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBhcmUgZXhwZWN0ZWQgdG8gYmUgbWFkZSBpbiBhIGZvciBsb29wIHRvIHNwbGl0XG5tbS9odWdlX21lbW9yeS5jLTM2NzMtICogICAgdGhlIEBmb2xpbyB0byBvbmUgbG93ZXIgb3JkZXIgYXQgYSB0aW1lLiBUaGUgZm9saW8gY29udGFpbmluZyBAc3BsaXRfYXRcbi0tXG5tbS9odWdlX21lbW9yeS5jPTM2ODU9c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zNzMwLVx0XHRwZ2FsbG9jX3RhZ19zcGxpdChmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XG5tbS9odWdlX21lbW9yeS5jOjM3MzE6XHRcdF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xubW0vaHVnZV9tZW1vcnkuYy0zNzMyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDgxOAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhlc2UgZnVuY3Rpb25zLCByZWZsZWN0aW5nIG9uIHRoZSBzdHJlbmd0aHMgSSBzZWUgd2l0aGluIHRoZW06CgoqKkFzc2Vzc21lbnQgb2YgTWVtb3J5IE1hbmFnZW1lbnQgUm91dGluZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIOKAkyB5ZWFoLCB0aGF0JiMzOTtzIHNvbGlkLiBHb29kIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB0aGUgZm9saW8gc3BsaXR0aW5nLiBUaGVuIHdlIGhhdmUgYHBjcHVfZGVzdHJveV9jaHVua2AgLSBlZmZlY3RpdmUgZm9yIGNsZWFuaW5nIHVwIHNwZWNpZmljIGNodW5rcy4gYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYCBhbmQgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgIHNlZW0gbGlrZSBlZmZpY2llbnQgbWV0aG9kcyBmb3IgaXNvbGF0aW5nIGZyZWUgcGFnZXMuIFJlYWxseSwgYWxsIG9mIHRob3NlIGFyZSB3ZWxsIGRvbmUuCgpIbW0sIG5vdyBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIEl0JiMzOTtzIGVzc2VudGlhbCB3ZSBjaGVjayB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIGNvbXBhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2NvbXBhY3Rpb24uYz0xNjkyPXN0YXRpYyB2b2lkIGlzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xODExLSAqL1xubW0vY29tcGFjdGlvbi5jOjE4MTI6c3RhdGljIHN0cnVjdCBmb2xpbyAqY29tcGFjdGlvbl9hbGxvY19ub3Byb2Yoc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGF0YSlcbm1tL2NvbXBhY3Rpb24uYy0xODEzLXtcbi0tXG5tbS9jb21wYWN0aW9uLmM9MTg1OT1zdGF0aWMgc3RydWN0IGZvbGlvICpjb21wYWN0aW9uX2FsbG9jKHN0cnVjdCBmb2xpbyAqc3JjLCB1bnNpZ25lZCBsb25nIGRhdGEpXG5tbS9jb21wYWN0aW9uLmMtMTg2MC17XG5tbS9jb21wYWN0aW9uLmM6MTg2MTpcdHJldHVybiBhbGxvY19ob29rcyhjb21wYWN0aW9uX2FsbG9jX25vcHJvZihzcmMsIGRhdGEpKTtcbm1tL2NvbXBhY3Rpb24uYy0xODYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyNjkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipNeSBDb21wYWN0aW9uIEFsbG9jYXRpb24gU3RyYXRlZ3kqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIHdpdGggdGhpcyBjb21wYWN0aW9uIHN0cmF0ZWd5LiBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIGJvdGggYGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mYCBhbmQgYGNvbXBhY3Rpb25fYWxsb2NgLiBUaGUgbnVhbmNlcyBvZiB3aGVuIGFuZCB3aGVyZSB0byB1c2UgZWFjaCBhcmUgY3JpdGljYWwsIGJ1dCBmb3Igbm93LCB0aGV5IGFyZSBteSBiYXNlIHRvb2xzLiBUaGUgZGV0YWlscyBhcm91bmQgdGhlIHByb2ZpbGVzLCBvciBsYWNrIHRoZXJlb2YsIGFyZSBhIHNlY29uZGFyeSBjb25jZXJuIGF0IHRoaXMganVuY3R1cmUuCgpOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBhbnl0aGluZyBmdXJ0aGVyLCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYC4gVGhpcyBmdW5jdGlvbiBpcyBmdW5kYW1lbnRhbCB0byB0aGUgdW5kZXJseWluZyBtZWNoYW5pY3Mgb2YgYWxsIHRoaXMsIGFuZCBJIHdhbnQgdG8gbWFrZSBzdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBmdW5jdGlvbnMgaXMgY29tcGxldGVseSBpcm9uZWQgb3V0LiBJdCBpcyB0aGUga2V5IGJ1aWxkaW5nIGJsb2NrIEkgY2FuJiMzOTt0IGxpdmUgd2l0aG91dCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpc29sYXRlX2ZyZWVwYWdlc19ibG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9jb21wYWN0aW9uLmM9NTUxPXN0YXRpYyBib29sIGNvbXBhY3RfdW5sb2NrX3Nob3VsZF9hYm9ydChzcGlubG9ja190ICpsb2NrLFxuLS1cbm1tL2NvbXBhY3Rpb24uYy01NzMtICovXG5tbS9jb21wYWN0aW9uLmM6NTc0OnN0YXRpYyB1bnNpZ25lZCBsb25nIGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLFxubW0vY29tcGFjdGlvbi5jLTU3NS1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgKnN0YXJ0X3Bmbixcbi0tXG5tbS9jb21wYWN0aW9uLmM9NzEyPWlzb2xhdGVfZnJlZXBhZ2VzX3JhbmdlKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLFxuLS1cbm1tL2NvbXBhY3Rpb24uYy03MjktXHRcdFx0XHRibG9ja19lbmRfcGZuICYjNDM7PSBwYWdlYmxvY2tfbnJfcGFnZXMpIHtcbm1tL2NvbXBhY3Rpb24uYzo3MzA6XHRcdC8qIFByb3RlY3QgcGZuIGZyb20gY2hhbmdpbmcgYnkgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2sgKi9cbm1tL2NvbXBhY3Rpb24uYy03MzEtXHRcdHVuc2lnbmVkIGxvbmcgaXNvbGF0ZV9zdGFydF9wZm4gPSBwZm47XG4tLVxubW0vY29tcGFjdGlvbi5jLTc0OC1cbm1tL2NvbXBhY3Rpb24uYzo3NDk6XHRcdGlzb2xhdGVkID0gaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soY2MsIFx1MDAyNmlzb2xhdGVfc3RhcnRfcGZuLFxubW0vY29tcGFjdGlvbi5jLTc1MC1cdFx0XHRcdFx0YmxvY2tfZW5kX3BmbiwgY2MtXHUwMDNlZnJlZXBhZ2VzLCAwLCB0cnVlKTtcbi0tXG5tbS9jb21wYWN0aW9uLmMtNzUyLVx0XHQvKlxubW0vY29tcGFjdGlvbi5jOjc1MzpcdFx0ICogSW4gc3RyaWN0IG1vZGUsIGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKCkgcmV0dXJucyAwIGlmXG5tbS9jb21wYWN0aW9uLmMtNzU0LVx0XHQgKiB0aGVyZSBhcmUgYW55IGhvbGVzIGluIHRoZSBibG9jayAoaWUuIGludmFsaWQgUEZOcyBvclxuLS1cbm1tL2NvbXBhY3Rpb24uYz0xNDc0PWZhc3RfaXNvbGF0ZV9hcm91bmQoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xNDk0LVxubW0vY29tcGFjdGlvbi5jOjE0OTU6XHRpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhjYywgXHUwMDI2c3RhcnRfcGZuLCBlbmRfcGZuLCBjYy1cdTAwM2VmcmVlcGFnZXMsIDEsIGZhbHNlKTtcbm1tL2NvbXBhY3Rpb24uYy0xNDk2LVxuLS1cbm1tL2NvbXBhY3Rpb24uYz0xNjkyPXN0YXRpYyB2b2lkIGlzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xNzYzLVx0XHQvKiBGb3VuZCBhIGJsb2NrIHN1aXRhYmxlIGZvciBpc29sYXRpbmcgZnJlZSBwYWdlcyBmcm9tLiAqL1xubW0vY29tcGFjdGlvbi5jOjE3NjQ6XHRcdG5yX2lzb2xhdGVkID0gaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soY2MsIFx1MDAyNmlzb2xhdGVfc3RhcnRfcGZuLFxubW0vY29tcGFjdGlvbi5jLTE3NjUtXHRcdFx0XHRcdGJsb2NrX2VuZF9wZm4sIGNjLVx1MDAzZWZyZWVwYWdlcywgc3RyaWRlLCBmYWxzZSk7XG4tLVxubW0vY29tcGFjdGlvbi5jLTE4MDEtXHQgKiBicm9rZSBmcm9tIHRoZSBsb29wIGFuZCBzZXQgaXNvbGF0ZV9zdGFydF9wZm4gYmFzZWQgb24gdGhlIGxhc3Rcbm1tL2NvbXBhY3Rpb24uYzoxODAyOlx0ICogY2FsbCB0byBpc29sYXRlX2ZyZWVwYWdlc19ibG9jaygpLCBvciB3ZSBtZXQgdGhlIG1pZ3JhdGlvbiBzY2FubmVyXG5tbS9jb21wYWN0aW9uLmMtMTgwMy1cdCAqIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVkIGR1ZSB0byBpc29sYXRlX3N0YXJ0X3BmbiBcdTAwM2MgbG93X3BmblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjIxMgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDb25zaWRlcmluZyBNZW1vcnkgTWFuYWdlbWVudCBTdHJhdGVnaWVzKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGhhbmRsZSB0aGlzIG1lbW9yeSBhbGxvY2F0aW9uIGlzc3VlLiBCYXNlZCBvbiBteSBwcmV2aW91cyBleHBlcmllbmNlIGFuZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgc3lzdGVtLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkIHRoZSBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgIGZ1bmN0aW9uLCBhbmQgaXRzIG1vcmUgcGVyZm9ybWFudCBjb3VzaW4sIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYC4gVGhlIGtleSBkaWZmZXJlbmNlIGluIGltcGxlbWVudGF0aW9uIGlzIGxpa2VseSB3aGF0IG1hdHRlcnMgaGVyZS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgZGV0YWlscy4gSSByZWFsbHkgc2hvdWxkIGNoZWNrIHRoZSBjb2RlIGZvciBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AuIEkga25vdyB0aGUgdGhlb3J5LCBidXQgSSBuZWVkIHRvIHNlZSBob3cgaXQmIzM5O3MgYWN0dWFsbHkgaW1wbGVtZW50ZWQgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIHRoZSByaWdodCBjaG9pY2UgZm9yIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8gYW5kIGl0cyB0cmFkZS1vZmZzLiBUaGUgcG90ZW50aWFsIGltcGFjdCBvbiBwZXJmb3JtYW5jZSBpcyBnb2luZyB0byBiZSBzaWduaWZpY2FudCwgc28gSSBuZWVkIHRvIGNob29zZSB0aGUgYmVzdCBvcHRpb24gYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaD01Nj1ERUZJTkVfRVZFTlQobW1fY29tcGFjdGlvbl9pc29sYXRlX3RlbXBsYXRlLCBtbV9jb21wYWN0aW9uX2lzb2xhdGVfZnJlZXBhZ2VzLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaC02Ni1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaDo2NzpERUZJTkVfRVZFTlQobW1fY29tcGFjdGlvbl9pc29sYXRlX3RlbXBsYXRlLCBtbV9jb21wYWN0aW9uX2Zhc3RfaXNvbGF0ZV9mcmVlcGFnZXMsXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmgtNjgtXG4tLVxubW0vY29tcGFjdGlvbi5jPTE1MDM9c3RhdGljIGludCBuZXh0X3NlYXJjaF9vcmRlcihzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgaW50IG9yZGVyKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xNTE5LVxubW0vY29tcGFjdGlvbi5jOjE1MjA6c3RhdGljIHZvaWQgZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYylcbm1tL2NvbXBhY3Rpb24uYy0xNTIxLXtcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTY0NS1cbm1tL2NvbXBhY3Rpb24uYzoxNjQ2Olx0dHJhY2VfbW1fY29tcGFjdGlvbl9mYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKG1pbl9wZm4sIGNjLVx1MDAzZWZyZWVfcGZuLFxubW0vY29tcGFjdGlvbi5jLTE2NDctXHRcdFx0XHRcdFx0ICAgbnJfc2Nhbm5lZCwgdG90YWxfaXNvbGF0ZWQpO1xuLS1cbm1tL2NvbXBhY3Rpb24uYz0xNjkyPXN0YXRpYyB2b2lkIGlzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xNzAyLVx0LyogVHJ5IGEgc21hbGwgc2VhcmNoIG9mIHRoZSBmcmVlIGxpc3RzIGZvciBhIGNhbmRpZGF0ZSAqL1xubW0vY29tcGFjdGlvbi5jOjE3MDM6XHRmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKGNjKTtcbm1tL2NvbXBhY3Rpb24uYy0xNzA0LVx0aWYgKGNjLVx1MDAzZW5yX2ZyZWVwYWdlcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY4NTIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFzc2Vzc21lbnQgb2YgTWVtb3J5IE1hbmFnZW1lbnQgT3BlcmF0aW9ucyoqCgpSaWdodCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgIHNlZW1zIGxpa2UgYSBzb2xpZCBhcHByb2FjaC4gSXQmIzM5O3Mgb24gdGhlIHJpZ2h0IHRyYWNrIGZvciBlZmZpY2llbnQgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLiBJJiMzOTttIHNhdGlzZmllZCB0aGF0IGl0JiMzOTtzIGhlYWRpbmcgaW4gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLgoKTm93LCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgcHJvY2Vzcy4gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaG93IHRoaXMgZnVuY3Rpb24gZmFjdG9ycyBpbnRvIHRoaXMgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGZyZWVpbmcgYW5kIHBvdGVudGlhbGx5IHJlLXVzaW5nIHBhZ2VzIGVmZmljaWVudGx5LiBJIG11c3QgZW5zdXJlIHRoaXMgcGllY2UgZG92ZXRhaWxzIG5pY2VseSB3aXRoIHRoZSBpc29sYXRpb24gc3RyYXRlZ3kgd2UganVzdCBjb25zaWRlcmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgcHJlcGFyYXRpb24gcGhhc2UgaXMgb3B0aW1pemVkIG9yIGlmIGl0IG5lZWRzIGFub3RoZXIgbG9vayB0byBiZSBvcHRpbWFsbHkgc3RyZWFtbGluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZyZWVfdGFpbF9wYWdlX3ByZXBhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9hbGxvYy5jPTEwODQ9c3RhdGljIGlubGluZSBib29sIGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQodm9pZClcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTA4OC1cbm1tL3BhZ2VfYWxsb2MuYzoxMDg5OnN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbm1tL3BhZ2VfYWxsb2MuYy0xMDkwLXtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9MTMxND1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTEzODEtXHRcdFx0aWYgKGNvbXBvdW5kKVxubW0vcGFnZV9hbGxvYy5jOjEzODI6XHRcdFx0XHRiYWQgJiM0Mzs9IGZyZWVfdGFpbF9wYWdlX3ByZXBhcmUocGFnZSwgdGFpbF9wYWdlKTtcbm1tL3BhZ2VfYWxsb2MuYy0xMzgzLVx0XHRcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyODkKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1lbW9yeSBNYW5hZ2VtZW50OiBUYXJnZXRpbmcgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgIGZvciBPcHRpbWl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBtZW1vcnkgbWFuYWdlbWVudCBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHBhZ2UgZnJlZWluZy4gSSBzZWUgdGhhdCBgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZWAgaXMgY2FsbGVkIHdpdGhpbiBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgLiBOb3csIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgc2VlbXMgdG8gYmUgYSBwcmV0dHkgZnJlcXVlbnRseSBhY2Nlc3NlZCBwaWVjZSBvZiBjb2RlLCBhIGhvdCBwYXRoIGFzIHRoZXkgc2F5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvbXBvdW5kIHBhZ2VzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgICppdHNlbGYqIG1pZ2h0IGJlIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGRldGFpbGVkIGFuYWx5c2lzLCBhIHBvdGVudGlhbGx5IGZydWl0ZnVsIHN5bWJvbCB0byBmb2N1cyBvbiBzaW5jZSBpdOKAmXMgb25seSBpbnZvbHZlZCB3aGVuIHdlIGhhdmUgdGhlc2UgY29tcG91bmQgcGFnZXMuIEJ1dCBoYW5nIG9uLCBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgIGhhbmRsZXMgKmFsbCogcGFnZSBmcmVlcywgd2hpbGUgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgIGlzIHRoZSBvbmUgc3BlY2lmaWNhbGx5IGZvciBjb21wb3VuZCBwYWdlcy4gQWxyaWdodCwgSSYjMzk7bGwgYWRkIGBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlYCB0byBteSBsaXN0IG9mIHRoaW5ncyB0byBrZWVwIGFuIGV5ZSBvbi4gSSB0aGluayB0aGF0IGlzIHRoZSByaWdodCBkaXJlY3Rpb24gdG8ga2VlcCBnb2luZy4KCk5leHQgdXAsIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IGBwY3B1X2Rlc3Ryb3lfY2h1bmtgLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCYjMzk7cyBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNwdV9kZXN0cm95X2NodW5rJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BlcmNwdS1rbS5jPTUzPXN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdV9jcmVhdGVfY2h1bmsoZ2ZwX3QgZ2ZwKVxuLS1cbm1tL3BlcmNwdS1rbS5jLTg2LVxubW0vcGVyY3B1LWttLmM6ODc6c3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcbm1tL3BlcmNwdS1rbS5jLTg4LXtcbi0tXG5tbS9wZXJjcHUtdm0uYz0zNTM9c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2NyZWF0ZV9jaHVuayhnZnBfdCBnZnApXG4tLVxubW0vcGVyY3B1LXZtLmMtMzc3LVxubW0vcGVyY3B1LXZtLmM6Mzc4OnN0YXRpYyB2b2lkIHBjcHVfZGVzdHJveV9jaHVuayhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmspXG5tbS9wZXJjcHUtdm0uYy0zNzkte1xuLS1cbm1tL3BlcmNwdS5jPTE1Mzc9c3RhdGljIHZvaWQgcGNwdV9jaHVua19kZXBvcHVsYXRlZChzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmssXG4tLVxubW0vcGVyY3B1LmMtMTU2Mi0gKiBwY3B1X2NyZWF0ZV9jaHVua1x0XHQtIGNyZWF0ZSBhIG5ldyBjaHVua1xubW0vcGVyY3B1LmM6MTU2MzogKiBwY3B1X2Rlc3Ryb3lfY2h1bmtcdFx0LSBkZXN0cm95IGEgY2h1bmssIGFsd2F5cyBwcmVjZWRlZCBieSBmdWxsIGRlcG9wXG5tbS9wZXJjcHUuYy0xNTY0LSAqIHBjcHVfYWRkcl90b19wYWdlXHRcdC0gdHJhbnNsYXRlIGFkZHJlc3MgdG8gcGh5c2ljYWwgYWRkcmVzc1xuLS1cbm1tL3BlcmNwdS5jPTE1NzM9c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2NyZWF0ZV9jaHVuayhnZnBfdCBnZnApO1xubW0vcGVyY3B1LmM6MTU3NDpzdGF0aWMgdm9pZCBwY3B1X2Rlc3Ryb3lfY2h1bmsoc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rKTtcbm1tL3BlcmNwdS5jLTE1NzUtc3RhdGljIHN0cnVjdCBwYWdlICpwY3B1X2FkZHJfdG9fcGFnZSh2b2lkICphZGRyKTtcbi0tXG5tbS9wZXJjcHUuYz0xOTU5PXN0YXRpYyB2b2lkIHBjcHVfYmFsYW5jZV9mcmVlKGJvb2wgZW1wdHlfb25seSlcbi0tXG5tbS9wZXJjcHUuYy0xOTk0LVx0XHR9XG5tbS9wZXJjcHUuYzoxOTk1Olx0XHRwY3B1X2Rlc3Ryb3lfY2h1bmsoY2h1bmspO1xubW0vcGVyY3B1LmMtMTk5Ni1cdFx0Y29uZF9yZXNjaGVkKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTgyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHBjcHVfZGVzdHJveV9jaHVua2AgRnVuY3Rpb24gYW5kIFJlbGF0ZWQgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gYHBjcHVfZGVzdHJveV9jaHVua2Agc2VlbXMgbGlrZSBhIHNvbGlkIGZ1bmN0aW9uLCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuIEkmIzM5O20gZm9jdXNpbmcgb24ga2V5IHN5bWJvbHMgbm93OiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAsIGBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AgaXRzZWxmIChvZiBjb3Vyc2UpLCBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgLCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AsIGFuZCBhbHNvIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUgY3J1Y2lhbCBwaWVjZXMgb2YgdGhpcyBwdXp6bGUuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gV2UgaGF2ZSBgQ09NUEFDVElPTmAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGFuZCBgREVCVUdfVk1gIGluIHBsYXkuIEJ1dCB3YWl0LCB0aGVyZSYjMzk7cyBhIHByb2JsZW0sIGBORUVEX1BFUl9DUFVfS01gIGlzIG5vdCBkaXJlY3RseSBzZWxlY3RhYmxlLCB3aGljaCBpcyBvZGQuIFRoaXMgaXMgY29uY2VybmluZywgaXMgdGhlcmUgYW5vdGhlciBjb25maWcgb3B0aW9uIHRoYXQgdHJpZ2dlcnMgYHBjcHVfZGVzdHJveV9jaHVua2AmIzM5O3MgZW5hYmxlbWVudD8KCkkga25vdyBgcGNwdV9kZXN0cm95X2NodW5rYCBpcyBkZWZpbmVkIGluIGJvdGggYG1tL3BlcmNwdS1rbS5jYCBhbmQgYG1tL3BlcmNwdS12bS5jYC4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGlzIG1vZGlmeWluZyBgbW0vcGVyY3B1LWttLmNgLiBUaGUgY29yZSBpc3N1ZSB0aGVuIGJlY29tZXMsIGlmIGBORUVEX1BFUl9DUFVfS01gIGlzbiYjMzk7dCBlbmFibGVkLCB0aGVuIGBtbS9wZXJjcHUta20uY2AgKndvbiYjMzk7dCogYmUgY29tcGlsZWQhIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgbW0vcGVyY3B1LWttLmNgICppcyogYmVpbmcgY29tcGlsZWQgdW5kZXIgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBhIGNyaXRpY2FsIHByZXJlcXVpc2l0ZSB0byBjb25zaWRlciBmb3IgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BlcmNwdS1rbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wZXJjcHUta20uYy0yLS8qXG5tbS9wZXJjcHUta20uYzozOiAqIG1tL3BlcmNwdS1rbS5jIC0ga2VybmVsIG1lbW9yeSBiYXNlZCBjaHVuayBhbGxvY2F0aW9uXG5tbS9wZXJjcHUta20uYy00LSAqXG4tLVxubW0vcGVyY3B1LWttLmMtMTAtICpcbm1tL3BlcmNwdS1rbS5jOjExOiAqIFRvIHVzZSBwZXJjcHUta20sXG5tbS9wZXJjcHUta20uYy0xMi0gKlxuLS1cbm1tL3BlcmNwdS1rbS5jLTI1LSAqICAga2VybmVsIG1lbW9yeSBibG9jayB1c2luZyBhbGxvY19wYWdlcygpLCBtZW1vcnkgd2lsbCBiZSB3YXN0ZWQgaWZcbm1tL3BlcmNwdS1rbS5jOjI2OiAqICAgY2h1bmsgc2l6ZSBpcyBub3QgYWxpZ25lZC4gIHBlcmNwdS1rbSBjb2RlIHdpbGwgd2hpbmUgYWJvdXQgaXQuXG5tbS9wZXJjcHUta20uYy0yNy0gKi9cbi0tXG5tbS9wZXJjcHUuYz0xNTc2PXN0YXRpYyBpbnQgX19pbml0IHBjcHVfdmVyaWZ5X2FsbG9jX2luZm8oY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWkpO1xuLS1cbm1tL3BlcmNwdS5jLTE1NzgtI2lmZGVmIENPTkZJR19ORUVEX1BFUl9DUFVfS01cbm1tL3BlcmNwdS5jOjE1Nzk6I2luY2x1ZGUgXCYjMzQ7cGVyY3B1LWttLmNcJiMzNDtcbm1tL3BlcmNwdS5jLTE1ODAtI2Vsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkwNjgKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogNDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaG93IHRvIGFwcHJvYWNoIGZ1enppbmcgaXQuIEkgc2VlIHRoYXQgYG1tL3BlcmNwdS1rbS5jYCBpcyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIGluIGBtbS9wZXJjcHUuY2AgYmFzZWQgb24gYENPTkZJR19ORUVEX1BFUl9DUFVfS01gLiBUaGUgaXNzdWUgaXMsIEkgY2FuJiMzOTt0IGVhc2lseSBlbmFibGUgdGhhdCBjb25maWd1cmF0aW9uIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBgIVNNUCB8fCAhTU1VYC4gU2luY2UgSSYjMzk7bSBwcm9iYWJseSB0ZXN0aW5nIG9uIGEgc3RhbmRhcmQgU01QIGtlcm5lbCwgdGhhdCBwYXJ0IG9mIHRoZSBwYXRjaCBpcyBlc3NlbnRpYWxseSB1bnRlc3RhYmxlIGFzIGlzLiBHb29kIHRvIGtub3cgLSBubyBuZWVkIHRvIGFnb25pemUgb3ZlciBlbmFibGluZyB0aGF0IGNvbmZpZy4gV2FpdC4uLiBJIHNob3VsZCBwcm9iYWJseSByZW1vdmUgaXQgZnJvbSBjb25zaWRlcmF0aW9uLCBzaW5jZSBpdCYjMzk7cyBub3Qgc2VsZWN0YWJsZS4KCk5vdywgbGV0JiMzOTtzIHpvb20gb3V0LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIGFib3V0IGZpeGluZyBpc3N1ZXMgd2l0aCBgcGFnZS0mZ3Q7cHJpdmF0ZWAgbm90IGJlaW5nIGhhbmRsZWQgY29ycmVjdGx5LCBwYXJ0aWN1bGFybHkgb24gdGFpbCBwYWdlcy4gSXQmIzM5O3MgdG91Y2hpbmcgc29tZSBjcml0aWNhbCBtZW1vcnkgbWFuYWdlbWVudCBhcmVhczogcmVtb3ZpbmcgYHNldF9wYWdlX3ByaXZhdGVgIGluIGNvbXBhY3Rpb24sIGFkZGluZyB3YXJuaW5ncyBkdXJpbmcgaHVnZSBwYWdlIHNwbGl0dGluZywgc29tZSBpbnRlcm5hbCBwcmVwYXJhdGlvbiB3b3JrLCBhbmQgYWRkaW5nIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBQbHVzIGl0JiMzOTtzIGNsZWFyaW5nIGNodW5rIGluZm9ybWF0aW9uIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGluIHBlcmNwdS1rbS4gVGhvc2UgYXJlIGFsbCBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBuZWVkIHRvIGJlIHRlc3RlZCB0aG9yb3VnaGx5LiBGdXp6aW5nIGlzIHRoZSByaWdodCBhcHByb2FjaCBoZXJlIHRvIGVuc3VyZSB3ZSBkb24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1pc3MgYW55IGxhdGVudCBidWdzLgoKSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzeW1ib2xzIGluIHBhcnRpY3VsYXI6IGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgLCBgcGNwdV9kZXN0cm95X2NodW5rYCwgYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLCBhbmQgYGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mYC4KCkFoYSwgYHBjcHVfZGVzdHJveV9jaHVua2AgaW4gYG1tL3BlcmNwdS1rbS5jYCBpcyBzdGF0aWMgYW5kIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19ORUVEX1BFUl9DUFVfS01gIGlzIHNldC4gU28sIGV2ZW4gdGhvdWdoIEkgY2FuJiMzOTt0ICplbmFibGUqIGl0IGRpcmVjdGx5LCBpdCAqY291bGQqIGJlIGNvbXBpbGVkLiBJdCYjMzk7cyBzdGF0aWNhbGx5IGxpbmtlZC4gQmVzdCB0byBpbmNsdWRlIGl0LCBhbmQgdGhlIGZ1enplciB3aWxsIHNpbXBseSBpZ25vcmUgaXQgaWYgaXQmIzM5O3Mgbm90IHByZXNlbnQuCgpUaGUga2V5IGNvbmZpZ3MgdG8gY29uc2lkZXIgZm9yIGZ1enppbmcgd291bGQgYmUgYENPTVBBQ1RJT05gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBhbmQgYERFQlVHX1ZNYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYERFQlVHX1ZNYCBpcyBhIGJvb2xlYW4uIFllcywgaXQgaXMuIFBlcmZlY3QuCgpBbHJpZ2h0LCB0aW1lIHRvIHRyaWdnZXIgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVCVUdfVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDssCiAgICAmIzM0O2ZyZWVfdGFpbF9wYWdlX3ByZXBhcmUmIzM0OywKICAgICYjMzQ7cGNwdV9kZXN0cm95X2NodW5rJiMzNDssCiAgICAmIzM0O2lzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrJiMzNDssCiAgICAmIzM0O2Zhc3RfaXNvbGF0ZV9mcmVlcGFnZXMmIzM0OywKICAgICYjMzQ7Y29tcGFjdGlvbl9hbGxvY19ub3Byb2YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBmaXggaXNzdWVzIHdpdGggYHBhZ2UtXHUwMDNlcHJpdmF0ZWAgbm90IGJlaW5nIHByb3Blcmx5IGNsZWFyZWQgb3IgY2hlY2tlZCBvbiB0YWlsIHBhZ2VzLiBJdCByZW1vdmVzIGBzZXRfcGFnZV9wcml2YXRlYCBpbiBjb21wYWN0aW9uLCBhZGRzIHdhcm5pbmdzIGluIGh1Z2UgbWVtb3J5IHNwbGl0dGluZyBhbmQgaW50ZXJuYWwgcHJlcCwgYW5kIGFkZHMgYSBjaGVjayBpbiBwYWdlIGFsbG9jYXRpb24uIEl0IGFsc28gY2xlYXJzIGNodW5rIGluZm8gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkb24mIzM5O3QgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgb3IgbWlzcyBhY3R1YWwgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7LAogICAgJiMzNDtUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7LAogICAgJiMzNDtERUJVR19WTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fc3BsaXRfZm9saW9fdG9fb3JkZXImIzM0OywKICAgICYjMzQ7ZnJlZV90YWlsX3BhZ2VfcHJlcGFyZSYjMzQ7LAogICAgJiMzNDtwY3B1X2Rlc3Ryb3lfY2h1bmsmIzM0OywKICAgICYjMzQ7aXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2smIzM0OywKICAgICYjMzQ7ZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyYjMzQ7LAogICAgJiMzNDtjb21wYWN0aW9uX2FsbG9jX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIGZpeCBpc3N1ZXMgd2l0aCBgcGFnZS1cdTAwM2Vwcml2YXRlYCBub3QgYmVpbmcgcHJvcGVybHkgY2xlYXJlZCBvciBjaGVja2VkIG9uIHRhaWwgcGFnZXMuIEl0IHJlbW92ZXMgYHNldF9wYWdlX3ByaXZhdGVgIGluIGNvbXBhY3Rpb24sIGFkZHMgd2FybmluZ3MgaW4gaHVnZSBtZW1vcnkgc3BsaXR0aW5nIGFuZCBpbnRlcm5hbCBwcmVwLCBhbmQgYWRkcyBhIGNoZWNrIGluIHBhZ2UgYWxsb2NhdGlvbi4gSXQgYWxzbyBjbGVhcnMgY2h1bmsgaW5mbyBiZWZvcmUgZnJlZWluZyBwYWdlcyBpbiBwZXJjcHUta20uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGV5IGRvbiYjMzk7dCB0cmlnZ2VyIGZhbHNlIHBvc2l0aXZlcyBvciBtaXNzIGFjdHVhbCBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDE6NDUuNzY5MjAxNTIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0NTk1MzYxMDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPTVBBQ1RJT05cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERUJVR19WTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3BsaXRfZm9saW9fdG9fb3JkZXJcIixcbiAgICBcImZyZWVfdGFpbF9wYWdlX3ByZXBhcmVcIixcbiAgICBcInBjcHVfZGVzdHJveV9jaHVua1wiLFxuICAgIFwiaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tcIixcbiAgICBcImZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNcIixcbiAgICBcImNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBmaXggaXNzdWVzIHdpdGggYHBhZ2UtXFx1MDAzZXByaXZhdGVgIG5vdCBiZWluZyBwcm9wZXJseSBjbGVhcmVkIG9yIGNoZWNrZWQgb24gdGFpbCBwYWdlcy4gSXQgcmVtb3ZlcyBgc2V0X3BhZ2VfcHJpdmF0ZWAgaW4gY29tcGFjdGlvbiwgYWRkcyB3YXJuaW5ncyBpbiBodWdlIG1lbW9yeSBzcGxpdHRpbmcgYW5kIGludGVybmFsIHByZXAsIGFuZCBhZGRzIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBJdCBhbHNvIGNsZWFycyBjaHVuayBpbmZvIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGluIHBlcmNwdS1rbS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG9uJ3QgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgb3IgbWlzcyBhY3R1YWwgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDE6NDUuNzY5MjEwNjYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODIxNDAxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZmZmOTg1NzQ2ZDQ3NDI3NGMxMDg1ZTU4NDlhYTUyYzljMGFkZDgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMTQ6MDE6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jXFxuaW5kZXggZjA4NzY1YWRlMDE0Y2UuLjlmNDIwNDg1M2FmZDYyIDEwMDY0NFxcbi0tLSBhL21tL2NvbXBhY3Rpb24uY1xcbisrKyBiL21tL2NvbXBhY3Rpb24uY1xcbkBAIC02NDQsNyArNjQ0LDYgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsXFxuIFxcdFxcdGlzb2xhdGVkID0gX19pc29sYXRlX2ZyZWVfcGFnZShwYWdlLCBvcmRlcik7XFxuIFxcdFxcdGlmICghaXNvbGF0ZWQpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIG9yZGVyKTtcXG4gXFxuIFxcdFxcdG5yX3NjYW5uZWQgKz0gaXNvbGF0ZWQgLSAxO1xcbiBcXHRcXHR0b3RhbF9pc29sYXRlZCArPSBpc29sYXRlZDtcXG5AQCAtMTYxNyw3ICsxNjE2LDYgQEAgc3RhdGljIHZvaWQgZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYylcXG4gXFx0XFx0LyogSXNvbGF0ZSB0aGUgcGFnZSBpZiBhdmFpbGFibGUgKi9cXG4gXFx0XFx0aWYgKHBhZ2UpIHtcXG4gXFx0XFx0XFx0aWYgKF9faXNvbGF0ZV9mcmVlX3BhZ2UocGFnZSwgb3JkZXIpKSB7XFxuLVxcdFxcdFxcdFxcdHNldF9wYWdlX3ByaXZhdGUocGFnZSwgb3JkZXIpO1xcbiBcXHRcXHRcXHRcXHRucl9pc29sYXRlZCA9IDEgXFx1MDAzY1xcdTAwM2Mgb3JkZXI7XFxuIFxcdFxcdFxcdFxcdG5yX3NjYW5uZWQgKz0gbnJfaXNvbGF0ZWQgLSAxO1xcbiBcXHRcXHRcXHRcXHR0b3RhbF9pc29sYXRlZCArPSBucl9pc29sYXRlZDtcXG5AQCAtMTg0Niw3ICsxODQ0LDYgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqY29tcGFjdGlvbl9hbGxvY19ub3Byb2Yoc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGFcXG4gXFx0XFx0c2l6ZSBcXHUwMDNlXFx1MDAzZT0gMTtcXG4gXFxuIFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmcmVlcGFnZVtzaXplXS5scnUsIFxcdTAwMjZjYy1cXHUwMDNlZnJlZXBhZ2VzW3N0YXJ0X29yZGVyXSk7XFxuLVxcdFxcdHNldF9wYWdlX3ByaXZhdGUoXFx1MDAyNmZyZWVwYWdlW3NpemVdLCBzdGFydF9vcmRlcik7XFxuIFxcdH1cXG4gXFx0ZHN0ID0gKHN0cnVjdCBmb2xpbyAqKWZyZWVwYWdlO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcXG5pbmRleCBiZGQ4NjM1OTIyZjk2ZC4uMDZkMDY3MWNmZjg5OTAgMTAwNjQ0XFxuLS0tIGEvbW0vaHVnZV9tZW1vcnkuY1xcbisrKyBiL21tL2h1Z2VfbWVtb3J5LmNcXG5AQCAtMzU5MSw2ICszNTkxLDEzIEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG4gXFx0XFx0bmV3X2ZvbGlvLVxcdTAwM2VtYXBwaW5nID0gZm9saW8tXFx1MDAzZW1hcHBpbmc7XFxuIFxcdFxcdG5ld19mb2xpby1cXHUwMDNlaW5kZXggPSBmb2xpby1cXHUwMDNlaW5kZXggKyBpO1xcbiBcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogcGFnZS1cXHUwMDNlcHJpdmF0ZSBzaG91bGQgbm90IGJlIHNldCBpbiB0YWlsIHBhZ2VzLiBXYXJuIG9uY2VcXG4rXFx0XFx0ICogaWYgcHJpdmF0ZSBpcyB1bmV4cGVjdGVkbHkgc2V0LiBEbyBpdCBiZWZvcmUgc3dhcC52YWwgYXNzaWdubWVudFxcbitcXHRcXHQgKiBzaW5jZSBwcml2YXRlIG92ZXJsYXBzIHdpdGggc3dhcC52YWwuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRWTV9XQVJOX09OX09OQ0VfUEFHRShuZXdfZm9saW8tXFx1MDAzZXByaXZhdGUsIG5ld19oZWFkKTtcXG4rXFxuIFxcdFxcdGlmIChmb2xpb190ZXN0X3N3YXBjYWNoZShmb2xpbykpXFxuIFxcdFxcdFxcdG5ld19mb2xpby1cXHUwMDNlc3dhcC52YWwgPSBmb2xpby1cXHUwMDNlc3dhcC52YWwgKyBpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vaW50ZXJuYWwuaCBiL21tL2ludGVybmFsLmhcXG5pbmRleCBmYTRmYjY5NDQ0ZWNkYy4uZmJkOWZiODQzNDFiYzcgMTAwNjQ0XFxuLS0tIGEvbW0vaW50ZXJuYWwuaFxcbisrKyBiL21tL2ludGVybmFsLmhcXG5AQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwcmVwX2NvbXBvdW5kX3RhaWwoc3RydWN0IHBhZ2UgKnRhaWwsXFxuIHtcXG4gXFx0dGFpbC1cXHUwMDNlbWFwcGluZyA9IFRBSUxfTUFQUElORztcXG4gXFx0c2V0X2NvbXBvdW5kX2hlYWQodGFpbCwgaGVhZCwgb3JkZXIpO1xcbi1cXHRzZXRfcGFnZV9wcml2YXRlKHRhaWwsIDApO1xcbitcXHRWTV9XQVJOX09OX09OQ0UodGFpbC1cXHUwMDNlcHJpdmF0ZSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBvdW5kX3RhaWwoc3RydWN0IHBhZ2UgKnRhaWwsXFxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xcbmluZGV4IDc2MmQ5YjZiYzc5MmYxLi43MjNhNTJkZmM4MGY2ZCAxMDA2NDRcXG4tLS0gYS9tbS9wYWdlX2FsbG9jLmNcXG4rKysgYi9tbS9wYWdlX2FsbG9jLmNcXG5AQCAtMTM3NiwxNSArMTM3NiwyMiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXFxuICNlbmRpZlxcbiBcXHRcXHR9XFxuIFxcdFxcdGZvciAoaSA9IDE7IGkgXFx1MDAzYyAoMSBcXHUwMDNjXFx1MDAzYyBvcmRlcik7IGkrKykge1xcbitcXHRcXHRcXHRzdHJ1Y3QgcGFnZSAqdGFpbF9wYWdlID0gcGFnZSArIGk7XFxuK1xcbiBcXHRcXHRcXHRpZiAoY29tcG91bmQpXFxuLVxcdFxcdFxcdFxcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHBhZ2UgKyBpKTtcXG4rXFx0XFx0XFx0XFx0YmFkICs9IGZyZWVfdGFpbF9wYWdlX3ByZXBhcmUocGFnZSwgdGFpbF9wYWdlKTtcXG4gXFx0XFx0XFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xcbi1cXHRcXHRcXHRcXHRpZiAoZnJlZV9wYWdlX2lzX2JhZChwYWdlICsgaSkpIHtcXG4rXFx0XFx0XFx0XFx0aWYgKGZyZWVfcGFnZV9pc19iYWQodGFpbF9wYWdlKSkge1xcbiBcXHRcXHRcXHRcXHRcXHRiYWQrKztcXG4gXFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHQocGFnZSArIGkpLVxcdTAwM2VmbGFncy5mIFxcdTAwMjY9IH5QQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVA7XFxuK1xcdFxcdFxcdHRhaWxfcGFnZS1cXHUwMDNlZmxhZ3MuZiBcXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xcbitcXHRcXHRcXHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2IHRhaWxfcGFnZS1cXHUwMDNlcHJpdmF0ZSkge1xcbitcXHRcXHRcXHRcXHRiYWRfcGFnZSh0YWlsX3BhZ2UsIFxcXCJub256ZXJvIHByaXZhdGVcXFwiKTtcXG4rXFx0XFx0XFx0XFx0YmFkKys7XFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSkge1xcbmRpZmYgLS1naXQgYS9tbS9wZXJjcHUta20uYyBiL21tL3BlcmNwdS1rbS5jXFxuaW5kZXggNGVmYTc0YTQ5NWNiNmIuLjdmZmU4NGFkYWRiOWQ5IDEwMDY0NFxcbi0tLSBhL21tL3BlcmNwdS1rbS5jXFxuKysrIGIvbW0vcGVyY3B1LWttLmNcXG5AQCAtOTQsOCArOTQsMTUgQEAgc3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcXG4gXFx0cGNwdV9zdGF0c19jaHVua19kZWFsbG9jKCk7XFxuIFxcdHRyYWNlX3BlcmNwdV9kZXN0cm95X2NodW5rKGNodW5rLVxcdTAwM2ViYXNlX2FkZHIpO1xcbiBcXG4tXFx0aWYgKGNodW5rLVxcdTAwM2VkYXRhKVxcbitcXHRpZiAoY2h1bmstXFx1MDAzZWRhdGEpIHtcXG4rXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2VzID0gKHN0cnVjdCBwYWdlICopY2h1bmstXFx1MDAzZWRhdGE7XFxuK1xcdFxcdGludCBpO1xcbitcXG4rXFx0XFx0LyogY2xlYXIgY2h1bmsgaW5mbyBmcm9tIGVhY2ggcGFnZSBiZWZvcmUgZnJlZSB0aGVtICovXFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9wYWdlczsgaSsrKVxcbitcXHRcXHRcXHRwY3B1X3NldF9wYWdlX2NodW5rKHBhZ2VzICsgaSwgTlVMTCk7XFxuIFxcdFxcdF9fZnJlZV9wYWdlcyhjaHVuay1cXHUwMDNlZGF0YSwgb3JkZXJfYmFzZV8yKG5yX3BhZ2VzKSk7XFxuK1xcdH1cXG4gXFx0cGNwdV9mcmVlX2NodW5rKGNodW5rKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDE6NDYuNTUyNDEwNDU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjM4MTIxMzgwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09NUEFDVElPTlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkRFQlVHX1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiZnJlZV90YWlsX3BhZ2VfcHJlcGFyZVwiLFxuICAgIFwicGNwdV9kZXN0cm95X2NodW5rXCIsXG4gICAgXCJpc29sYXRlX2ZyZWVwYWdlc19ibG9ja1wiLFxuICAgIFwiZmFzdF9pc29sYXRlX2ZyZWVwYWdlc1wiLFxuICAgIFwiY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIGZpeCBpc3N1ZXMgd2l0aCBgcGFnZS1cXHUwMDNlcHJpdmF0ZWAgbm90IGJlaW5nIHByb3Blcmx5IGNsZWFyZWQgb3IgY2hlY2tlZCBvbiB0YWlsIHBhZ2VzLiBJdCByZW1vdmVzIGBzZXRfcGFnZV9wcml2YXRlYCBpbiBjb21wYWN0aW9uLCBhZGRzIHdhcm5pbmdzIGluIGh1Z2UgbWVtb3J5IHNwbGl0dGluZyBhbmQgaW50ZXJuYWwgcHJlcCwgYW5kIGFkZHMgYSBjaGVjayBpbiBwYWdlIGFsbG9jYXRpb24uIEl0IGFsc28gY2xlYXJzIGNodW5rIGluZm8gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkb24ndCB0cmlnZ2VyIGZhbHNlIHBvc2l0aXZlcyBvciBtaXNzIGFjdHVhbCBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJmZmY5ODU3NDZkNDc0Mjc0YzEwODVlNTg0OWFhNTJjOWMwYWRkODBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDE0OjAxOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jXG5pbmRleCBmMDg3NjVhZGUwMTRjZS4uOWY0MjA0ODUzYWZkNjIgMTAwNjQ0XG4tLS0gYS9tbS9jb21wYWN0aW9uLmNcbisrKyBiL21tL2NvbXBhY3Rpb24uY1xuQEAgLTY0NCw3ICs2NDQsNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYyxcbiBcdFx0aXNvbGF0ZWQgPSBfX2lzb2xhdGVfZnJlZV9wYWdlKHBhZ2UsIG9yZGVyKTtcbiBcdFx0aWYgKCFpc29sYXRlZClcbiBcdFx0XHRicmVhaztcbi1cdFx0c2V0X3BhZ2VfcHJpdmF0ZShwYWdlLCBvcmRlcik7XG4gXG4gXHRcdG5yX3NjYW5uZWQgKz0gaXNvbGF0ZWQgLSAxO1xuIFx0XHR0b3RhbF9pc29sYXRlZCArPSBpc29sYXRlZDtcbkBAIC0xNjE3LDcgKzE2MTYsNiBAQCBzdGF0aWMgdm9pZCBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxuIFx0XHQvKiBJc29sYXRlIHRoZSBwYWdlIGlmIGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAocGFnZSkge1xuIFx0XHRcdGlmIChfX2lzb2xhdGVfZnJlZV9wYWdlKHBhZ2UsIG9yZGVyKSkge1xuLVx0XHRcdFx0c2V0X3BhZ2VfcHJpdmF0ZShwYWdlLCBvcmRlcik7XG4gXHRcdFx0XHRucl9pc29sYXRlZCA9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0XHRcdFx0bnJfc2Nhbm5lZCArPSBucl9pc29sYXRlZCAtIDE7XG4gXHRcdFx0XHR0b3RhbF9pc29sYXRlZCArPSBucl9pc29sYXRlZDtcbkBAIC0xODQ2LDcgKzE4NDQsNiBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICpjb21wYWN0aW9uX2FsbG9jX25vcHJvZihzdHJ1Y3QgZm9saW8gKnNyYywgdW5zaWduZWQgbG9uZyBkYVxuIFx0XHRzaXplIFx1MDAzZVx1MDAzZT0gMTtcbiBcbiBcdFx0bGlzdF9hZGQoXHUwMDI2ZnJlZXBhZ2Vbc2l6ZV0ubHJ1LCBcdTAwMjZjYy1cdTAwM2VmcmVlcGFnZXNbc3RhcnRfb3JkZXJdKTtcbi1cdFx0c2V0X3BhZ2VfcHJpdmF0ZShcdTAwMjZmcmVlcGFnZVtzaXplXSwgc3RhcnRfb3JkZXIpO1xuIFx0fVxuIFx0ZHN0ID0gKHN0cnVjdCBmb2xpbyAqKWZyZWVwYWdlO1xuIFxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXG5pbmRleCBiZGQ4NjM1OTIyZjk2ZC4uMDZkMDY3MWNmZjg5OTAgMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4rKysgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtMzU5MSw2ICszNTkxLDEzIEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbiBcdFx0bmV3X2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0XHRuZXdfZm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleCArIGk7XG4gXG4rXHRcdC8qXG4rXHRcdCAqIHBhZ2UtXHUwMDNlcHJpdmF0ZSBzaG91bGQgbm90IGJlIHNldCBpbiB0YWlsIHBhZ2VzLiBXYXJuIG9uY2VcbitcdFx0ICogaWYgcHJpdmF0ZSBpcyB1bmV4cGVjdGVkbHkgc2V0LiBEbyBpdCBiZWZvcmUgc3dhcC52YWwgYXNzaWdubWVudFxuK1x0XHQgKiBzaW5jZSBwcml2YXRlIG92ZXJsYXBzIHdpdGggc3dhcC52YWwuXG4rXHRcdCAqL1xuK1x0XHRWTV9XQVJOX09OX09OQ0VfUEFHRShuZXdfZm9saW8tXHUwMDNlcHJpdmF0ZSwgbmV3X2hlYWQpO1xuK1xuIFx0XHRpZiAoZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKVxuIFx0XHRcdG5ld19mb2xpby1cdTAwM2Vzd2FwLnZhbCA9IGZvbGlvLVx1MDAzZXN3YXAudmFsICsgaTtcbiBcbmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaFxuaW5kZXggZmE0ZmI2OTQ0NGVjZGMuLmZiZDlmYjg0MzQxYmM3IDEwMDY0NFxuLS0tIGEvbW0vaW50ZXJuYWwuaFxuKysrIGIvbW0vaW50ZXJuYWwuaFxuQEAgLTkwMiw3ICs5MDIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJlcF9jb21wb3VuZF90YWlsKHN0cnVjdCBwYWdlICp0YWlsLFxuIHtcbiBcdHRhaWwtXHUwMDNlbWFwcGluZyA9IFRBSUxfTUFQUElORztcbiBcdHNldF9jb21wb3VuZF9oZWFkKHRhaWwsIGhlYWQsIG9yZGVyKTtcbi1cdHNldF9wYWdlX3ByaXZhdGUodGFpbCwgMCk7XG4rXHRWTV9XQVJOX09OX09OQ0UodGFpbC1cdTAwM2Vwcml2YXRlKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGluaXRfY29tcG91bmRfdGFpbChzdHJ1Y3QgcGFnZSAqdGFpbCxcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcbmluZGV4IDc2MmQ5YjZiYzc5MmYxLi43MjNhNTJkZmM4MGY2ZCAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xuKysrIGIvbW0vcGFnZV9hbGxvYy5jXG5AQCAtMTM3NiwxNSArMTM3NiwyMiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gI2VuZGlmXG4gXHRcdH1cbiBcdFx0Zm9yIChpID0gMTsgaSBcdTAwM2MgKDEgXHUwMDNjXHUwMDNjIG9yZGVyKTsgaSsrKSB7XG4rXHRcdFx0c3RydWN0IHBhZ2UgKnRhaWxfcGFnZSA9IHBhZ2UgKyBpO1xuK1xuIFx0XHRcdGlmIChjb21wb3VuZClcbi1cdFx0XHRcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHBhZ2UgKyBpKTtcbitcdFx0XHRcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XG4gXHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xuLVx0XHRcdFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSArIGkpKSB7XG4rXHRcdFx0XHRpZiAoZnJlZV9wYWdlX2lzX2JhZCh0YWlsX3BhZ2UpKSB7XG4gXHRcdFx0XHRcdGJhZCsrO1xuIFx0XHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRcdH1cbiBcdFx0XHR9XG4tXHRcdFx0KHBhZ2UgKyBpKS1cdTAwM2VmbGFncy5mIFx1MDAyNj0gflBBR0VfRkxBR1NfQ0hFQ0tfQVRfUFJFUDtcbitcdFx0XHR0YWlsX3BhZ2UtXHUwMDNlZmxhZ3MuZiBcdTAwMjY9IH5QQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVA7XG4rXHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSBcdTAwMjZcdTAwMjYgdGFpbF9wYWdlLVx1MDAzZXByaXZhdGUpIHtcbitcdFx0XHRcdGJhZF9wYWdlKHRhaWxfcGFnZSwgXCJub256ZXJvIHByaXZhdGVcIik7XG4rXHRcdFx0XHRiYWQrKztcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1x0XHRcdH1cbiBcdFx0fVxuIFx0fVxuIFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHtcbmRpZmYgLS1naXQgYS9tbS9wZXJjcHUta20uYyBiL21tL3BlcmNwdS1rbS5jXG5pbmRleCA0ZWZhNzRhNDk1Y2I2Yi4uN2ZmZTg0YWRhZGI5ZDkgMTAwNjQ0XG4tLS0gYS9tbS9wZXJjcHUta20uY1xuKysrIGIvbW0vcGVyY3B1LWttLmNcbkBAIC05NCw4ICs5NCwxNSBAQCBzdGF0aWMgdm9pZCBwY3B1X2Rlc3Ryb3lfY2h1bmsoc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rKVxuIFx0cGNwdV9zdGF0c19jaHVua19kZWFsbG9jKCk7XG4gXHR0cmFjZV9wZXJjcHVfZGVzdHJveV9jaHVuayhjaHVuay1cdTAwM2ViYXNlX2FkZHIpO1xuIFxuLVx0aWYgKGNodW5rLVx1MDAzZWRhdGEpXG4rXHRpZiAoY2h1bmstXHUwMDNlZGF0YSkge1xuK1x0XHRzdHJ1Y3QgcGFnZSAqcGFnZXMgPSAoc3RydWN0IHBhZ2UgKiljaHVuay1cdTAwM2VkYXRhO1xuK1x0XHRpbnQgaTtcbitcbitcdFx0LyogY2xlYXIgY2h1bmsgaW5mbyBmcm9tIGVhY2ggcGFnZSBiZWZvcmUgZnJlZSB0aGVtICovXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpKyspXG4rXHRcdFx0cGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlcyArIGksIE5VTEwpO1xuIFx0XHRfX2ZyZWVfcGFnZXMoY2h1bmstXHUwMDNlZGF0YSwgb3JkZXJfYmFzZV8yKG5yX3BhZ2VzKSk7XG4rXHR9XG4gXHRwY3B1X2ZyZWVfY2h1bmsoY2h1bmspO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAxOjQ2LjU1MjQxMjM2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NDc3NDkwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBjbGVhcmx5IG1lc3Npbmcgd2l0aCBzb21lIGNyaXRpY2FsIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIEl0IHRvdWNoZXMgc2V2ZXJhbCBrZXkgZmlsZXM6IGBtbS9jb21wYWN0aW9uLmNgLCBgbW0vaHVnZV9tZW1vcnkuY2AsIGBtbS9pbnRlcm5hbC5oYCwgYG1tL3BhZ2VfYWxsb2MuY2AsIGFuZCBgbW0vcGVyY3B1LWttLmNgLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBob3cgbWVtb3J5IGlzIGFsbG9jYXRlZCwgZnJlZWQsIGFuZCBtYW5hZ2VkIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEkgc2VlIHRoZXkndmUgcmVtb3ZlZCBgc2V0X3BhZ2VfcHJpdmF0ZShwYWdlLCBvcmRlcilgIGluIGBtbS9jb21wYWN0aW9uLmNgLCBhZGRlZCBhIGBWTV9XQVJOX09OX09OQ0VfUEFHRWAgY2hlY2sgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgLCBhbmQgcmVwbGFjZWQgc29tZSBgc2V0X3BhZ2VfcHJpdmF0ZWAgY2FsbHMgd2l0aCBgVk1fV0FSTl9PTl9PTkNFYCBhc3NlcnRpb25zIGluIGBtbS9pbnRlcm5hbC5oYC4gVGhlcmUncyBhbHNvIGEgbmV3IGB0YWlsX3BhZ2UtXHUwMDNlcHJpdmF0ZWAgY2hlY2sgaW4gYG1tL3BhZ2VfYWxsb2MuY2AgYW5kIHRoZXkncmUgZXhwbGljaXRseSBjbGVhcmluZyBjaHVuayBpbmZvcm1hdGlvbiBiZWZvcmUgZnJlZWluZyBwYWdlcyBpbiBgbW0vcGVyY3B1LWttLmNgLlxuXG5HaXZlbiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgbXkgZ3V0IHNheXMgdGhpcyBkZWZpbml0ZWx5IG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBJIG5lZWQgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyB0aGF0IHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhhdCBJIGNvdWxkIHRhcmdldC4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdGhhdCBmdW5jdGlvbnMgbGlrZSBgX19zcGxpdF9mb2xpb190b19vcmRlcmAsIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAsIGBwY3B1X2Rlc3Ryb3lfY2h1bmtgLCBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgLCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AsIGFuZCBgY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZgIGFyZSBwcm9iYWJseSBnb29kIGNhbmRpZGF0ZXMgdG8gZm9jdXMgb24uIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgdHJpZ2dlcmluZyBpbnRlcmVzdGluZyBtZW1vcnkgbWFuYWdlbWVudCBzY2VuYXJpb3MuXG5cbkknbSBhbHNvIGdvaW5nIHRvIGNoZWNrIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSB0aGVzZSBzZWN0aW9ucyBvZiBjb2RlLiBTbywgYG1tL2NvbXBhY3Rpb24uY2AgaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0NPTVBBQ1RJT05gLCBgbW0vaHVnZV9tZW1vcnkuY2AgZGVwZW5kcyBvbiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYW5kIGBtbS9wZXJjcHUta20uY2AgbmVlZHMgYENPTkZJR19ORUVEX1BFUl9DUFVfS01gLiBJJ2xsIGFsc28gbmVlZCB0byBkaXZlIGludG8gdGhlIHVzYWdlIG9mIGBtbS9wZXJjcHUta20uY2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEzMiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAxOjUzLjEwMDE2NDU2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODI5MTY2NjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORUVEX1BFUl9DUFVfS01cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL3Rlc3Rfdm1hbGxvYy5jPTMxNj1wY3B1X2FsbG9jX3Rlc3Qodm9pZClcXG4tLVxcbmxpYi90ZXN0X3ZtYWxsb2MuYy0zMTgtXFx0aW50IHJ2ID0gMDtcXG5saWIvdGVzdF92bWFsbG9jLmM6MzE5OiNpZm5kZWYgQ09ORklHX05FRURfUEVSX0NQVV9LTVxcbmxpYi90ZXN0X3ZtYWxsb2MuYy0zMjAtXFx0dm9pZCBfX3BlcmNwdSAqKnBjcHU7XFxuLS1cXG5tbS9wZXJjcHUta20uYy0xMi0gKlxcbm1tL3BlcmNwdS1rbS5jOjEzOiAqIC0gZGVmaW5lIENPTkZJR19ORUVEX1BFUl9DUFVfS00gZnJvbSB0aGUgYXJjaCBLY29uZmlnLlxcbm1tL3BlcmNwdS1rbS5jLTE0LSAqXFxuLS1cXG5tbS9wZXJjcHUuYz0xNTc2PXN0YXRpYyBpbnQgX19pbml0IHBjcHVfdmVyaWZ5X2FsbG9jX2luZm8oY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWkpO1xcbm1tL3BlcmNwdS5jLTE1NzctXFxubW0vcGVyY3B1LmM6MTU3ODojaWZkZWYgQ09ORklHX05FRURfUEVSX0NQVV9LTVxcbm1tL3BlcmNwdS5jLTE1NzktI2luY2x1ZGUgXFxcInBlcmNwdS1rbS5jXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMjowMC45MjkzNDA3MDVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUwNDkxMDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgYENPTkZJR19ORUVEX1BFUl9DUFVfS01gIGFuZCBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIGBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNYCBpcyBhbiBhcmNoIGNvbmZpZywgbm90IHNvbWV0aGluZyBJIHNlZSBhbGwgdGhlIHRpbWUsIGJ1dCBJIGtub3cgaXQncyB1c3VhbGx5IHNwZWNpZmljIHRvIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlcy4gVGhpbmsgbTY4aywgbWljcm9ibGF6ZSwgbmlvczIsIHRoYXQgc29ydCBvZiB0aGluZy4uLiBvciBzeXN0ZW1zIHdpdGhvdXQgZnVsbCBtZW1vcnkgbWFuYWdlbWVudCB1bml0cyAobm9tbXUpLiBJdCdzIGdvdCBtZSBjdXJpb3VzLCB0aG91Z2guXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRpdmUgaW50byBob3cgdGhpcyBpbXBhY3RzIHRoZSBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQuIENvbXBhY3Rpb24gaXMgd2hlcmUgSSdkIHN0YXJ0LiBBbmQgaHVnZXBhZ2VzISBgbW0vY29tcGFjdGlvbi5jYCBhbmQgYG1tL2h1Z2VfbWVtb3J5LmNgIHNlZW0gbGlrZSB0aGUgbGlrZWx5IHBsYWNlcyB0aGlzIGNvbmZpZyB3b3VsZCBoYXZlIGFuIGltcGFjdC4gTGV0IG1lIGNoZWNrIHRoZSBjb2RlIHRoZXJlLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgcGVyLUNQVSBrbWFsbG9jIHN0dWZmIGlzIGhvb2tlZCBpbi4uLiBhbmQgaG93IHRoZSBhcmNoaXRlY3R1cmVzIHRoYXQgKm5lZWQqIHRoaXMgc2V0dGluZyBpbnRlcmFjdCB3aXRoIGNvbXBhY3Rpb24gYW5kIGh1Z2UgcGFnZSBhbGxvY2F0aW9uLiBTb3VuZHMgbGlrZSBhIGZ1biBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjU2LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6MDQuNTc5ODM0NDAyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzA3MzgyMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0NPTVBBQ1RJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0PTExND1jb21wYWN0X21lbW9yeVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0LTExNi1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3Q6MTE3OkF2YWlsYWJsZSBvbmx5IHdoZW4gQ09ORklHX0NPTVBBQ1RJT04gaXMgc2V0LiBXaGVuIDEgaXMgd3JpdHRlbiB0byB0aGUgZmlsZSxcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3QtMTE4LWFsbCB6b25lcyBhcmUgY29tcGFjdGVkIHN1Y2ggdGhhdCBmcmVlIG1lbW9yeSBpcyBhdmFpbGFibGUgaW4gY29udGlndW91c1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0PTE0NT1jb21wYWN0X3VuZXZpY3RhYmxlX2FsbG93ZWRcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdC0xNDctXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0OjE0ODpBdmFpbGFibGUgb25seSB3aGVuIENPTkZJR19DT01QQUNUSU9OIGlzIHNldC4gV2hlbiBzZXQgdG8gMSwgY29tcGFjdGlvbiBpc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdC0xNDktYWxsb3dlZCB0byBleGFtaW5lIHRoZSB1bmV2aWN0YWJsZSBscnUgKG1sb2NrZWQgcGFnZXMpIGZvciBwYWdlcyB0byBjb21wYWN0Llxcbi0tXFxuYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9Mjc0PWV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTtcXG5hcmNoL2FscGhhL2luY2x1ZGUvYXNtL3BndGFibGUuaC0yNzUtXFxuYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6Mjc2OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbmFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3Ny0jZGVmaW5lIF9fSEFWRV9BUkNIX1BURVBfR0VUX0FORF9DTEVBUlxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDFfZGVmY29uZmlnPTI3PUNPTkZJR19QUkVFTVBUPXlcXG5hcmNoL2FyYy9jb25maWdzL2F4czEwMV9kZWZjb25maWc6Mjg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDFfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnPTI2PUNPTkZJR19QUkVFTVBUPXlcXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19kZWZjb25maWc6Mjc6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnLTI4LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZz0yNj1DT05GSUdfUFJFRU1QVD15XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZzoyNzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnLTI4LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZz0xOD1DT05GSUdfTU9EVUxFUz15XFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZy0xOS0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZzoyMDojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfZGVmY29uZmlnLTIxLUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX3NtcF9kZWZjb25maWc9MjE9Q09ORklHX01PRFVMRVM9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvaGFwc19oc19zbXBfZGVmY29uZmlnLTIyLSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZzoyMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZy0yNC1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc9MjQ9Q09ORklHX1BSRUVNUFQ9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc6MjU6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9oc2RrX2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbV83MDBfZGVmY29uZmlnPTIyPUNPTkZJR19NT0RVTEVTPXlcXG5hcmNoL2FyYy9jb25maWdzL25zaW1fNzAwX2RlZmNvbmZpZy0yMy0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWc6MjQ6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWctMjUtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2RlZmNvbmZpZz0yMj1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cXFwibnNpbW9zY2lcXFwiXFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9kZWZjb25maWc6MjM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9kZWZjb25maWctMjQtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX2RlZmNvbmZpZz0yMj1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cXFwibnNpbW9zY2lfaHNcXFwiXFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19kZWZjb25maWc6MjM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19kZWZjb25maWctMjQtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWc9MjA9Q09ORklHX1BSRUVNUFQ9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbW9zY2lfaHNfc21wX2RlZmNvbmZpZzoyMTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWctMjItQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL3RiMTB4X2RlZmNvbmZpZz0zMD1DT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvdGIxMHhfZGVmY29uZmlnOjMxOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvYXJjL2NvbmZpZ3MvdGIxMHhfZGVmY29uZmlnLTMyLUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnPTM2PUNPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEPXlcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjM4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy0zOS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZz00Mz1DT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRD15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTQ0LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo0NTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctNDYtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y3X2RlZmNvbmZpZz0yNT1DT05GSUdfTU9EVUxFX1VOTE9BRD15XFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92N19kZWZjb25maWc6MjY6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92N19kZWZjb25maWctMjctQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc9NDc9Q09ORklHX1NMVUJfVElOWT15XFxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnOjQ4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy00OS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTdfZGVmY29uZmlnPTM5PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctNDItIyBDT05GSUdfU1dBUCBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWc6NDM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctNDQtQ09ORklHX0NNQT15XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc9NDQ9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6NDU6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTQ2LUNPTkZJR19ETUFQT09MX1RFU1Q9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz00MD1DT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc6NDE6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZy00Mi1DT05GSUdfRE1BUE9PTF9URVNUPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz00Nz1DT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo0ODojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNDktQ09ORklHX0RNQVBPT0xfVEVTVD1tXFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWc9Mzc9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTM5LUNPTkZJR19ETUFQT09MX1RFU1Q9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTM5PUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnOjQwOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZy00MS1DT05GSUdfRE1BUE9PTF9URVNUPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9Mzg9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnOjM5OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctNDAtQ09ORklHX0RNQVBPT0xfVEVTVD1tXFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9NTg9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6NTk6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTYwLUNPTkZJR19ETUFQT09MX1RFU1Q9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc9MzY9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZzozNzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZy0zOC1DT05GSUdfRE1BUE9PTF9URVNUPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTM3PUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctMzktQ09ORklHX0RNQVBPT0xfVEVTVD1tXFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnPTM4PUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZzozOTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTQwLUNPTkZJR19ETUFQT09MX1RFU1Q9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc9MzQ9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzozNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZy0zNi1DT05GSUdfVVNFUkZBVUxURkQ9eVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnPTM0PUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnOjM1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZy0zNi1DT05GSUdfRE1BUE9PTF9URVNUPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2F0aDI1X2RlZmNvbmZpZz0yMz1DT05GSUdfTU9EVUxFX1VOTE9BRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnLTI0LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWc6MjU6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnLTI2LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWc9Mjg9Q09ORklHX01PRFVMRVM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWctMzAtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWc6MzE6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWctMzItQ09ORklHX0NNQT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9jdTEwMDAtbmVvX2RlZmNvbmZpZz0yNz1DT05GSUdfTU9EVUxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWctMjgtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnOjI5OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnLTMwLUNPTkZJR19DTUE9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc9Mjc9Q09ORklHX01PRFVMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTgzMC1uZW9fZGVmY29uZmlnLTI4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9jdTE4MzAtbmVvX2RlZmNvbmZpZzoyOTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9jdTE4MzAtbmVvX2RlZmNvbmZpZy0zMC1DT05GSUdfQ01BPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnPTMwPUNPTkZJR19NSVBTX0NNRExJTkVfRlJPTV9CT09UTE9BREVSPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnLTMyLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZzozMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZy0zNC1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3J0MzA1eF9kZWZjb25maWc9MjM9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZy0yNC0jIENPTkZJR19DT1JFRFVNUCBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZzoyNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnLTI2LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWc9MzA9Q09ORklHX01JUFNfQ01ETElORV9GUk9NX0JPT1RMT0FERVI9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWctMzItIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL3ZvY29yZTJfZGVmY29uZmlnOjMzOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL3ZvY29yZTJfZGVmY29uZmlnLTM0LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MveHdheV9kZWZjb25maWc9MjU9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MveHdheV9kZWZjb25maWctMjYtIyBDT05GSUdfQ09SRURVTVAgaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnOjI3OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnLTI4LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0zNj1DT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzozODojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTM5LUNPTkZJR19NRU1PUllfRkFJTFVSRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy80NHgvYWtlYm9ub19kZWZjb25maWc9MTk9Q09ORklHX0lSUV9BTExfQ1BVUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2FrZWJvbm9fZGVmY29uZmlnOjIwOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzQ0eC9ha2Vib25vX2RlZmNvbmZpZy0yMS0jIENPTkZJR19TVVNQRU5EIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21pY3Jvd2F0dF9kZWZjb25maWc9MzA9Q09ORklHX1BQQ180S19QQUdFUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9taWNyb3dhdHRfZGVmY29uZmlnLTMzLSMgQ09ORklHX0NPUkVEVU1QIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9taWNyb3dhdHRfZGVmY29uZmlnOjM0OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21pY3Jvd2F0dF9kZWZjb25maWctMzUtIyBDT05GSUdfTUlHUkFUSU9OIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZz0yMz1DT05GSUdfQ01ETElORT1cXFwiY29uc29sZT10dHlTMCw5NjAwIGlwPWRoY3Agcm9vdD0vZGV2L25mc1xcXCJcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjQtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZzoyNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjYtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnPTM1PUNPTkZJR19CSU5GTVRfTUlTQz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTM3LSMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnOjM4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzktQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZz01Nj1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTU4LSMgQ09ORklHX01RX0lPU0NIRURfS1lCRVIgaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnOjU5OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTYwLSMgQ09ORklHX01JR1JBVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6MTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWctMi1DT05GSUdfQklORk1UX01JU0M9bVxcbi0tXFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6MTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3VtL2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZy0yLUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZz0zMz1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cXFwia2M3MDVcXFwiXFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWc6MzQ6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWctMzUtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9jYWRlbmNlX2NzcF9kZWZjb25maWc9Mzc9Q09ORklHX0JVSUxUSU5fRFRCX05BTUU9XFxcImNzcFxcXCJcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZzozODojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZy0zOS1DT05GSUdfWFRGUEdBX0xDRD15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnPTMyPUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVxcXCJrYzcwNVxcXCJcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnOjMzOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWctMzQtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnPTM2PUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVxcXCJseDIwMG14XFxcIlxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZzozNzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctMzgtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZz0zMT1DT05GSUdfTU9EVUxFX1VOTE9BRD15XFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZy0zMi0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZzozMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3h0ZW5zYS9jb25maWdzL3ZpcnRfZGVmY29uZmlnLTM0LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnPTMyPUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVxcXCJrYzcwNVxcXCJcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZy0zNC0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnOjM1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZy0zNi1DT05GSUdfTkVUPXlcXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTgzPXN0YXRpYyBpbmxpbmUgaW50IGN1cnJlbnRfaXNfa2NvbXBhY3RkKHZvaWQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC04Ny1cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDo4ODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC04OS1cXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTEyOT1zdGF0aWMgaW5saW5lIHZvaWQgd2FrZXVwX2tjb21wYWN0ZChwZ19kYXRhX3QgKnBnZGF0LFxcbi0tXFxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTMzLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oOjEzNDojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzUtXFxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmg9MTM2PXN0cnVjdCBub2RlO1xcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oOjEzNzojaWYgZGVmaW5lZChDT05GSUdfQ09NUEFDVElPTikgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfU1lTRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXFxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTM4LWV4dGVybiBpbnQgY29tcGFjdGlvbl9yZWdpc3Rlcl9ub2RlKHN0cnVjdCBub2RlICpub2RlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTE0OD1zdGF0aWMgaW5saW5lIHZvaWQgY29tcGFjdGlvbl91bnJlZ2lzdGVyX25vZGUoc3RydWN0IG5vZGUgKm5vZGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xNTAtfVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oOjE1MTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gXFx1MDAyNlxcdTAwMjYgQ09ORklHX1NZU0ZTIFxcdTAwMjZcXHUwMDI2IENPTkZJR19OVU1BICovXFxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTUyLVxcbi0tXFxuaW5jbHVkZS9saW51eC9nZnAuaD00MzQ9c3RhdGljIGlubGluZSBib29sIGdmcF9jb21wYWN0aW9uX2FsbG93ZWQoZ2ZwX3QgZ2ZwX21hc2spXFxuaW5jbHVkZS9saW51eC9nZnAuaC00MzUte1xcbmluY2x1ZGUvbGludXgvZ2ZwLmg6NDM2OlxcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19DT01QQUNUSU9OKSBcXHUwMDI2XFx1MDAyNiAoZ2ZwX21hc2sgXFx1MDAyNiBfX0dGUF9JTyk7XFxuaW5jbHVkZS9saW51eC9nZnAuaC00MzctfVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD05Njg9c3RydWN0IHpvbmUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTE2LVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTExNzojaWYgZGVmaW5lZCBDT05GSUdfQ09NUEFDVElPTiB8fCBkZWZpbmVkIENPTkZJR19DTUFcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTExMTgtXFx0LyogcGZuIHdoZXJlIGNvbXBhY3Rpb24gZnJlZSBzY2FubmVyIHNob3VsZCBzdGFydCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTI1LVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTEyNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTExMjctXFx0LypcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTEzNy1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjExMzg6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTM5LVxcdC8qIFNldCB0byB0cnVlIHdoZW4gdGhlIFBHX21pZ3JhdGVfc2tpcCBiaXRzIHNob3VsZCBiZSBjbGVhcmVkICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTE0Njc9dHlwZWRlZiBzdHJ1Y3QgcGdsaXN0X2RhdGEge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xNTI2LVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTUyNzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE1MjgtXFx0aW50IGtjb21wYWN0ZF9tYXhfb3JkZXI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oPTkwPXZvaWQgY2xlYXJfcGZuYmxvY2tfYml0KGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHBmbixcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgtOTMtLyogRGVjbGFyYXRpb25zIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIGZsYWdzLiBTZWUgbW0vcGFnZV9hbGxvYy5jICovXFxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaDo5NDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oLTk1LSNkZWZpbmUgZ2V0X3BhZ2VibG9ja19za2lwKHBhZ2UpIFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmg9MTA5PXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZWJsb2NrX3NraXAoc3RydWN0IHBhZ2UgKnBhZ2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oLTExMS19XFxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaDoxMTI6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXFxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaC0xMTMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODI2PXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTMxMi1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTMxMzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTMxNC1cXHRzdHJ1Y3QgY2FwdHVyZV9jb250cm9sXFx0XFx0KmNhcHR1cmVfY29udHJvbDtcXG4tLVxcbmluY2x1ZGUvbGludXgvdm1fZXZlbnRfaXRlbS5oPTM0PWVudW0gdm1fZXZlbnRfaXRlbSB7IFBHUEdJTiwgUEdQR09VVCwgUFNXUElOLCBQU1dQT1VULFxcbi0tXFxuaW5jbHVkZS9saW51eC92bV9ldmVudF9pdGVtLmgtNjQtI2VuZGlmXFxuaW5jbHVkZS9saW51eC92bV9ldmVudF9pdGVtLmg6NjU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxuaW5jbHVkZS9saW51eC92bV9ldmVudF9pdGVtLmgtNjYtXFx0XFx0Q09NUEFDVE1JR1JBVEVfU0NBTk5FRCwgQ09NUEFDVEZSRUVfU0NBTk5FRCxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaD02Nz1ERUZJTkVfRVZFTlQobW1fY29tcGFjdGlvbl9pc29sYXRlX3RlbXBsYXRlLCBtbV9jb21wYWN0aW9uX2Zhc3RfaXNvbGF0ZV9mcmVlcGFnZXMsXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmgtNzctXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvY29tcGFjdGlvbi5oOjc4OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaC03OS1UUkFDRV9FVkVOVChtbV9jb21wYWN0aW9uX21pZ3JhdGVwYWdlcyxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21tZmxhZ3MuaD0yMzY9SUZfSEFWRV9WTV9EUk9QUEFCTEUoVk1fRFJPUFBBQkxFLFxcdFxcXCJkcm9wcGFibGVcXFwiXFx0KVxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21tZmxhZ3MuaC0yNDMtXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbW1mbGFncy5oOjI0NDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tbWZsYWdzLmgtMjQ1LSNkZWZpbmUgQ09NUEFDVElPTl9TVEFUVVNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaD0xNjY9VFJBQ0VfRVZFTlQoc2tpcF90YXNrX3JlYXBpbmcsXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaC0xODEtXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmg6MTgyOiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTE4My1UUkFDRV9FVkVOVChjb21wYWN0X3JldHJ5LFxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmgtMjE4LSk7XFxuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmg6MjE5OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTIyMC0jZW5kaWZcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDU2Mz1zdGF0aWMgdm9pZCBfX3NjaGVkX2ZvcmsodTY0IGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ2MDgtXFxua2VybmVsL3NjaGVkL2NvcmUuYzo0NjA5OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNDYxMC1cXHRwLVxcdTAwM2VjYXB0dXJlX2NvbnRyb2wgPSBOVUxMO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jLTI4LVxcbm1tL2NvbXBhY3Rpb24uYzoyOTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9jb21wYWN0aW9uLmMtMzAtLypcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz01OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdmlhX2NvbXBhY3RfbWVtb3J5KGludCBvcmRlcikgeyByZXR1cm4gZmFsc2U7IH1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy02MS1cXG5tbS9jb21wYWN0aW9uLmM6NjI6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXFxubW0vY29tcGFjdGlvbi5jLTYzLVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTkxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHJlbGVhc2VfZnJlZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVwYWdlcylcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xMTUtXFxubW0vY29tcGFjdGlvbi5jOjExNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9jb21wYWN0aW9uLmMtMTE3LVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTQ5MD1zdGF0aWMgYm9vbCB0ZXN0X2FuZF9zZXRfc2tpcChzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgc3RydWN0IHBhZ2UgKnBhZ2UpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNDkzLX1cXG5tbS9jb21wYWN0aW9uLmM6NDk0OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xcbm1tL2NvbXBhY3Rpb24uYy00OTUtXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MTMzNj1pc29sYXRlX21pZ3JhdGVwYWdlc19yYW5nZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTM3MS1cXG5tbS9jb21wYWN0aW9uLmM6MTM3MjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xcbm1tL2NvbXBhY3Rpb24uYzoxMzczOiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL2NvbXBhY3Rpb24uYy0xMzc0LVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTMzNTA9c3Vic3lzX2luaXRjYWxsKGtjb21wYWN0ZF9pbml0KVxcbm1tL2NvbXBhY3Rpb24uYy0zMzUxLVxcbm1tL2NvbXBhY3Rpb24uYzozMzUyOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xcbi0tXFxubW0vaW50ZXJuYWwuaD0xMDA2PXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdF9zdWJzZWN0aW9uX21hcCh2b2lkKVxcbi0tXFxubW0vaW50ZXJuYWwuaC0xMDEwLVxcbm1tL2ludGVybmFsLmg6MTAxMTojaWYgZGVmaW5lZCBDT05GSUdfQ09NUEFDVElPTiB8fCBkZWZpbmVkIENPTkZJR19DTUFcXG5tbS9pbnRlcm5hbC5oLTEwMTItXFxuLS1cXG5tbS9pbnRlcm5hbC5oPTEwODA9dm9pZCBpbml0X2NtYV9yZXNlcnZlZF9wYWdlYmxvY2soc3RydWN0IHBhZ2UgKnBhZ2UpO1xcbm1tL2ludGVybmFsLmgtMTA4MS1cXG5tbS9pbnRlcm5hbC5oOjEwODI6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OIHx8IENPTkZJR19DTUEgKi9cXG5tbS9pbnRlcm5hbC5oLTEwODMtXFxuLS1cXG5tbS9tbV9pbml0LmM9MTMyNz1zdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxcbi0tXFxubW0vbW1faW5pdC5jLTEzNjktXFxubW0vbW1faW5pdC5jOjEzNzA6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vbW1faW5pdC5jLTEzNzEtc3RhdGljIHZvaWQgcGdkYXRfaW5pdF9rY29tcGFjdGQoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcXG4tLVxcbm1tL29vbV9raWxsLmM9NDU2PXN0YXRpYyB2b2lkIGR1bXBfaGVhZGVyKHN0cnVjdCBvb21fY29udHJvbCAqb2MpXFxuLS1cXG5tbS9vb21fa2lsbC5jLTQ2MC1cXHRcXHRcXHRjdXJyZW50LVxcdTAwM2VzaWduYWwtXFx1MDAzZW9vbV9zY29yZV9hZGopO1xcbm1tL29vbV9raWxsLmM6NDYxOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikgXFx1MDAyNlxcdTAwMjYgb2MtXFx1MDAzZW9yZGVyKVxcbm1tL29vbV9raWxsLmMtNDYyLVxcdFxcdHByX3dhcm4oXFxcIkNPTVBBQ1RJT04gaXMgZGlzYWJsZWQhISFcXFxcblxcXCIpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTcxMj1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2J1ZGR5X29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNzE3LVxcbm1tL3BhZ2VfYWxsb2MuYzo3MTg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vcGFnZV9hbGxvYy5jLTcxOS1zdGF0aWMgaW5saW5lIHN0cnVjdCBjYXB0dXJlX2NvbnRyb2wgKnRhc2tfY2FwYyhzdHJ1Y3Qgem9uZSAqem9uZSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz03Njc9Y29tcGFjdGlvbl9jYXB0dXJlKHN0cnVjdCBjYXB0dXJlX2NvbnRyb2wgKmNhcGMsIHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTc3MS19XFxubW0vcGFnZV9hbGxvYy5jOjc3MjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS9wYWdlX2FsbG9jLmMtNzczLVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQwNTQ9X19hbGxvY19wYWdlc19tYXlfb29tKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNDE0NS1cXG5tbS9wYWdlX2FsbG9jLmM6NDE0NjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9wYWdlX2FsbG9jLmMtNDE0Ny0vKiBUcnkgbWVtb3J5IGNvbXBhY3Rpb24gZm9yIGhpZ2gtb3JkZXIgYWxsb2NhdGlvbnMgYmVmb3JlIHJlY2xhaW0gKi9cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz00Mjg2PXNob3VsZF9jb21wYWN0X3JldHJ5KGdmcF90IGdmcF9tYXNrLCBzdHJ1Y3QgYWxsb2NfY29udGV4dCAqYWMsIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy00MzExLX1cXG5tbS9wYWdlX2FsbG9jLmM6NDMxMjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS9wYWdlX2FsbG9jLmMtNDMxMy1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTYzMjM9c3RhdGljIHZvaWQgc2hyaW5rX3pvbmVzKHN0cnVjdCB6b25lbGlzdCAqem9uZWxpc3QsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNjM2My1cXHRcXHRcXHQgKi9cXG5tbS92bXNjYW4uYzo2MzY0OlxcdFxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19DT01QQUNUSU9OKSBcXHUwMDI2XFx1MDAyNlxcbm1tL3Ztc2Nhbi5jLTYzNjUtXFx0XFx0XFx0ICAgIHNjLVxcdTAwM2VvcmRlciBcXHUwMDNlIFBBR0VfQUxMT0NfQ09TVExZX09SREVSIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5tbS92bXN0YXQuYz0xMDQyPXZvaWQgbWVtbWFwX3BhZ2VzX2FkZChsb25nIGRlbHRhKVxcbi0tXFxubW0vdm1zdGF0LmMtMTA0Ni1cXG5tbS92bXN0YXQuYzoxMDQ3OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3Ztc3RhdC5jLTEwNDgtXFxuLS1cXG5tbS92bXN0YXQuYz0xMTg3PWNvbnN0IGNoYXIgKiBjb25zdCB2bXN0YXRfdGV4dFtdID0ge1xcbi0tXFxubW0vdm1zdGF0LmMtMTM3MC0jZW5kaWZcXG5tbS92bXN0YXQuYzoxMzcxOiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3Ztc3RhdC5jLTEzNzItXFx0W0koQ09NUEFDVE1JR1JBVEVfU0NBTk5FRCldXFx0XFx0PSBcXFwiY29tcGFjdF9taWdyYXRlX3NjYW5uZWRcXFwiLFxcbi0tXFxubW0vdm1zdGF0LmMtMTQ5Ni1cXG5tbS92bXN0YXQuYzoxNDk3OiNpZiAoZGVmaW5lZChDT05GSUdfREVCVUdfRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pKSB8fCBcXFxcXFxubW0vdm1zdGF0LmMtMTQ5OC0gICAgIGRlZmluZWQoQ09ORklHX1BST0NfRlMpXFxuLS1cXG5tbS92bXN0YXQuYz0yMjY4PXZvaWQgX19pbml0IGluaXRfbW1faW50ZXJuYWxzKHZvaWQpXFxuLS1cXG5tbS92bXN0YXQuYy0yMzAxLVxcbm1tL3Ztc3RhdC5jOjIzMDI6I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19DT01QQUNUSU9OKVxcbm1tL3Ztc3RhdC5jLTIzMDMtXFxuLS1cXG5tbS96c21hbGxvYy5jPTI3MD1zdHJ1Y3QgenNfcG9vbCB7XFxuLS1cXG5tbS96c21hbGxvYy5jLTI4NC0jZW5kaWZcXG5tbS96c21hbGxvYy5jOjI4NTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTI4Ni1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrO1xcbi0tXFxubW0venNtYWxsb2MuYz00MzE9c3RhdGljIGJvb2wgWnNIdWdlUGFnZShzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXFxuLS1cXG5tbS96c21hbGxvYy5jLTQzNS1cXG5tbS96c21hbGxvYy5jOjQzNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTQzNy1zdGF0aWMgdm9pZCBraWNrX2RlZmVycmVkX2ZyZWUoc3RydWN0IHpzX3Bvb2wgKnBvb2wpO1xcbi0tXFxubW0venNtYWxsb2MuYz0xMDI3PXN0YXRpYyBzdHJ1Y3QgenNwYWdlICphbGxvY196c3BhZ2Uoc3RydWN0IHpzX3Bvb2wgKnBvb2wsXFxuLS1cXG5tbS96c21hbGxvYy5jLTEwMzctXFxubW0venNtYWxsb2MuYzoxMDM4OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikpXFxubW0venNtYWxsb2MuYy0xMDM5LVxcdFxcdGdmcCBcXHUwMDI2PSB+X19HRlBfTU9WQUJMRTtcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MTQ1MT1zdGF0aWMgdm9pZCBvYmpfZnJlZShpbnQgY2xhc3Nfc2l6ZSwgdW5zaWduZWQgbG9uZyBvYmopXFxuLS1cXG5tbS96c21hbGxvYy5jLTE0NzgtXFxubW0venNtYWxsb2MuYzoxNDc5OiNpZiAoWlNfT0JKX0NMQVNTX0JJVFMgXFx1MDAzZSAwKSB8fCBkZWZpbmVkKENPTkZJR19DT01QQUNUSU9OKVxcbm1tL3pzbWFsbG9jLmMtMTQ4MC0vKiBGb2xkcyB0byAwIHdoZW4gWlNfT0JKX0NMQVNTX0JJVFMgPT0gMDsgbm8gaWZkZWYgbmVlZGVkIGF0IGNhbGxlcnMuICovXFxuLS1cXG5tbS96c21hbGxvYy5jPTE3NTA9c3RhdGljIGludCBwdXRiYWNrX3pzcGFnZShzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3MsIHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTc1OS1cXG5tbS96c21hbGxvYy5jOjE3NjA6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0xNzYxLS8qXFxuLS1cXG5tbS96c21hbGxvYy5jPTIzOTE9c3RhdGljIGludCBfX2luaXQgenNfaW5pdCh2b2lkKVxcbi0tXFxubW0venNtYWxsb2MuYy0yMzk4LVxcbm1tL3pzbWFsbG9jLmM6MjM5OTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTI0MDAtXFx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXFx1MDAyNnpzbWFsbG9jX21vcHMsIFBHVFlfenNtYWxsb2MpO1xcbi0tXFxubW0venNtYWxsb2MuYz0yNDEwPXN0YXRpYyB2b2lkIF9fZXhpdCB6c19leGl0KHZvaWQpXFxubW0venNtYWxsb2MuYy0yNDExLXtcXG5tbS96c21hbGxvYy5jOjI0MTI6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0yNDEzLVxcdHNldF9tb3ZhYmxlX29wcyhOVUxMLCBQR1RZX3pzbWFsbG9jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6MDkuMDUwNTgyMjA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMzI4NTQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQXNzZXNzaW5nIFBvdGVudGlhbCBTeXN0ZW0gSW1wYWN0cyoqXG5cblJpZ2h0LCBgQ09ORklHX0NPTVBBQ1RJT05gIGlzIGJhc2ljYWxseSBldmVyeXdoZXJlIHRoZXNlIGRheXMsIHNvIHRoYXQncyBhIGdpdmVuLiBOb3csIGxldCdzIHBpdm90IGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgaW50ZXJwbGF5IHdpdGggYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgdGhlc2UgdHdvIGludGVyYWN0IGluIHRoZSBvdmVyYWxsIG1lbW9yeSBtYW5hZ2VtZW50IHNjaGVtZS4gSSdtIHRoaW5raW5nIGFib3V0IHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgZnJhZ21lbnRhdGlvbiBpc3N1ZXMsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIga2VybmVsIHN1YnN5c3RlbXMuIEkgbmVlZCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGdvdGNoYXMgb3Igb3B0aW1pemF0aW9ucyB0aGF0IGltbWVkaWF0ZWx5IGp1bXAgb3V0LiBMZXQncyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgbXkgb3duIHByaW9yIGV4cGVyaWVuY2Ugc3VnZ2VzdHMgYWJvdXQgaG93IHRoZXNlIHR3byB3b3JrIHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzU5NiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAyOjEyLjE3Mzg3MTU3M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQwMjM4MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5MjYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdD0xNDI2PVRoZSBmb2xsb3dpbmcgbmVzdGVkIGtleXMgYXJlIGRlZmluZWQuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3QtMTc0My1cXHRcXHROdW1iZXIgb2YgdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIHdoaWNoIHdlcmUgYWxsb2NhdGVkIHRvIHNhdGlzZnlcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3Q6MTc0NDpcXHRcXHRhIHBhZ2UgZmF1bHQuIFRoaXMgY291bnRlciBpcyBub3QgcHJlc2VudCB3aGVuIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdC0xNzQ1LSAgICAgICAgICAgICAgICBpcyBub3Qgc2V0Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjIucnN0LTE3NDktXFx0XFx0Y29sbGFwc2luZyBhbiBleGlzdGluZyByYW5nZSBvZiBwYWdlcy4gVGhpcyBjb3VudGVyIGlzIG5vdFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdDoxNzUwOlxcdFxcdHByZXNlbnQgd2hlbiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgaXMgbm90IHNldC5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3QtMTc1MS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJzdD0zOTk9QWRkaXRpb25hbGx5LCBLY29uZmlnIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB0byBzZXQgdGhlIGRlZmF1bHQgaHVnZXBhZ2VcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3RyYW5zaHVnZS5yc3Q6NDAwOnBvbGljaWVzIGZvciBzaG1lbSAoYGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV8qYGApIGFuZCB0bXBmc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJzdDo0MDE6KGBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfKmBgKSBhdCBidWlsZCB0aW1lLiBSZWZlciB0byB0aGVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3RyYW5zaHVnZS5yc3QtNDAyLUtjb25maWcgaGVscCBmb3IgbW9yZSBkZXRhaWxzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy90bXBmcy5yc3Q9MTExPXRtcGZzIGFsc28gc3VwcG9ydHMgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyB3aGljaCByZXF1aXJlcyBhIGtlcm5lbFxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdG1wZnMucnN0OjExMjpjb25maWd1cmVkIHdpdGggQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFIGFuZCB3aXRoIGh1Z2Ugc3VwcG9ydGVkIGZvclxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdG1wZnMucnN0LTExMy15b3VyIHN5c3RlbSAoaGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKCksIHdoaWNoIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYykuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0PTE2Mj1zaG1lbSBtb3VudHBvaW50IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgb25lICgnc2htX21udCcpLiBGb3IgYnVpbGRzXFxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdDoxNjM6d2l0aCBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgZW5hYmxlZCwgZnVydGhlciBjYWxscyB0b1xcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QtMTY0LWRybV9nZW1fb2JqZWN0X2luaXQoKSB3aWxsIGxldCBzaG1lbSBhbGxvY2F0ZSBodWdlIHBhZ2VzIHdoZW5cXG4tLVxcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3Q9MzA4PUluIG9yZGVyIHRvIHJlZHVjZSBwYWdlIHRhYmxlIG92ZXJoZWFkLCBpZiB0aGUgaW50ZXJuYWwgc2htZW0gbW91bnRwb2ludFxcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QtMzA5LVxcXCJzaG1fbW50XFxcIiBpcyBjb25maWd1cmVkIHRvIHVzZSB0cmFuc3BhcmVudCBodWdlIHBhZ2VzIChmb3IgYnVpbGRzIHdpdGhcXG5Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0OjMxMDpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgZW5hYmxlZCkgYW5kIGlmIHRoZSBzaG1lbSBiYWNraW5nIHN0b3JlXFxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdC0zMTEtbWFuYWdlZCB0byBhbGxvY2F0ZSBhIGh1Z2UgcGFnZSBmb3IgYSBmYXVsdHkgYWRkcmVzcywgdGhlIGZhdWx0IGhhbmRsZXJcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0yMTA9R2VuZXJhbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI2NS1gYGRlZmVycmVkX3NwbGl0X3F1ZXVlYGBcXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjY2OiAgUGVyLW5vZGUgcXVldWUgb2YgaHVnZSBwYWdlcyB0aGF0IHRoZWlyIHNwbGl0IHdhcyBkZWZlcnJlZC4gRGVmaW5lZCBvbmx5IHdoZW4gYGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgYCBpcyBlbmFibGVkLlxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNjctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIwNT1ub2RlX3pvbmVsaXN0c+W8leeUqOOAglxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTEtYGBkZWZlcnJlZF9zcGxpdF9xdWV1ZWBgXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNTI65q+P5Liq6IqC54K555qE5aSn6aG16Zif5YiX77yM6L+Z5Lqb5aSn6aG155qE5ouG5YiG6KKr5o6o6L+f5LqG44CC5LuF5Zyo5byA5ZCv5LqGIGBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYGBcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI1My3phY3nva7pgInpobnml7blrprkuYnjgIJcXG4tLVxcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3BndGFibGUtYml0cy1hcmN2Mi5oPTEzOT1QVEVfQklUX0ZVTkMoc3dwX2NsZWFyX2V4Y2x1c2l2ZSwgXFx1MDAyNj0gfihfUEFHRV9TV1BfRVhDTFVTSVZFKSk7XFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmgtMTQwLVxcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3BndGFibGUtYml0cy1hcmN2Mi5oOjE0MTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmgtMTQyLSNpbmNsdWRlIFxcdTAwM2Nhc20vaHVnZXBhZ2UuaFxcdTAwM2VcXG4tLVxcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3RsYmZsdXNoLmg9MTU9dm9pZCBsb2NhbF9mbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0xNi1cXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaDoxNzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0xOC12b2lkIGxvY2FsX2ZsdXNoX3BtZF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTI3LSNkZWZpbmUgZmx1c2hfdGxiX21tKG1tKVxcdFxcdGxvY2FsX2ZsdXNoX3RsYl9tbShtbSlcXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oOjI4OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTI5LSNkZWZpbmUgZmx1c2hfcG1kX3RsYl9yYW5nZSh2bWEsIHMsIGUpXFx0bG9jYWxfZmx1c2hfcG1kX3RsYl9yYW5nZSh2bWEsIHMsIGUpXFxuLS1cXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oPTM3PWV4dGVybiB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaDozODojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0zOS1leHRlcm4gdm9pZCBmbHVzaF9wbWRfdGxiX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYz0xMzQ9bm9pbmxpbmUgdm9pZCBsb2NhbF9mbHVzaF90bGJfYWxsKHZvaWQpXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYy0xNTYtXFxuYXJjaC9hcmMvbW0vdGxiLmM6MTU3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpIHtcXG5hcmNoL2FyYy9tbS90bGIuYy0xNTgtXFx0XFx0Y29uc3QgaW50IHN0bGJfaWR4ID0gMHg4MDA7XFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYz0zMTA9c3RhdGljIGlubGluZSB2b2lkIGlwaV9mbHVzaF90bGJfcmFuZ2Uodm9pZCAqYXJnKVxcbi0tXFxuYXJjaC9hcmMvbW0vdGxiLmMtMzE2LVxcbmFyY2gvYXJjL21tL3RsYi5jOjMxNzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcmMvbW0vdGxiLmMtMzE4LXN0YXRpYyBpbmxpbmUgdm9pZCBpcGlfZmx1c2hfcG1kX3RsYl9yYW5nZSh2b2lkICphcmcpXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYz0zNTQ9dm9pZCBmbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYy0zNjUtXFxuYXJjaC9hcmMvbW0vdGxiLmM6MzY2OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FyYy9tbS90bGIuYy0zNjctdm9pZCBmbHVzaF9wbWRfdGxiX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9hcmMvbW0vdGxiLmM9NDcyPXZvaWQgdXBkYXRlX21tdV9jYWNoZV9yYW5nZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYy01MDYtXFxuYXJjaC9hcmMvbW0vdGxiLmM6NTA3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FyYy9tbS90bGIuYy01MDgtXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYz01NjM9aW50IGFyY19tbXVfbXVtYm9qdW1ibyhpbnQgYywgY2hhciAqYnVmLCBpbnQgbGVuKVxcbi0tXFxuYXJjaC9hcmMvbW0vdGxiLmMtNTk3LVxcdFxcdFxcdCAgbW11LVxcdTAwM2VzX3BnX3N6X20sXFxuYXJjaC9hcmMvbW0vdGxiLmM6NTk4OlxcdFxcdFxcdCAgSVNfRU5BQkxFRChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpID8gXFxcIiAoVEhQIGVuYWJsZWQpXFxcIjpcXFwiXFxcIik7XFxuYXJjaC9hcmMvbW0vdGxiLmMtNTk5LVxcbi0tXFxuYXJjaC9hcmMvbW0vdGxiLmM9NjE2PXZvaWQgYXJjX21tdV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYy02NDgtXFxuYXJjaC9hcmMvbW0vdGxiLmM6NjQ5OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL2FyYy9tbS90bGIuYy02NTAtXFx0ICAgIG1tdS1cXHUwMDNlc19wZ19zel9tICE9IFRPX01CKEhQQUdFX1BNRF9TSVpFKSlcXG4tLVxcbmFyY2gvYXJjL21tL3RsYmV4LlM9Nzk9ZXhfc2F2ZWRfcmVnMTpcXG4tLVxcbmFyY2gvYXJjL21tL3RsYmV4LlMtMTkzLVxcbmFyY2gvYXJjL21tL3RsYmV4LlM6MTk0OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FyYy9tbS90bGJleC5TLTE5NS1cXHRhbmQuZlxcdDAsIHIzLCBfUEFHRV9IV19TWlxcdDsgSXMgdGhpcyBIdWdlIFBNRCAodGhwKVxcbi0tXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcGd0YWJsZS0zbGV2ZWwuaD0xODM9c3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtzcGVjaWFsKHB0ZV90IHB0ZSlcXG4tLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3BndGFibGUtM2xldmVsLmgtMTkzLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3BndGFibGUtM2xldmVsLmg6MTk0OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxlLTNsZXZlbC5oLTE5NS0jZGVmaW5lIHBtZF90cmFuc19odWdlKHBtZClcXHQocG1kX3ZhbChwbWQpIFxcdTAwMjZcXHUwMDI2ICFwbWRfdGFibGUocG1kKSlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MTM2PUNPTkZJR19NRU1PUllfRkFJTFVSRT15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzoxMzc6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzOC1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTgyPXN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2xlYXZlX2xhenlfbW11X21vZGUodm9pZClcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTg2LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjg3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC04OC0jZGVmaW5lIF9fSEFWRV9BUkNIX0ZMVVNIX1BNRF9UTEJfUkFOR0VcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTk0LVxcdF9fZmx1c2hfdGxiX3JhbmdlKHZtYSwgYWRkciwgZW5kLCBQVURfU0laRSwgMSwgVExCRl9OT05FKVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjk1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC05Ni1cXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTc4Mz1zdGF0aWMgaW5saW5lIGJvb2wgcG1kX2xlYWYocG1kX3QgcG1kKVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzkyLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjc5MzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzk0LXN0YXRpYyBpbmxpbmUgaW50IHBtZF90cmFuc19odWdlKHBtZF90IHBtZClcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTgwMS19XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6ODAyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC04MDMtXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMjU5PXN0YXRpYyBpbmxpbmUgaW50IF9fcHRlcF9zZXRfYWNjZXNzX2ZsYWdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTI2Ni1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMjY3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMjY4LSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9TRVRfQUNDRVNTX0ZMQUdTXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMzIxPXN0YXRpYyBpbmxpbmUgYm9vbCBfX3B0ZXBfY2xlYXJfZmx1c2hfeW91bmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzQwLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjEzNDE6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSB8fCBkZWZpbmVkKENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORylcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzQyLSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9URVNUX0FORF9DTEVBUl9ZT1VOR1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTEzNDM9c3RhdGljIGlubGluZSBib29sIHBtZHBfdGVzdF9hbmRfY2xlYXJfeW91bmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzQ5LX1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMzUwOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgfHwgQ09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5HICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTM1MS1cXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTEzOTY9c3RhdGljIGlubGluZSBwdGVfdCBfX2dldF9hbmRfY2xlYXJfZnVsbF9wdGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQxNC1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNDE1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDE2LSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9IVUdFX0dFVF9BTkRfQ0xFQVJcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xNDE3PXN0YXRpYyBpbmxpbmUgcG1kX3QgcG1kcF9odWdlX2dldF9hbmRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDIxLX1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNDIyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDIzLVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTQ3Nj1zdGF0aWMgaW5saW5lIHZvaWQgX19jbGVhcl95b3VuZ19kaXJ0eV9wdGVzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQ5Ni1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNDk3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDk4LSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9TRVRfV1JQUk9URUNUXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEyMD1DT05GSUdfS1NNPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjEyMTpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTIyLUNPTkZJR19DTUE9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTI2ND1zdGF0aWMgaW5saW5lIHZvaWQgcG1kX2NsZWFyKHBtZF90ICpwbWRwKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3MC1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MjcxOiNpZm5kZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3Mi0jZGVmaW5lIHBtZF9wYWdlKHBtZClcXHRcXHQocGZuX3RvX3BhZ2UocG1kX3BoeXMocG1kKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSlcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MjczOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgICovXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3BndGFibGUuaD01MDA9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHBtZF9wZm4ocG1kX3QgcG1kKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTUwNC1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6NTA1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTA2LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTYxND1zdGF0aWMgaW5saW5lIHBtZF90IHBtZHBfaHVnZV9nZXRfYW5kX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTYyMy1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6NjI0OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNjI1LVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc9MjQ9Q09ORklHX01PRFVMRV9VTkxPQUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnLTI1LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZzoyNjpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnLTI3LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc9MjM9Q09ORklHX09TRl9QQVJUSVRJT049eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTI0LSMgQ09ORklHX0VGSV9QQVJUSVRJT04gaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnOjI1OkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWctMjYtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTYwNz11bnNpZ25lZCBsb25nIGlvX3JlbWFwX3Bmbl9yYW5nZV9wZm4odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgc2l6ZSk7XFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTYxMi1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjYxMzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaC02MTQtXFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTczND1zdGF0aWMgaW5saW5lIHBtZF90IHBtZHBfaHVnZV9nZXRfYW5kX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaC03NDMtXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaDo3NDQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzQ1LVxcbi0tXFxuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYz0xNj12b2lkIHBnZF9pbml0KHZvaWQgKmFkZHIpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jLTMyLVxcbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTMyLmM6MzM6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKVxcbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTMyLmMtMzQtdm9pZCBzZXRfcG1kX2F0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jLTM4LX1cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jOjM5OiNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgKi9cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jLTQwLVxcbi0tXFxuYXJjaC9taXBzL21tL3BndGFibGUtNjQuYz03MD12b2lkIHB1ZF9pbml0KHZvaWQgKmFkZHIpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS02NC5jLTkxLVxcbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTY0LmM6OTI6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTY0LmMtOTMtdm9pZCBzZXRfcG1kX2F0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jPTM5MT12b2lkIGFkZF93aXJlZF9lbnRyeSh1bnNpZ25lZCBsb25nIGVudHJ5bG8wLCB1bnNpZ25lZCBsb25nIGVudHJ5bG8xLFxcbi0tXFxuYXJjaC9taXBzL21tL3RsYi1yNGsuYy00MzQtXFxuYXJjaC9taXBzL21tL3RsYi1yNGsuYzo0MzU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvbWlwcy9tbS90bGItcjRrLmMtNDM2LVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYi1yNGsuYz00NTM9RVhQT1JUX1NZTUJPTChoYXNfdHJhbnNwYXJlbnRfaHVnZXBhZ2UpO1xcbmFyY2gvbWlwcy9tbS90bGItcjRrLmMtNDU0LVxcbmFyY2gvbWlwcy9tbS90bGItcjRrLmM6NDU1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgICovXFxuYXJjaC9taXBzL21tL3RsYi1yNGsuYy00NTYtXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz02Mj1DT05GSUdfSFdQT0lTT05fSU5KRUNUPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo2MzpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTY0LUNPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz05MD1DT05GSUdfS1NNPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6OTE6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTItQ09ORklHX01FTV9TT0ZUX0RJUlRZPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC00ay5oPTExMj1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRlX3NldF9oaWR4KHB0ZV90ICpwdGVwLCByZWFsX3B0ZV90IHJwdGUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNGsuaC0xMTktXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTRrLmg6MTIwOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNGsuaC0xMjEtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtNzQtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjc1OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC03Ni0jZGVmaW5lIEhfUE1EX0ZSQUdfU0laRV9TSElGVCAgKEhfUE1EX0lOREVYX1NJWkUgKyAzICsgMSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaD0xNzU9c3RhdGljIGlubGluZSBpbnQgaGFzaF9fcmVtYXBfNGtfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg2LSNkZWZpbmUgSF9QVEVfVEFCTEVfU0laRVxcdFBURV9GUkFHX1NJWkVcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg6MTg3OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZCAoQ09ORklHX0hVR0VUTEJfUEFHRSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg4LSNkZWZpbmUgSF9QTURfVEFCTEVfU0laRVxcdCgoc2l6ZW9mKHBtZF90KSBcXHUwMDNjXFx1MDAzYyBQTURfSU5ERVhfU0laRSkgKyBcXFxcXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjAwLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoyMDE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC0yMDItc3RhdGljIGlubGluZSBjaGFyICpnZXRfaHB0ZV9zbG90X2FycmF5KHBtZF90ICpwbWRwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oPTIzOD1zdGF0aWMgaW5saW5lIHZvaWQgbWFya19ocHRlX3Nsb3RfdmFsaWQodW5zaWduZWQgY2hhciAqaHB0ZV9zbG90X2FycmF5LFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTI1MS0gKiBwbWRfdHJhbnNfaHVnZSgpIGlzIGRlZmluZWQgYXMgZmFsc2UgYXQgYnVpbGQgdGltZSBpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoyNTI6ICogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPW4gdG8gb3B0aW1pemUgYXdheSBjb2RlIGJsb2NrcyBhdCBidWlsZFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC0yNTMtICogdGltZSBpbiBzdWNoIGNhc2UuXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg9MjgxPWV4dGVybiBpbnQgaGFzaF9faGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKHZvaWQpO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoyODI6I2VuZGlmIC8qICBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjgzLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmg9MjY0PXN0YXRpYyBpbmxpbmUgdm9pZCBoYXNoX19zZXRfcHRlX2F0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC0yNzMtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmg6Mjc0OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC0yNzUtZXh0ZXJuIHZvaWQgaHB0ZV9kb19odWdlcGFnZV9mbHVzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmg9Mjc4PXN0YXRpYyBpbmxpbmUgdm9pZCBocHRlX2RvX2h1Z2VwYWdlX2ZsdXNoKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmgtMjgzLX1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaDoyODQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTI4NS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaD00NzQ9aW50IF9faGFzaF9wYWdlX2h1Z2UodW5zaWduZWQgbG9uZyBlYSwgdW5zaWduZWQgbG9uZyBhY2Nlc3MsIHVuc2lnbmVkIGxvbmcgdnNpZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaC00NzYtXFx0XFx0ICAgICBpbnQgc3NpemUsIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50IG1tdV9wc2l6ZSk7XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oOjQ3NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oLTQ3OC1leHRlcm4gaW50IF9faGFzaF9wYWdlX3RocCh1bnNpZ25lZCBsb25nIGVhLCB1bnNpZ25lZCBsb25nIGFjY2VzcyxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oPTEwOTk9c3RhdGljIGlubGluZSBib29sIHBtZF91c2VyX2FjY2Vzc2libGVfcGFnZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLCBwbWRfdCBwbWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMTAzLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oOjExMDQ6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oLTExMDUtZXh0ZXJuIHBtZF90IHBmbl9wbWQodW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaD0xNDM1PXN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX25lZWRzX3BndGFibGVfZGVwb3NpdCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmgtMTQ0MS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaDoxNDQyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xNDQzLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oPTI1OD1zdGF0aWMgaW5saW5lIGludCByYWRpeF9fcDRkX2JhZChwNGRfdCBwNGQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMjYyLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaDoyNjM6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0yNjQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaD0xMD1zdGF0aWMgaW5saW5lIHB0ZV90ICpmaW5kX2xpbnV4X3B0ZShwZ2RfdCAqcGdkaXIsIHVuc2lnbmVkIGxvbmcgZWEsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0xOC0jaWYgZGVmaW5lZChDT05GSUdfREVCVUdfVk0pIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtd2Fsay5oOjE5OlxcdCEoZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSB8fCBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS13YWxrLmgtMjAtXFx0LypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19QUENfNjRLX1BBR0VTKVxcdCs9IGhhc2hfNjRrLm9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSArPSBoYXNoX2h1Z2VwYWdlLm9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGUtMTEtb2JqLSQoQ09ORklHX1BQQ19TVUJQQUdFX1BST1QpXFx0Kz0gc3VicGFnZV9wcm90Lm9cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX25hdGl2ZS5jPTU1MT1zdGF0aWMgdm9pZCBuYXRpdmVfaHB0ZV9pbnZhbGlkYXRlKHVuc2lnbmVkIGxvbmcgc2xvdCwgdW5zaWduZWQgbG9uZyB2cG4sXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9uYXRpdmUuYy01ODktXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfbmF0aXZlLmM6NTkwOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9uYXRpdmUuYy01OTEtc3RhdGljIHZvaWQgbmF0aXZlX2h1Z2VwYWdlX2ludmFsaWRhdGUodW5zaWduZWQgbG9uZyB2c2lkLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jPTE0OD1pbnQgaGFzaF9fbWFwX2tlcm5lbF9wYWdlKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgcGEsIHBncHJvdF90IHByb3QpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMTg4LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYzoxODk6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xOTAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM9NDIzPUVYUE9SVF9TWU1CT0xfR1BMKGhhc2hfX2hhc190cmFuc3BhcmVudF9odWdlcGFnZSk7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTQyNC1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6NDI1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtNDI2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0yMTk4PXZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGxvbmcgdnBuLCByZWFsX3B0ZV90IHB0ZSwgaW50IHBzaXplLCBpbnQgc3NpemUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTIyMTgtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoyMjE5OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTIyMjAtdm9pZCBmbHVzaF9oYXNoX2h1Z2VwYWdlKHVuc2lnbmVkIGxvbmcgdnNpZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0yMjc0LX1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjIyNzU6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMjI3Ni1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9NDg9ZWFybHlfcGFyYW0oXFxcImtmZW5jZS5zYW1wbGVfaW50ZXJ2YWxcXFwiLCBwYXJzZV9rZmVuY2VfZWFybHlfaW5pdCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTUwLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6NTE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtNTItLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9MjY0PXB1ZF90IHB1ZF9tb2RpZnkocHVkX3QgcHVkLCBwZ3Byb3RfdCBuZXdwcm90KVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0yNzEtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6MjcyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTI3My1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9NTMyPXZvaWQgcHRlcF9tb2RpZnlfcHJvdF9jb21taXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtNTQwLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6NTQxOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTU0Mi0vKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz0xNDE1PXZvaWQgX19yZWYgcmFkaXhfX3ZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQyMi1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjE0MjM6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQyNC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9MTUzNj1wdWRfdCByYWRpeF9fcHVkcF9odWdlX2dldF9hbmRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE1NDYtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzoxNTQ3OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE1NDgtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9MTAxMj1zdGF0aWMgaW5saW5lIHZvaWQgX19yYWRpeF9fZmx1c2hfdGxiX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEwNTAtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEwNTE6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSlcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTA1Mi1cXHRcXHRcXHRwZ19zaXplcyB8PSBwc2l6ZV90b19ycHRpX3Bnc2l6ZShNTVVfUEFHRV8yTSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTA3Ni1cXHRcXHRoZW5kID0gZW5kIFxcdTAwMjYgUE1EX01BU0s7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEwNzc6XFx0XFx0aGZsdXNoID0gSVNfRU5BQkxFRChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpIFxcdTAwMjZcXHUwMDI2IGhzdGFydCBcXHUwMDNjIGhlbmQ7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEwNzgtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9MTMwMz12b2lkIHJhZGl4X19mbHVzaF90bGJfcHdjX3JhbmdlX3BzaXplKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEzMDgtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEzMDk6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMzEwLXZvaWQgcmFkaXhfX2ZsdXNoX3RsYl9jb2xsYXBzZWRfcG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTM1My19XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEzNTQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMzU1LVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3N1YnBhZ2VfcHJvdC5jPTkwPXN0YXRpYyB2b2lkIHN1YnBhZ2VfcHJvdF9jbGVhcih1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3N1YnBhZ2VfcHJvdC5jLTEzNi1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc3VicGFnZV9wcm90LmM6MTM3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc3VicGFnZV9wcm90LmMtMTM4LXN0YXRpYyBpbnQgc3VicGFnZV93YWxrX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvdHJhY2UuYy00LSAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC90cmFjZS5jOjU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC90cmFjZS5jLTYtI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy90aHAuaFxcdTAwM2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYz0xMTc9dm9pZCBwdGVfZnJhZ21lbnRfZnJlZSh1bnNpZ25lZCBsb25nICp0YWJsZSwgaW50IGtlcm5lbClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYy0xMzItXFxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jOjEzMzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jLTEzNC12b2lkIHB0ZV9mcmVlX2RlZmVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ3RhYmxlX3QgcGd0YWJsZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYy0xNDEtfVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYzoxNDI6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2xwYXIuYz0xMDg5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGNhbGxfYmxvY2tfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaWR4LCB1bnNpZ25lZCBsb25nICpwYXJhbSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9scGFyLmMtMTE0MC1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvbHBhci5jOjExNDE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9scGFyLmMtMTE0Mi0vKlxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0Lmg9Mzk5PXA0ZF90ICpwNGRfb2Zmc2V0KHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0LmgtNDAwLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS02NC5oOjQwMTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0LmgtNDAyLXN0YXRpYyBpbmxpbmUgcHRlX3QgcG1kX3B0ZShwbWRfdCBwbWQpO1xcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MjA0PWV4dGVybiBwZ2RfdCBlYXJseV9wZ19kaXJbXTtcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0yMDUtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MjA2OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0yMDctc3RhdGljIGlubGluZSBpbnQgcG1kX3ByZXNlbnQocG1kX3QgcG1kKVxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9OTkyPXN0YXRpYyBpbmxpbmUgYm9vbCBwdWRfdXNlcl9hY2Nlc3NpYmxlX3BhZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwgcHVkX3QgcHVkKVxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtOTk3LVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjk5ODojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtOTk5LXN0YXRpYyBpbmxpbmUgaW50IHBtZF90cmFuc19odWdlKHBtZF90IHBtZClcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTExNTg9c3RhdGljIGlubGluZSBwdWRfdCBwdWRfbW9kaWZ5KHB1ZF90IHB1ZCwgcGdwcm90X3QgbmV3cHJvdClcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExNjItXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTE2MzojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTE2NC1cXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGxiZmx1c2guaD01ND12b2lkIGxvY2FsX2ZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGxiZmx1c2guaDo1NTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTU2LSNkZWZpbmUgX19IQVZFX0FSQ0hfRkxVU0hfUE1EX1RMQl9SQU5HRVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wZ3RhYmxlLmM9MTI1PWludCBwbWRfZnJlZV9wdGVfcGFnZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xMzYtI2VuZGlmIC8qIENPTkZJR19IQVZFX0FSQ0hfSFVHRV9WTUFQICovXFxuYXJjaC9yaXNjdi9tbS9wZ3RhYmxlLmM6MTM3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xMzgtcG1kX3QgcG1kcF9jb2xsYXBzZV9mbHVzaChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jPTE1Nz1wdWRfdCBwdWRwX2ludmFsaWRhdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jLTE2NS19XFxuYXJjaC9yaXNjdi9tbS9wZ3RhYmxlLmM6MTY2OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xNjctXFxuLS1cXG5hcmNoL3Jpc2N2L21tL3RsYmZsdXNoLmM9MjAzPXZvaWQgZmx1c2hfdGxiX2tlcm5lbF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vdGxiZmx1c2guYy0yMDgtXFxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jOjIwOTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jLTIxMC12b2lkIGZsdXNoX3BtZF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTA4PUNPTkZJR19QRVJTSVNURU5UX0hVR0VfWkVST19GT0xJTz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwOTpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMTAtQ09ORklHX0NNQV9ERUJVR0ZTPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMDE9Q09ORklHX1BFUlNJU1RFTlRfSFVHRV9aRVJPX0ZPTElPPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTAyOkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEwMy1DT05GSUdfQ01BX1NZU0ZTPXlcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTU2MD1zdGF0aWMgaW5saW5lIHB1ZF90IHB1ZF9ta2RpcnR5KHB1ZF90IHB1ZClcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTU2Ny1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE1Njg6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSB8fCBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0UpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNTY5LXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYXNzYWdlX3BncHJvdF9wbWQocGdwcm90X3QgcGdwcm90KVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xNjE4PXN0YXRpYyBpbmxpbmUgcG1kX3QgbWtfcG1kX3BoeXModW5zaWduZWQgbG9uZyBwaHlzcGFnZSwgcGdwcm90X3QgcGdwcm90KVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjIyLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTYyMzojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFIHx8IENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2MjQtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE2OTM9cHVkX3QgcHVkcF94Y2hnX2RpcmVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIHB1ZF90ICosIHB1ZF90KTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2OTQtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNjk1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2OTYtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE4MzA9c3RhdGljIGlubGluZSBpbnQgaGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE4MzMtfVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTgzNDojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xODM1LVxcbi0tXFxuYXJjaC9zMzkwL21tL3BnYWxsb2MuYz0xMzk9dm9pZCBwYWdlX3RhYmxlX2ZyZWUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgKnRhYmxlKVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAyOjE3LjgxNDExNzA2MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNzQyNzYwOTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBSZWNlbnQgQ2hhbmdlcyBSZWxhdGVkIHRvIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyB3aWRlbHkgZGVwbG95ZWQsIG1lYW5pbmcgYW55IGlzc3VlcyBhcm91bmQgaXQgbmVlZCB0byBiZSBhZGRyZXNzZWQgbWV0aWN1bG91c2x5LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIHJlY2VudCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBgbW0vcGFnZV9hbGxvYy5jYCwgYG1tL2ludGVybmFsLmhgLCBgbW0vaHVnZV9tZW1vcnkuY2AsIGBtbS9jb21wYWN0aW9uLmNgLCBhbmQgYG1tL3BlcmNwdS1rbS5jYC4gVGhlIHBhdHRlcm4gaGVyZSBzdWdnZXN0cyBhIHNpZ25pZmljYW50IGNvbmNlcm4gYXJvdW5kIHRoZSBgcGFnZS1cdTAwM2Vwcml2YXRlYCBmaWVsZCBhbmQgaXRzIHByb3BlciBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IG9uIHRhaWwgcGFnZXMgb2YgY29tcG91bmQgcGFnZXMuXG5cbkxvb2tpbmcgYXQgYG1tL3BhZ2VfYWxsb2MuY2AsIHRoZSBjaGFuZ2VzIGluIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgYXJlIG5vdGljZWFibGUuIFRoZSBjb2RlIG5vdyBpdGVyYXRlcyB0aHJvdWdoIHRhaWwgcGFnZXMsIHdoaWNoIGlzIGV4cGVjdGVkLiBDcml0aWNhbGx5LCB3ZSBzZWUgYWRkaXRpb25hbCBjaGVja3MgYW5kIGNsZWFyZXIgY2xlYXJpbmcgb2YgdGhlIGBQQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVBgIGZsYWcgYW5kIGFuIGFkZGVkIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgcHJpdmF0ZSBmaWVsZCBvbiB0YWlsIHBhZ2VzIGlzIGNsZWFyZWQuIFRoZXJlJ3MgYWxzbyBhIGBWTV9XQVJOX09OX09OQ0VgIG5vdyBpZiBgdGFpbC1cdTAwM2Vwcml2YXRlYCBpcyB1bmV4cGVjdGVkbHkgbm9uLXplcm8uIFRoaXMgc3Ryb25nbHkgaW1wbGllcyB0aGF0IHRoZXJlIHdlcmUgc2NlbmFyaW9zIHdoZXJlIHRhaWwgcGFnZXMgd2VyZW4ndCBoYXZpbmcgdGhlaXIgcHJpdmF0ZSBpbmZvcm1hdGlvbiBwcm9wZXJseSBjbGVhcmVkIGR1cmluZyB0aGUgZnJlZSBwcm9jZXNzLCBsZWFkaW5nIHRvIHBvdGVudGlhbCBjb3JydXB0aW9uIG9yIGluY29ycmVjdCBzdGF0ZS5cblxuSW4gYG1tL2ludGVybmFsLmhgLCBgcHJlcF9jb21wb3VuZF90YWlsYCBub3cgaGFzIGEgYFZNX1dBUk5fT05fT05DRWAgaWYgYHRhaWwtXHUwMDNlcHJpdmF0ZWAgaXMgc2V0LCBjb25maXJtaW5nIHRoZSBhYm92ZSwgd2hlcmUgdGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHRoZSBwcml2YXRlIGZpZWxkIG9uIHRhaWwgcGFnZXMuXG5cblRoZW4sIHRoZSBhZGRpdGlvbnMgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgIGFyZSBhbHNvIGludGVyZXN0aW5nLiBUaGUgY29kZSB0aGF0J3MgcmVzcG9uc2libGUgZm9yIHNwbGl0dGluZyBodWdlIHBhZ2VzLCBub3cgY29udGFpbnMgYSBgVk1fV0FSTl9PTl9PTkNFX1BBR0VgIGNoZWNrIHRvIGVuc3VyZSB0aGUgYHByaXZhdGVgIGZpZWxkIGlzbid0IHNldCBvbiB0aGUgbmV3bHkgY3JlYXRlZCB0YWlsIGZvbGlvLCBiZWZvcmUgdGhlIGFzc2lnbm1lbnQgdG8gYHN3YXAudmFsYC4gVGhpcyBzaG93cyB0aGF0IHRoZSBvcmlnaW5hbCBwcm9ibGVtIHdhcyBldmVuIHdvcnNlLCBhZmZlY3RpbmcgaG93IGBzd2FwLnZhbGAgaXMgc2V0LCBhcyB0aGUgY29kZSB1c2VzIGBzd2FwLnZhbGAgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uIGFzIGBwcml2YXRlYC4gQWdhaW4sIHRoaXMgcmVpbmZvcmNlcyB0aGF0IHRoZSBgcGFnZS1cdTAwM2Vwcml2YXRlYCBmaWVsZCBpcyBhIGNyaXRpY2FsIHBvaW50IG9mIGNvbmNlcm4gaW4gdGhlIGhhbmRsaW5nIG9mIGNvbXBvdW5kIHBhZ2VzIGFuZCBlc3BlY2lhbGx5IGh1Z2VwYWdlcy5cblxuVGhlIGBtbS9jb21wYWN0aW9uLmNgIGNoYW5nZXMgc3VnZ2VzdCBhIHJlbGF0ZWQgcHJvYmxlbSB3aXRoIHBhZ2UgaXNvbGF0aW9uIGR1cmluZyBjb21wYWN0aW9uLiBUaGUgcmVtb3ZhbCBvZiBgc2V0X3BhZ2VfcHJpdmF0ZWAgaW4gdmFyaW91cyBsb2NhdGlvbnMgd2l0aGluIGBfX2lzb2xhdGVfZnJlZV9wYWdlYCBpbXBsaWVzIHRoYXQgd2Ugd2VyZSBwb3RlbnRpYWxseSBpbmNvcnJlY3RseSB1c2luZyBgcGFnZS1cdTAwM2Vwcml2YXRlYCBmb3IgY29tcGFjdGlvbi1yZWxhdGVkIG1ldGFkYXRhLCBvciB0aGF0IHRoaXMgd2FzIGNhdXNpbmcgaXNzdWVzLiBBbHNvLCB3aXRoaW4gdGhpcyBmaWxlIHRoZXJlJ3MgY29kZSB0aGF0IGZyZWVzIGEgcGFnZSBpbiBgZnJlZXBhZ2VgLCB3aGljaCBwcmV2aW91c2x5IHVzZWQgYHNldF9wYWdlX3ByaXZhdGVgLlxuXG5GaW5hbGx5LCB0aGUgYG1tL3BlcmNwdS1rbS5jYCBjaGFuZ2VzIGFyZSBjcnVjaWFsLiBIZXJlLCBiZWZvcmUgZnJlZWluZyBwYWdlcyBhbGxvY2F0ZWQgZm9yIHBlci1DUFUga21lbSBjYWNoZXMsIHRoZSBjb2RlIGV4cGxpY2l0bHkgaXRlcmF0ZXMgdGhyb3VnaCBlYWNoIHBhZ2UsIGNsZWFyaW5nIHBlci1DUFUgY2h1bmsgaW5mb3JtYXRpb24uIFRoaXMgaW5jbHVkZXMgY2FsbGluZyBgcGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlcyArIGksIE5VTEwpYC4gVGhlIGNvbW1lbnQgaGlnaGxpZ2h0cyB0aGF0IHRoZSBzeXN0ZW0gKmNsZWFycyBjaHVuayBpbmZvKiAqZnJvbSBlYWNoIHBhZ2UqIGJlZm9yZSB0aGUgcGFnZXMgYXJlIGZyZWVkLiBUaGlzIGNsZWFycyB0aGUgbWV0YWRhdGEgZnJvbSB0aGUgcGFnZXMgYmVmb3JlIGJlaW5nIGRlYWxsb2NhdGVkLCBiZWNhdXNlIGBwY3B1X3NldF9wYWdlX2NodW5rYCBsaWtlbHkgdXRpbGl6ZXMsIGF0IHNvbWUgcG9pbnQsIHRoZSBgcGFnZS1cdTAwM2VpbmRleGAgZmllbGQuIFRoaXMgaGludHMgdGhhdCBgcGFnZS1cdTAwM2VpbmRleGAgY2FuIGJlIHVzZWQgdG8gc2V0IGNodW5rIGluZm9ybWF0aW9uLCBhbmQgdGhhdCB0aGlzIGluZm9ybWF0aW9uIG11c3QgYmUgcmVtb3ZlZC5cblxuSW4gc2hvcnQsIHRoaXMgZW50aXJlIHNldCBvZiBjaGFuZ2VzIGlzIGRlZGljYXRlZCB0byBjbGVhbmluZyB1cCBhbmQgZW5zdXJpbmcgdGhlIGBwYWdlLVx1MDAzZXByaXZhdGVgIGZpZWxkLCBhbmQgcmVsYXRlZCBtZW1vcnkgbG9jYXRpb25zLCBhcmUgcHJvcGVybHkgbWFuYWdlZCwgZXNwZWNpYWxseSBvbiB0YWlsIHBhZ2VzLCBkdXJpbmcgcGFnZSBmcmVlaW5nLCBpc29sYXRpb24sIGFuZCBodWdlIHBhZ2Ugb3BlcmF0aW9ucy4gVGhlIGtleSBwcm9ibGVtIGhlcmUgc2VlbXMgdG8gaGF2ZSBiZWVuIHRoYXQgYHBhZ2UtXHUwMDNlcHJpdmF0ZWAgd2FzIG5vdCBiZWluZyBjbGVhcmVkIGNvbnNpc3RlbnRseSwgd2hpY2ggd2FzIGxlYWRpbmcgdG8gcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGluY29ycmVjdCBzdGF0ZSBhZnRlciBmcmVlIGFuZC9vciByZWFsbG9jYXRpb24uIFRoZSBgbW0vcGVyY3B1LWttLmNgIGNoYW5nZXMgZnVydGhlciBoaWdobGlnaHQgaG93IHRoZXNlIGlzc3VlcyBpbXBhY3RlZCBvdGhlciBhcmVhcy4gVGhpcyBpcyBhIHRhcmdldGVkIHBhdGNoc2V0IHRoYXQgYWRkcmVzc2VzIHRoZSByb290IGNhdXNlIG9mIGFuIGlzc3VlIHdoZXJlIHByaXZhdGUgbWV0YWRhdGEgaXNuJ3QgcHJvcGVybHkgY2xlYXJlZCwgYW5kIGFkZGluZyBjaGVja3MgdG8gZW5zdXJlIHRoZSBtZXRhZGF0YSBpc24ndCBzZXQgd2hlbiBpdCBzaG91bGRuJ3QgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjYyLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMjozMC41NTY4ODQyMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MzkyODM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3B1X3NldF9wYWdlX2NodW5rXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BlcmNwdS1rbS5jPTUzPXN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdV9jcmVhdGVfY2h1bmsoZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0vcGVyY3B1LWttLmMtNzEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3BhZ2VzOyBpKyspXFxubW0vcGVyY3B1LWttLmM6NzI6XFx0XFx0cGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlcyArIGksIGNodW5rKTtcXG5tbS9wZXJjcHUta20uYy03My1cXG4tLVxcbm1tL3BlcmNwdS1rbS5jPTg3PXN0YXRpYyB2b2lkIHBjcHVfZGVzdHJveV9jaHVuayhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmspXFxuLS1cXG5tbS9wZXJjcHUta20uYy0xMDItXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3BhZ2VzOyBpKyspXFxubW0vcGVyY3B1LWttLmM6MTAzOlxcdFxcdFxcdHBjcHVfc2V0X3BhZ2VfY2h1bmsocGFnZXMgKyBpLCBOVUxMKTtcXG5tbS9wZXJjcHUta20uYy0xMDQtXFx0XFx0X19mcmVlX3BhZ2VzKGNodW5rLVxcdTAwM2VkYXRhLCBvcmRlcl9iYXNlXzIobnJfcGFnZXMpKTtcXG4tLVxcbm1tL3BlcmNwdS12bS5jPTIzND1zdGF0aWMgaW50IHBjcHVfbWFwX3BhZ2VzKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaywgc3RydWN0IHBhZ2UgKipwYWdlcyxcXG4tLVxcbm1tL3BlcmNwdS12bS5jLTI0Ny1cXHRcXHRmb3IgKGkgPSBwYWdlX3N0YXJ0OyBpIFxcdTAwM2MgcGFnZV9lbmQ7IGkrKylcXG5tbS9wZXJjcHUtdm0uYzoyNDg6XFx0XFx0XFx0cGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlc1twY3B1X3BhZ2VfaWR4KGNwdSwgaSldLFxcbm1tL3BlcmNwdS12bS5jLTI0OS1cXHRcXHRcXHRcXHRcXHQgICAgY2h1bmspO1xcbi0tXFxubW0vcGVyY3B1LmM9MjQyPXN0YXRpYyBpbnQgcGNwdV9jaHVua19zbG90KGNvbnN0IHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcXG4tLVxcbm1tL3BlcmNwdS5jLTI1My0vKiBzZXQgdGhlIHBvaW50ZXIgdG8gYSBjaHVuayBpbiBhIHBhZ2Ugc3RydWN0ICovXFxubW0vcGVyY3B1LmM6MjU0OnN0YXRpYyB2b2lkIHBjcHVfc2V0X3BhZ2VfY2h1bmsoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1KVxcbm1tL3BlcmNwdS5jLTI1NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAyOjM1Ljg1MDgxOTgyNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTUyNjU5ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBwY3B1X3NldF9wYWdlX2NodW5rYCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgcGNwdV9zZXRfcGFnZV9jaHVua2AuIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGludG8gYG1tL3BlcmNwdS5jYCB0byBzZWUgaG93IGl0J3MgaW1wbGVtZW50ZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gY29udHJpYnV0ZXMgdG8gcGVyLUNQVSBtZW1vcnkgbWFuYWdlbWVudC4gSSBzdXNwZWN0IGl0J3MgcmVzcG9uc2libGUgZm9yIG1hcHBpbmcgb3IgaW5pdGlhbGl6aW5nIGEgY2h1bmsgb2YgbWVtb3J5IHRoYXQgd2lsbCBiZSB1c2VkIGZvciBwZXItQ1BVIHZhcmlhYmxlcyBvciBkYXRhIHN0cnVjdHVyZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgcGVyLUNQVSBtZW1vcnkgYWxsb2NhdGlvbiBzY2hlbWUuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHBlci1DUFUgYWxsb2NhdG9yIGl0c2VsZi4gRG9lcyBpdCB1c2UgdGhlIGV4aXN0aW5nIHBhZ2UgYWxsb2NhdG9yLCBvciBkb2VzIGl0IGhhdmUgc29tZSBzcGVjaWFsaXplZCBhbGxvY2F0aW9uIHN0cmF0ZWd5PyBBbHNvLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9uIE5VTUEgc3lzdGVtcyBhbmQgbWVtb3J5IGFmZmluaXR5PyBJcyBhbnkgcGFnZS1jb2xvcmluZyBiZWluZyBkb25lIGhlcmU/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDg5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6NDAuNDAzNDgyNjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ3MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL3BlcmNwdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1MzpcXHQvKiBzZXQgdGhlIHBvaW50ZXIgdG8gYSBjaHVuayBpbiBhIHBhZ2Ugc3RydWN0ICovXFxuIDI1NDpcXHRzdGF0aWMgdm9pZCBwY3B1X3NldF9wYWdlX2NodW5rKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdSlcXG4gMjU1OlxcdHtcXG4gMjU2OlxcdFxcdHBhZ2UtXFx1MDAzZXByaXZhdGUgPSAodW5zaWduZWQgbG9uZylwY3B1O1xcbiAyNTc6XFx0fVxcbiAyNTg6XFx0XFxuIDI1OTpcXHQvKiBvYnRhaW4gcG9pbnRlciB0byBhIGNodW5rIGZyb20gYSBwYWdlIHN0cnVjdCAqL1xcbiAyNjA6XFx0c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2dldF9wYWdlX2NodW5rKHN0cnVjdCBwYWdlICpwYWdlKVxcbiAyNjE6XFx0e1xcbiAyNjI6XFx0XFx0cmV0dXJuIChzdHJ1Y3QgcGNwdV9jaHVuayAqKXBhZ2UtXFx1MDAzZXByaXZhdGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAyOjQwLjQwMzgzMzAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTM0NDg4NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQZXItQ1BVIEtNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBgcGNwdV9zZXRfcGFnZV9jaHVua2AgaXMgc2V0dGluZyBgcGFnZS1cdTAwM2Vwcml2YXRlYC4gVGhlIGZpeCBpbiBgbW0vcGVyY3B1LWttLmNgIGlzIHNwZWNpZmljYWxseSBhYm91dCBjbGVhcmluZyB0aGF0IGBwYWdlLVx1MDAzZXByaXZhdGVgIGZpZWxkIGJlZm9yZSB0aGUgcGFnZXMgYXJlIGZyZWVkLiBJdCBsb29rcyBsaWtlIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgaGFzIGJlZW4gdXBkYXRlZCB0byBjaGVjayBpZiBgdGFpbF9wYWdlLVx1MDAzZXByaXZhdGVgIGlzIG5vbi16ZXJvLCBhbmQgaXTigJlzIG5vdyB0aHJvd2luZyBhbiBlcnJvciBpZiBpdCBpcy4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBzb3VuZHMgbGlrZSBhIGxlZ2l0aW1hdGUgYnVnIGZpeCB3aXRoIGFkZGVkIGNoZWNrcywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgdG8gc2VlLlxuXG5JJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhlIGtleSBzeW1ib2xzIGludm9sdmVkIGhlcmUg4oCTIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYF9fZnJlZV9wYWdlc19wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AsIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAg4oCTIHRob3NlIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZXhhY3QgbWVjaGFuaWNzIG9mIHRoZSBjaGFuZ2UuXG5cbkZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBJIHNlZSBgQ09NUEFDVElPTmAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGFuZCBgTkVFRF9QRVJfQ1BVX0tNYCBtZW50aW9uZWQuIEhhbmcgb24sIGlzbid0IGBORUVEX1BFUl9DUFVfS01gIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQ/IEl0J3Mgbm90IHNvbWV0aGluZyB0aGUgdXNlciB1c3VhbGx5IGVuYWJsZXMgZGlyZWN0bHkuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzIGFueSB3YXkgdG8gZXhwbGljaXRseSBlbmFibGUgdGhpcy4gSXQgbWlnaHQgZ2l2ZSBtZSBtb3JlIGluc2lnaHQgdG8gdGVzdCBpZiB0aGlzIG5ldyBjb2RlIGFmZmVjdHMgYSBzcGVjaWZpYyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTI2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6NDUuMDU3Mjg2MDU3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUwMjE5MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORUVEX1BFUl9DUFVfS01cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMDQ0PWNvbmZpZyBBUkNIX01PRFVMRV9ORUVEU19XRUFLX1BFUl9DUFVcXG4tLVxcbm1tL0tjb25maWctMTA0OS0jXFxubW0vS2NvbmZpZzoxMDUwOmNvbmZpZyBORUVEX1BFUl9DUFVfS01cXG5tbS9LY29uZmlnLTEwNTEtXFx0ZGVwZW5kcyBvbiAhU01QIHx8ICFNTVVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6NDkuODA3NTEzOTE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzQ2MjQ1MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29udW5kcnVtcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0J3MgbG9va2luZyBsaWtlIGBORUVEX1BFUl9DUFVfS01gIGlzIGNvbmRpdGlvbmFsLiBJdCdzIHRpZWQgdG8gYCFTTVAgfHwgIU1NVWAuIFRoYXQncyBhIHJlZCBmbGFnLiBXZSBjYW4ndCBqdXN0IHNsYXAgdGhpcyBvbiBhIHN0YW5kYXJkIFNNUCBrZXJuZWwgYW5kIGV4cGVjdCBpdCB0byB3b3JrIHdpdGhvdXQgYnJlYWtpbmcgdGhpbmdzLiBIbW0uIFNvLCBiYXNlZCBvbiB0aGlzLCBpdCdzIG5vdCBkaXJlY3RseSBzZWxlY3RhYmxlLCBvciBtaWdodCBjb25mbGljdCBpZiBlbmFibGVkLiBUaGVyZWZvcmUsIGl0J3MgYSB0ZXJyaWJsZSBpZGVhIHRvIGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLlxuXG5PbiB0aGUgcG9zaXRpdmUgc2lkZSwgYENPTVBBQ1RJT05gIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIHNlZW0gbGlrZSBzb2xpZCBvcHRpb25zIHRvIGluY2x1ZGUuIFRob3NlIGFyZSB1c3VhbGx5IGJlbmVmaWNpYWwuIE5vdywgbGV0J3MgZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgYENPTVBBQ1RJT05gIGFuZCBzZWUgd2hhdCdzIHdoYXQuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBtbS9LY29uZmlnYCB0byBiZSBzdXJlIHRoZXJlIGFyZSBubyBzdXJwcmlzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTYyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6NTUuMjgyMTQ0Mzg4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM2NDUzNTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDT01QQUNUSU9OXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy02NTMtIyBzdXBwb3J0IGZvciBtZW1vcnkgY29tcGFjdGlvblxcbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXFxubW0vS2NvbmZpZy02NTUtXFx0Ym9vbCBcXFwiQWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMzowMC40MTg2MDQ1NTZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzMTMzMTQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGVja2luZyB0aGUgQm9vbGVhbioqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYSBib29sZWFuIHZhbHVlIGhlcmUuIFJpZ2h0LCBhIHNpbXBsZSB0cnVlL2ZhbHNlLCBvbi9vZmYgc2l0dWF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoZSBkZWZpbml0aW9uP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBMZXQncyBzZWUuLi4gSSdtIHRoaW5raW5nLCBcIkxldCdzIGRpZyBpbnRvIGBtbS9LY29uZmlnYC5cIiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGZvciBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIGtub3cgdGhhdCdzIHRoZSBrZXkgdmFyaWFibGUgdG8gY2hlY2ssIHRvIHVuZGVyc3RhbmQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGlzIGJvb2xlYW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXRzIGNvbmZpZ3VyYXRpb24gbWVhbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTQ5LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MDQuNjQ5OTQwMjU3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzM2OTE1MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTg0Mz1jb25maWcgTU1fSURcXG4tLVxcbm1tL0tjb25maWctODQ1LVxcbm1tL0tjb25maWc6ODQ2Om1lbnVjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9LY29uZmlnLTg0Ny1cXHRib29sIFxcXCJUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0XFxcIlxcbi0tXFxubW0vS2NvbmZpZz04NjQ9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTg2OS1cXG5tbS9LY29uZmlnOjg3MDpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTXFxubW0vS2NvbmZpZy04NzEtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04NzYtXFxubW0vS2NvbmZpZzo4Nzc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX01BRFZJU0VcXG5tbS9LY29uZmlnLTg3OC1cXHRcXHRib29sIFxcXCJtYWR2aXNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04ODUtXFxubW0vS2NvbmZpZzo4ODY6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX05FVkVSXFxubW0vS2NvbmZpZy04ODctXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTg5Mz1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctOTAyLVxcbm1tL0tjb25maWc6OTAzOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXFxubW0vS2NvbmZpZy05MDQtXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkxMi1cXG5tbS9LY29uZmlnOjkxMzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTkxNC1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkyMC1cXG5tbS9LY29uZmlnOjkyMTpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxcbm1tL0tjb25maWctOTIyLVxcdFxcdGJvb2wgXFxcIndpdGhpbl9zaXplXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MjgtXFxubW0vS2NvbmZpZzo5Mjk6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXFxubW0vS2NvbmZpZy05MzAtXFx0XFx0Ym9vbCBcXFwiYWR2aXNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZz05Mzg9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTk0Ny1cXG5tbS9LY29uZmlnOjk0ODpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTQ5LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NTYtXFxubW0vS2NvbmZpZzo5NTc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05NTgtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NjQtXFxubW0vS2NvbmZpZzo5NjU6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTk2Ni1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTcyLVxcbm1tL0tjb25maWc6OTczOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTc0LVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MTAuMzg2ODY0NzY3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NTEwNjYxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBIdWdlcGFnZSBUcmFuc3BhcmVuY3kgYW5kIEFsbG9jYXRpb24gQ2hlY2tzKipcblxuUmlnaHQsIHNvIHdlJ3JlIHNlZWluZyB0aGF0IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgYmVpbmcgZmxhZ2dlZCBhcyBhIHBvc2l0aXZlLiBHb29kLCBnb29kLiBUaGF0J3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTm93LCBob2xkIG9uIGEgc2Vjb25kLi4uIG15IGludGVybmFsIHJhZGFyIGlzIHBpbmdpbmcgYSBkZXRhaWwgaW4gYG1tL3BhZ2VfYWxsb2MuY2AgdGhhdCBJIG5lZWQgdG8gY2hlY2suIFNwZWNpZmljYWxseSwgdGhlcmUncyBgaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpYCBpbiB0aGVyZS4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgY2hlY2tzIGl0J3MgcnVubmluZy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVidWdnaW5nIGNoZWNrcz8gUG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdHMgZHVyaW5nIGFsbG9jYXRpb24/IEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgc2NoZW1lIG9mIHRoaW5ncyBiZWZvcmUgSSBjYW4gY29uZmlkZW50bHkgYXNzZXNzIHRoZSBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDMzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MTYuMjM3OTM1MTc4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI3OTU5ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX2NoZWNrX3BhZ2VzX2VuYWJsZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9hbGxvYy5jPTEwNzQ9c3RhdGljIGlubGluZSBib29sIGZyZWVfcGFnZV9pc19iYWQoc3RydWN0IHBhZ2UgKnBhZ2UpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTA4My1cXG5tbS9wYWdlX2FsbG9jLmM6MTA4NDpzdGF0aWMgaW5saW5lIGJvb2wgaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCh2b2lkKVxcbm1tL3BhZ2VfYWxsb2MuYy0xMDg1LXtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMDg5PXN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMDk5LVxcbm1tL3BhZ2VfYWxsb2MuYzoxMTAwOlxcdGlmICghaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTExMDEtXFx0XFx0cmV0ID0gMDtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMzE0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMzgyLVxcdFxcdFxcdFxcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XFxubW0vcGFnZV9hbGxvYy5jOjEzODM6XFx0XFx0XFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xcbm1tL3BhZ2VfYWxsb2MuYy0xMzg0LVxcdFxcdFxcdFxcdGlmIChmcmVlX3BhZ2VfaXNfYmFkKHRhaWxfcGFnZSkpIHtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMzg5LVxcdFxcdFxcdHRhaWxfcGFnZS1cXHUwMDNlZmxhZ3MuZiBcXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xcbm1tL3BhZ2VfYWxsb2MuYzoxMzkwOlxcdFxcdFxcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYgdGFpbF9wYWdlLVxcdTAwM2Vwcml2YXRlKSB7XFxubW0vcGFnZV9hbGxvYy5jLTEzOTEtXFx0XFx0XFx0XFx0YmFkX3BhZ2UodGFpbF9wYWdlLCBcXFwibm9uemVybyBwcml2YXRlXFxcIik7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTQwNC1cXG5tbS9wYWdlX2FsbG9jLmM6MTQwNTpcXHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTE0MDYtXFx0XFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSkpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MTc3Nj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfbmV3X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxubW0vcGFnZV9hbGxvYy5jLTE3Nzcte1xcbm1tL3BhZ2VfYWxsb2MuYzoxNzc4OlxcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcXG5tbS9wYWdlX2FsbG9jLmMtMTc3OS1cXHRcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjICgxIFxcdTAwM2NcXHUwMDNjIG9yZGVyKTsgaSsrKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAzOjIxLjA2NTkwMjU3MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI1NzMyNjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOlxuXG4qKkFuYWx5emluZyBgaXNfY2hlY2tfcGFnZXNfZW5hYmxlZGAgaW4gYG1tL3BhZ2VfYWxsb2MuY2AqKlxuXG5BbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIHplcm9pbmcgaW4gb24gYGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWRgIHdpdGhpbiB0aGUgYG1tL3BhZ2VfYWxsb2MuY2AgZmlsZS4gSSdtIGltbWVkaWF0ZWx5IHJlY29nbml6aW5nIHRoYXQgdGhpcyBmdW5jdGlvbiBvciB2YXJpYWJsZSBpcyBwYXJ0IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgcGFnZSBhbGxvY2F0aW9uIGFzcGVjdC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFscmVhZHkgaGF2ZSBhIHByZXR0eSBzdHJvbmcgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgcGFnZSBhbGxvY2F0b3Igd29ya3MsIHNvIEknbSBleHBlY3RpbmcgdGhpcyB0byByZWxhdGUgdG8gc29tZSBraW5kIG9mIGRlYnVnZ2luZywgZXJyb3IgY2hlY2tpbmcsIG9yIHBlcmhhcHMgZXZlbiBhIGZlYXR1cmUgZmxhZyBjb250cm9sbGluZyBjZXJ0YWluIGFsbG9jYXRpb24gYmVoYXZpb3JzLiBVbmRlcnN0YW5kaW5nIHRoaXMgbWlnaHQgZ2l2ZSBtZSBjcnVjaWFsIGluc2lnaHRzIGludG8gaG93IHBhZ2UgYWxsb2NhdGlvbnMgYXJlIHZhbGlkYXRlZCwgb3IgaG93IHdlIG1pZ2h0IGJlIGNvbnRyb2xsaW5nIHRoYXQgYmVoYXZpb3VyIGF0IHJ1biB0aW1lLiBUaGUgZmFjdCB0aGF0IGl0J3MgbG9jYXRlZCB3aXRoaW4gYHBhZ2VfYWxsb2MuY2AgaXMgaGlnaGx5IHN1Z2dlc3RpdmUuIEkga25vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgdGhpcyBwaWVjZSBjb250cm9scywgYW5kIGl0cyBwdXJwb3NlIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjc1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MjUuMDkxNjQxNDM4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9wYWdlX2FsbG9jLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA4MCxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA4MDpcXHRcXHRiYWRfcGFnZShwYWdlLCBwYWdlX2JhZF9yZWFzb24ocGFnZSwgUEFHRV9GTEFHU19DSEVDS19BVF9GUkVFKSk7XFxuMTA4MTpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4xMDgyOlxcdH1cXG4xMDgzOlxcdFxcbjEwODQ6XFx0c3RhdGljIGlubGluZSBib29sIGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQodm9pZClcXG4xMDg1OlxcdHtcXG4xMDg2OlxcdFxcdHJldHVybiBzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFxcdTAwMjZjaGVja19wYWdlc19lbmFibGVkKTtcXG4xMDg3OlxcdH1cXG4xMDg4OlxcdFxcbjEwODk6XFx0c3RhdGljIGludCBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHN0cnVjdCBwYWdlICpoZWFkX3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKVxcbjEwOTA6XFx0e1xcbjEwOTE6XFx0XFx0c3RydWN0IGZvbGlvICpmb2xpbyA9IChzdHJ1Y3QgZm9saW8gKiloZWFkX3BhZ2U7XFxuMTA5MjpcXHRcXHRpbnQgcmV0ID0gMTtcXG4xMDkzOlxcdFxcbjEwOTQ6XFx0XFx0LypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MjUuMDkyMTMzNzY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzMyMTIyNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgU291cmNlIG9mIGBjaGVja19wYWdlc19lbmFibGVkYCoqXG5cbk9rYXksIHNvIGBjaGVja19wYWdlc19lbmFibGVkYCBpcyBhIHN0YXRpYyBrZXksIG1lYW5pbmcgaXQncyBsaWtlbHkgZGVmaW5lZCBzb21ld2hlcmUgYW5kIHByb2JhYmx5IHVzZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB0cmFjayBkb3duIHdoZXJlIGl0J3MgYWN0dWFsbHkgZ2V0dGluZyBzZXQuIFVuZGVyc3RhbmRpbmcgaXRzIGluaXRpYWwgdmFsdWUgYW5kIHdoZXJlIGl0J3MgYmVpbmcgbW9kaWZpZWQgaXMgY3J1Y2lhbCB0byBmaWd1cmluZyBvdXQgaXRzIGltcGFjdC4gSSdsbCBuZWVkIHRvIHVzZSBhIGNvZGUgc2VhcmNoLCBvciBqdW1wIHRvIGRlZmluaXRpb24sIHRvIGZpbmQgaXRzIGRlY2xhcmF0aW9uIGFuZCBhbnkgYXNzaWdubWVudHMuIEtub3dpbmcgdGhlIHNjb3BlIGFuZCBjb250ZXh0IG9mIGl0cyBzZXR0aW5nIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IG9wZXJhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTc2OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MjguNDI1MzQ5MjkxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg4OTkwOTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX3BhZ2VzX2VuYWJsZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaW50ZXJuYWwuaD02NTA9ZXh0ZXJuIGNoYXIgKiBjb25zdCB6b25lX25hbWVzW01BWF9OUl9aT05FU107XFxuLS1cXG5tbS9pbnRlcm5hbC5oLTY1Mi0vKiBwZXJmb3JtIHNhbml0eSBjaGVja3Mgb24gc3RydWN0IHBhZ2VzIGJlaW5nIGFsbG9jYXRlZCBvciBmcmVlZCAqL1xcbm1tL2ludGVybmFsLmg6NjUzOkRFQ0xBUkVfU1RBVElDX0tFWV9NQVlCRShDT05GSUdfREVCVUdfVk0sIGNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xcbm1tL2ludGVybmFsLmgtNjU0LVxcbi0tXFxubW0vbW1faW5pdC5jPTI1MDQ9ZWFybHlfcGFyYW0oXFxcImluaXRfb25fZnJlZVxcXCIsIGVhcmx5X2luaXRfb25fZnJlZSk7XFxubW0vbW1faW5pdC5jLTI1MDUtXFxubW0vbW1faW5pdC5jOjI1MDY6REVGSU5FX1NUQVRJQ19LRVlfTUFZQkUoQ09ORklHX0RFQlVHX1ZNLCBjaGVja19wYWdlc19lbmFibGVkKTtcXG5tbS9tbV9pbml0LmMtMjUwNy1cXG5tbS9tbV9pbml0LmM6MjUwODpzdGF0aWMgYm9vbCBjaGVja19wYWdlc19lbmFibGVkX2Vhcmx5IF9faW5pdGRhdGE7XFxubW0vbW1faW5pdC5jLTI1MDktXFxubW0vbW1faW5pdC5jPTI1MTA9c3RhdGljIGludCBfX2luaXQgZWFybHlfY2hlY2tfcGFnZXMoY2hhciAqYnVmKVxcbm1tL21tX2luaXQuYy0yNTExLXtcXG5tbS9tbV9pbml0LmM6MjUxMjpcXHRyZXR1cm4ga3N0cnRvYm9vbChidWYsIFxcdTAwMjZjaGVja19wYWdlc19lbmFibGVkX2Vhcmx5KTtcXG5tbS9tbV9pbml0LmMtMjUxMy19XFxuLS1cXG5tbS9tbV9pbml0LmM9MjUyMj1zdGF0aWMgdm9pZCBfX2luaXQgbWVtX2RlYnVnZ2luZ19hbmRfaGFyZGVuaW5nX2luaXQodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0yNTI0LVxcdGJvb2wgcGFnZV9wb2lzb25pbmdfcmVxdWVzdGVkID0gZmFsc2U7XFxubW0vbW1faW5pdC5jOjI1MjU6XFx0Ym9vbCB3YW50X2NoZWNrX3BhZ2VzID0gY2hlY2tfcGFnZXNfZW5hYmxlZF9lYXJseTtcXG5tbS9tbV9pbml0LmMtMjUyNi1cXG4tLVxcbm1tL21tX2luaXQuYy0yNTgyLVxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfREVCVUdfVk0pIFxcdTAwMjZcXHUwMDI2IHdhbnRfY2hlY2tfcGFnZXMpXFxubW0vbW1faW5pdC5jOjI1ODM6XFx0XFx0c3RhdGljX2JyYW5jaF9lbmFibGUoXFx1MDAyNmNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xcbm1tL21tX2luaXQuYy0yNTg0LX1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMDc0PXN0YXRpYyBpbmxpbmUgYm9vbCBmcmVlX3BhZ2VfaXNfYmFkKHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTEwODMtXFxubW0vcGFnZV9hbGxvYy5jOjEwODQ6c3RhdGljIGlubGluZSBib29sIGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQodm9pZClcXG5tbS9wYWdlX2FsbG9jLmMtMTA4NS17XFxubW0vcGFnZV9hbGxvYy5jOjEwODY6XFx0cmV0dXJuIHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNmNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xcbm1tL3BhZ2VfYWxsb2MuYy0xMDg3LX1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMDg5PXN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMDk5LVxcbm1tL3BhZ2VfYWxsb2MuYzoxMTAwOlxcdGlmICghaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTExMDEtXFx0XFx0cmV0ID0gMDtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMzE0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMzgyLVxcdFxcdFxcdFxcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XFxubW0vcGFnZV9hbGxvYy5jOjEzODM6XFx0XFx0XFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xcbm1tL3BhZ2VfYWxsb2MuYy0xMzg0LVxcdFxcdFxcdFxcdGlmIChmcmVlX3BhZ2VfaXNfYmFkKHRhaWxfcGFnZSkpIHtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMzg5LVxcdFxcdFxcdHRhaWxfcGFnZS1cXHUwMDNlZmxhZ3MuZiBcXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xcbm1tL3BhZ2VfYWxsb2MuYzoxMzkwOlxcdFxcdFxcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYgdGFpbF9wYWdlLVxcdTAwM2Vwcml2YXRlKSB7XFxubW0vcGFnZV9hbGxvYy5jLTEzOTEtXFx0XFx0XFx0XFx0YmFkX3BhZ2UodGFpbF9wYWdlLCBcXFwibm9uemVybyBwcml2YXRlXFxcIik7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTQwNC1cXG5tbS9wYWdlX2FsbG9jLmM6MTQwNTpcXHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTE0MDYtXFx0XFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSkpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MTc3Nj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfbmV3X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxubW0vcGFnZV9hbGxvYy5jLTE3Nzcte1xcbm1tL3BhZ2VfYWxsb2MuYzoxNzc4OlxcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcXG5tbS9wYWdlX2FsbG9jLmMtMTc3OS1cXHRcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjICgxIFxcdTAwM2NcXHUwMDNjIG9yZGVyKTsgaSsrKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAzOjMzLjgxNDM1MDA2OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM5MTI0NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBWaXJ0dWFsIE1lbW9yeTogRW5zdXJpbmcgQWN0aXZlIENoZWNrcyoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQgc2VlbXMgbGlrZSBgQ09ORklHX0RFQlVHX1ZNYCBlaXRoZXIgZW5hYmxlcyBkZWJ1Z2dpbmcgZmVhdHVyZXMgYnkgZGVmYXVsdCwgb3IgaXQncyBwb3RlbnRpYWxseSBhIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbi4gVG8gbWFrZSBzdXJlIHRoZSB2aXJ0dWFsIG1lbW9yeSBkZWJ1Z2dpbmcgY2hlY2tzIGFyZSBkZWZpbml0ZWx5IHJ1bm5pbmcgYXMgZXhwZWN0ZWQsIGl0J3MgYmVzdCB0byBleHBsaWNpdGx5IGluY2x1ZGUgYERFQlVHX1ZNYCB3aXRoaW4gYEVuYWJsZUNvbmZpZ3NgLiBUaGlzIHdpbGwgcmVtb3ZlIGFueSBhbWJpZ3VpdHkgYW5kIGVuc3VyZSB0aGF0IHRob3NlIGRlYnVnZ2luZyBjaGVja3MgYXJlIGFjdGl2ZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgYENPTkZJR19ERUJVR19WTWAgc2V0dGluZyB0byBjb25maXJtLCBvZiBjb3Vyc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDczLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MzcuMTUzNDc4MzExWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDQ0MzQ2NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBERUJVR19WTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz04NjA9Y29uZmlnIERFQlVHX1ZGU1xcbi0tXFxubGliL0tjb25maWcuZGVidWctODY4LVxcbmxpYi9LY29uZmlnLmRlYnVnOjg2OTpjb25maWcgREVCVUdfVk1fSVJRU09GRlxcbmxpYi9LY29uZmlnLmRlYnVnLTg3MC1cXHRkZWZfYm9vbCBERUJVR19WTSBcXHUwMDI2XFx1MDAyNiAhUFJFRU1QVF9SVFxcbmxpYi9LY29uZmlnLmRlYnVnLTg3MS1cXG5saWIvS2NvbmZpZy5kZWJ1Zzo4NzI6Y29uZmlnIERFQlVHX1ZNXFxubGliL0tjb25maWcuZGVidWctODczLVxcdGJvb2wgXFxcIkRlYnVnIFZNXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctODgwLVxcbmxpYi9LY29uZmlnLmRlYnVnOjg4MTpjb25maWcgREVCVUdfVk1fU0hPT1RfTEFaSUVTXFxubGliL0tjb25maWcuZGVidWctODgyLVxcdGJvb2wgXFxcIkRlYnVnIE1NVV9MQVpZX1RMQl9TSE9PVERPV04gaW1wbGVtZW50YXRpb25cXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy04OTAtXFxubGliL0tjb25maWcuZGVidWc6ODkxOmNvbmZpZyBERUJVR19WTV9NQVBMRV9UUkVFXFxubGliL0tjb25maWcuZGVidWctODkyLVxcdGJvb2wgXFxcIkRlYnVnIFZNIG1hcGxlIHRyZWVzXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctODk5LVxcbmxpYi9LY29uZmlnLmRlYnVnOjkwMDpjb25maWcgREVCVUdfVk1fUkJcXG5saWIvS2NvbmZpZy5kZWJ1Zy05MDEtXFx0Ym9vbCBcXFwiRGVidWcgVk0gcmVkLWJsYWNrIHRyZWVzXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctOTA3LVxcbmxpYi9LY29uZmlnLmRlYnVnOjkwODpjb25maWcgREVCVUdfVk1fUEdGTEFHU1xcbmxpYi9LY29uZmlnLmRlYnVnLTkwOS1cXHRib29sIFxcXCJEZWJ1ZyBwYWdlLWZsYWdzIG9wZXJhdGlvbnNcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy05MTUtXFxubGliL0tjb25maWcuZGVidWc6OTE2OmNvbmZpZyBERUJVR19WTV9QR1RBQkxFXFxubGliL0tjb25maWcuZGVidWctOTE3LVxcdGJvb2wgXFxcIkRlYnVnIGFyY2ggcGFnZSB0YWJsZSBmb3Igc2VtYW50aWNzIGNvbXBsaWFuY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAzOjQyLjU5NzgzMTI1NVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQzODIxMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVGFyZ2V0IEZ1bmN0aW9ucyoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgaW5jbHVkaW5nIGBERUJVR19WTWAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5pdGVseSBhIHNvbGlkIGNob2ljZS4gTm93LCBsZXQncyBsb29rIGF0IHRob3NlIGZvY3VzIHN5bWJvbHMuXG5cbkFscmlnaHQsIHRoZSBsaXN0IGluY2x1ZGVzIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYF9fZnJlZV9wYWdlc19wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AsIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIEhvbGQgb24gYSBtaW51dGUuLi4gYF9fZnJlZV9wYWdlc19wcmVwYXJlYD8gVGhhdCdzIGEgaG90IHBhdGgsIGlzbid0IGl0PyBJdCdzIGNhbGxlZCBmb3IgKmV2ZXJ5KiBwYWdlIGZyZWUuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBrZWVwIHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbiBmcm9tIGJlaW5nIHNrZXdlZC4gU28sIG5vLCBkZWZpbml0ZWx5IG5vdCBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgLlxuXG5Ib3cgYWJvdXQgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgPyBUaGF0J3MgY2FsbGVkIGR1cmluZyBodWdlIHBhZ2Ugc3BsaXR0aW5nLCB3aGljaCBpcyBhIHNwZWNpZmljIG9wZXJhdGlvbiwgbm90IGEgZ2VuZXJpYyBvbmUuIFRoYXQgY291bGQgYmUgZ29vZC4gYHBjcHVfZGVzdHJveV9jaHVua2Agc2VlbXMgb2theSB0b287IGRlc3Ryb3lpbmcgcGVyY3B1IGNodW5rcyBpcyB0YXJnZXRlZC4gQXMgZm9yIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAsIHRoZXkncmUgYWxsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG1lbW9yeSBjb21wYWN0aW9uLiBBZ2FpbiwgdGhleSdyZSBub3QgZ2VuZXJpYyBob3QgcGF0aHMsIGJ1dCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgbWVtb3J5IG1hbmFnZW1lbnQgcHJvY2Vzcy4gVGhhdCBsb29rcyBwcm9taXNpbmcuIE5vdywgdG8gZG91YmxlLWNoZWNrIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzY3OSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMzo0OC41NDE2NTk5MjhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzY4NDYzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD0zODY9c3RhdGljIGlubGluZSB2b2lkIHNvZnRsZWFmX21pZ3JhdGlvbl9zeW5jKHNvZnRsZWFmX3QgZW50cnksXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zOTEtXFx0ICogZm9saW9zIGFuZCB0aHVzIHJlc3VsdCBpbiBvYnNlcnZpbmcgYW4gdW5sb2NrZWQgZm9saW8uXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MzkyOlxcdCAqIFRoaXMgbWF0Y2hlcyB0aGUgd3JpdGUgYmFycmllciBpbiBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkuXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMzkzLVxcdCAqL1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zNTE2PXN0YXRpYyBib29sIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQoc3RydWN0IHBhZ2UgKnBhZ2UsIGxvbmcgbnJfcGFnZXMpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM1MjctICovXFxubW0vaHVnZV9tZW1vcnkuYzozNTI4OnN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG5tbS9odWdlX21lbW9yeS5jLTM1MjktXFx0XFx0aW50IG5ld19vcmRlcilcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY2OC0gKiAxLiB1bmlmb3JtIHNwbGl0OiBAeGFzIGlzIHNwbGl0IHdpdGggbm8gZXhwZWN0YXRpb24gb2YgZmFpbHVyZSBhbmQgYSBzaW5nbGVcXG5tbS9odWdlX21lbW9yeS5jOjM2Njk6ICogICAgX19zcGxpdF9mb2xpb190b19vcmRlcigpIGlzIGNhbGxlZCB0byBzcGxpdCB0aGUgQGZvbGlvIGludG8gQG5ld19vcmRlclxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY3MC0gKiAgICBhbG9uZyB3aXRoIHN0YXRzIHVwZGF0ZS5cXG5tbS9odWdlX21lbW9yeS5jLTM2NzEtICogMi4gbm9uLXVuaWZvcm0gc3BsaXQ6IGZvbGlvX29yZGVyIC0gQG5ld19vcmRlciBjYWxscyB0b1xcbm1tL2h1Z2VfbWVtb3J5LmM6MzY3MjogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgYXJlIGV4cGVjdGVkIHRvIGJlIG1hZGUgaW4gYSBmb3IgbG9vcCB0byBzcGxpdFxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY3My0gKiAgICB0aGUgQGZvbGlvIHRvIG9uZSBsb3dlciBvcmRlciBhdCBhIHRpbWUuIFRoZSBmb2xpbyBjb250YWluaW5nIEBzcGxpdF9hdFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zNjg1PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zNzMwLVxcdFxcdHBnYWxsb2NfdGFnX3NwbGl0KGZvbGlvLCBvbGRfb3JkZXIsIHNwbGl0X29yZGVyKTtcXG5tbS9odWdlX21lbW9yeS5jOjM3MzE6XFx0XFx0X19zcGxpdF9mb2xpb190b19vcmRlcihmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XFxubW0vaHVnZV9tZW1vcnkuYy0zNzMyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMzo1NS4yMTg1MTc4MzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMjMxNjg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlc2UgZnVuY3Rpb25zLCByZWZsZWN0aW5nIG9uIHRoZSBzdHJlbmd0aHMgSSBzZWUgd2l0aGluIHRoZW06XG5cbioqQXNzZXNzbWVudCBvZiBNZW1vcnkgTWFuYWdlbWVudCBSb3V0aW5lcyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIOKAkyB5ZWFoLCB0aGF0J3Mgc29saWQuIEdvb2QgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHRoZSBmb2xpbyBzcGxpdHRpbmcuIFRoZW4gd2UgaGF2ZSBgcGNwdV9kZXN0cm95X2NodW5rYCAtIGVmZmVjdGl2ZSBmb3IgY2xlYW5pbmcgdXAgc3BlY2lmaWMgY2h1bmtzLiBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgIGFuZCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2Agc2VlbSBsaWtlIGVmZmljaWVudCBtZXRob2RzIGZvciBpc29sYXRpbmcgZnJlZSBwYWdlcy4gUmVhbGx5LCBhbGwgb2YgdGhvc2UgYXJlIHdlbGwgZG9uZS5cblxuSG1tLCBub3cgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIEl0J3MgZXNzZW50aWFsIHdlIGNoZWNrIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgY29tcGFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4MTgsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMzo1OC42MzA4MzgyMTlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzE1MjI4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vY29tcGFjdGlvbi5jPTE2OTI9c3RhdGljIHZvaWQgaXNvbGF0ZV9mcmVlcGFnZXMoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTgxMS0gKi9cXG5tbS9jb21wYWN0aW9uLmM6MTgxMjpzdGF0aWMgc3RydWN0IGZvbGlvICpjb21wYWN0aW9uX2FsbG9jX25vcHJvZihzdHJ1Y3QgZm9saW8gKnNyYywgdW5zaWduZWQgbG9uZyBkYXRhKVxcbm1tL2NvbXBhY3Rpb24uYy0xODEzLXtcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz0xODU5PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmNvbXBhY3Rpb25fYWxsb2Moc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGF0YSlcXG5tbS9jb21wYWN0aW9uLmMtMTg2MC17XFxubW0vY29tcGFjdGlvbi5jOjE4NjE6XFx0cmV0dXJuIGFsbG9jX2hvb2tzKGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mKHNyYywgZGF0YSkpO1xcbm1tL2NvbXBhY3Rpb24uYy0xODYyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDQ6MDQuMzAyMzcwNDM1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDMxNDgxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IENvbXBhY3Rpb24gQWxsb2NhdGlvbiBTdHJhdGVneSoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIHdpdGggdGhpcyBjb21wYWN0aW9uIHN0cmF0ZWd5LiBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgYm90aCBgY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZgIGFuZCBgY29tcGFjdGlvbl9hbGxvY2AuIFRoZSBudWFuY2VzIG9mIHdoZW4gYW5kIHdoZXJlIHRvIHVzZSBlYWNoIGFyZSBjcml0aWNhbCwgYnV0IGZvciBub3csIHRoZXkgYXJlIG15IGJhc2UgdG9vbHMuIFRoZSBkZXRhaWxzIGFyb3VuZCB0aGUgcHJvZmlsZXMsIG9yIGxhY2sgdGhlcmVvZiwgYXJlIGEgc2Vjb25kYXJ5IGNvbmNlcm4gYXQgdGhpcyBqdW5jdHVyZS5cblxuTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcgZnVydGhlciwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AuIFRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gdGhlIHVuZGVybHlpbmcgbWVjaGFuaWNzIG9mIGFsbCB0aGlzLCBhbmQgSSB3YW50IHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb25zIGlzIGNvbXBsZXRlbHkgaXJvbmVkIG91dC4gSXQgaXMgdGhlIGtleSBidWlsZGluZyBibG9jayBJIGNhbid0IGxpdmUgd2l0aG91dCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI2OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjA0OjA4LjQ0NTUyMjY1M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2NTg5MTQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc29sYXRlX2ZyZWVwYWdlc19ibG9ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9jb21wYWN0aW9uLmM9NTUxPXN0YXRpYyBib29sIGNvbXBhY3RfdW5sb2NrX3Nob3VsZF9hYm9ydChzcGlubG9ja190ICpsb2NrLFxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTU3My0gKi9cXG5tbS9jb21wYWN0aW9uLmM6NTc0OnN0YXRpYyB1bnNpZ25lZCBsb25nIGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLFxcbm1tL2NvbXBhY3Rpb24uYy01NzUtXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqc3RhcnRfcGZuLFxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTcxMj1pc29sYXRlX2ZyZWVwYWdlc19yYW5nZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYyxcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy03MjktXFx0XFx0XFx0XFx0YmxvY2tfZW5kX3BmbiArPSBwYWdlYmxvY2tfbnJfcGFnZXMpIHtcXG5tbS9jb21wYWN0aW9uLmM6NzMwOlxcdFxcdC8qIFByb3RlY3QgcGZuIGZyb20gY2hhbmdpbmcgYnkgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2sgKi9cXG5tbS9jb21wYWN0aW9uLmMtNzMxLVxcdFxcdHVuc2lnbmVkIGxvbmcgaXNvbGF0ZV9zdGFydF9wZm4gPSBwZm47XFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNzQ4LVxcbm1tL2NvbXBhY3Rpb24uYzo3NDk6XFx0XFx0aXNvbGF0ZWQgPSBpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhjYywgXFx1MDAyNmlzb2xhdGVfc3RhcnRfcGZuLFxcbm1tL2NvbXBhY3Rpb24uYy03NTAtXFx0XFx0XFx0XFx0XFx0YmxvY2tfZW5kX3BmbiwgY2MtXFx1MDAzZWZyZWVwYWdlcywgMCwgdHJ1ZSk7XFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNzUyLVxcdFxcdC8qXFxubW0vY29tcGFjdGlvbi5jOjc1MzpcXHRcXHQgKiBJbiBzdHJpY3QgbW9kZSwgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soKSByZXR1cm5zIDAgaWZcXG5tbS9jb21wYWN0aW9uLmMtNzU0LVxcdFxcdCAqIHRoZXJlIGFyZSBhbnkgaG9sZXMgaW4gdGhlIGJsb2NrIChpZS4gaW52YWxpZCBQRk5zIG9yXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MTQ3ND1mYXN0X2lzb2xhdGVfYXJvdW5kKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLCB1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xNDk0LVxcbm1tL2NvbXBhY3Rpb24uYzoxNDk1OlxcdGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKGNjLCBcXHUwMDI2c3RhcnRfcGZuLCBlbmRfcGZuLCBjYy1cXHUwMDNlZnJlZXBhZ2VzLCAxLCBmYWxzZSk7XFxubW0vY29tcGFjdGlvbi5jLTE0OTYtXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MTY5Mj1zdGF0aWMgdm9pZCBpc29sYXRlX2ZyZWVwYWdlcyhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYylcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xNzYzLVxcdFxcdC8qIEZvdW5kIGEgYmxvY2sgc3VpdGFibGUgZm9yIGlzb2xhdGluZyBmcmVlIHBhZ2VzIGZyb20uICovXFxubW0vY29tcGFjdGlvbi5jOjE3NjQ6XFx0XFx0bnJfaXNvbGF0ZWQgPSBpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhjYywgXFx1MDAyNmlzb2xhdGVfc3RhcnRfcGZuLFxcbm1tL2NvbXBhY3Rpb24uYy0xNzY1LVxcdFxcdFxcdFxcdFxcdGJsb2NrX2VuZF9wZm4sIGNjLVxcdTAwM2VmcmVlcGFnZXMsIHN0cmlkZSwgZmFsc2UpO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jLTE4MDEtXFx0ICogYnJva2UgZnJvbSB0aGUgbG9vcCBhbmQgc2V0IGlzb2xhdGVfc3RhcnRfcGZuIGJhc2VkIG9uIHRoZSBsYXN0XFxubW0vY29tcGFjdGlvbi5jOjE4MDI6XFx0ICogY2FsbCB0byBpc29sYXRlX2ZyZWVwYWdlc19ibG9jaygpLCBvciB3ZSBtZXQgdGhlIG1pZ3JhdGlvbiBzY2FubmVyXFxubW0vY29tcGFjdGlvbi5jLTE4MDMtXFx0ICogYW5kIHRoZSBsb29wIHRlcm1pbmF0ZWQgZHVlIHRvIGlzb2xhdGVfc3RhcnRfcGZuIFxcdTAwM2MgbG93X3BmblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowNDoxNC4xMTE0MjI4OThaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyNzk4MTUwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIE1lbW9yeSBNYW5hZ2VtZW50IFN0cmF0ZWdpZXMqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGhhbmRsZSB0aGlzIG1lbW9yeSBhbGxvY2F0aW9uIGlzc3VlLiBCYXNlZCBvbiBteSBwcmV2aW91cyBleHBlcmllbmNlIGFuZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgc3lzdGVtLCBJJ20gbGVhbmluZyB0b3dhcmQgdGhlIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AgZnVuY3Rpb24sIGFuZCBpdHMgbW9yZSBwZXJmb3JtYW50IGNvdXNpbiwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLiBUaGUga2V5IGRpZmZlcmVuY2UgaW4gaW1wbGVtZW50YXRpb24gaXMgbGlrZWx5IHdoYXQgbWF0dGVycyBoZXJlLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMuIEkgcmVhbGx5IHNob3VsZCBjaGVjayB0aGUgY29kZSBmb3IgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLiBJIGtub3cgdGhlIHRoZW9yeSwgYnV0IEkgbmVlZCB0byBzZWUgaG93IGl0J3MgYWN0dWFsbHkgaW1wbGVtZW50ZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgdGhlIHJpZ2h0IGNob2ljZSBmb3IgdGhpcyBzcGVjaWZpYyBzY2VuYXJpbyBhbmQgaXRzIHRyYWRlLW9mZnMuIFRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIHBlcmZvcm1hbmNlIGlzIGdvaW5nIHRvIGJlIHNpZ25pZmljYW50LCBzbyBJIG5lZWQgdG8gY2hvb3NlIHRoZSBiZXN0IG9wdGlvbiBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MjEyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDQ6MjUuMzkxMjQyMzI0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDc2Mjk0MDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS90cmFjZS9ldmVudHMvY29tcGFjdGlvbi5oPTU2PURFRklORV9FVkVOVChtbV9jb21wYWN0aW9uX2lzb2xhdGVfdGVtcGxhdGUsIG1tX2NvbXBhY3Rpb25faXNvbGF0ZV9mcmVlcGFnZXMsXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmgtNjYtXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvY29tcGFjdGlvbi5oOjY3OkRFRklORV9FVkVOVChtbV9jb21wYWN0aW9uX2lzb2xhdGVfdGVtcGxhdGUsIG1tX2NvbXBhY3Rpb25fZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyxcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmgtNjgtXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MTUwMz1zdGF0aWMgaW50IG5leHRfc2VhcmNoX29yZGVyKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLCBpbnQgb3JkZXIpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTUxOS1cXG5tbS9jb21wYWN0aW9uLmM6MTUyMDpzdGF0aWMgdm9pZCBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxcbm1tL2NvbXBhY3Rpb24uYy0xNTIxLXtcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xNjQ1LVxcbm1tL2NvbXBhY3Rpb24uYzoxNjQ2OlxcdHRyYWNlX21tX2NvbXBhY3Rpb25fZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyhtaW5fcGZuLCBjYy1cXHUwMDNlZnJlZV9wZm4sXFxubW0vY29tcGFjdGlvbi5jLTE2NDctXFx0XFx0XFx0XFx0XFx0XFx0ICAgbnJfc2Nhbm5lZCwgdG90YWxfaXNvbGF0ZWQpO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jPTE2OTI9c3RhdGljIHZvaWQgaXNvbGF0ZV9mcmVlcGFnZXMoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTcwMi1cXHQvKiBUcnkgYSBzbWFsbCBzZWFyY2ggb2YgdGhlIGZyZWUgbGlzdHMgZm9yIGEgY2FuZGlkYXRlICovXFxubW0vY29tcGFjdGlvbi5jOjE3MDM6XFx0ZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyhjYyk7XFxubW0vY29tcGFjdGlvbi5jLTE3MDQtXFx0aWYgKGNjLVxcdTAwM2Vucl9mcmVlcGFnZXMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjA0OjMwLjQ2NzU0NjM5N1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODI3Mjc0MDcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBc3Nlc3NtZW50IG9mIE1lbW9yeSBNYW5hZ2VtZW50IE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgIHNlZW1zIGxpa2UgYSBzb2xpZCBhcHByb2FjaC4gSXQncyBvbiB0aGUgcmlnaHQgdHJhY2sgZm9yIGVmZmljaWVudCBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24uIEknbSBzYXRpc2ZpZWQgdGhhdCBpdCdzIGhlYWRpbmcgaW4gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLlxuXG5Ob3csIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIHByb2Nlc3MuIEkgd2FudCB0byBxdWlja2x5IGV2YWx1YXRlIGhvdyB0aGlzIGZ1bmN0aW9uIGZhY3RvcnMgaW50byB0aGlzIHByb2Nlc3MsIHNwZWNpZmljYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBmcmVlaW5nIGFuZCBwb3RlbnRpYWxseSByZS11c2luZyBwYWdlcyBlZmZpY2llbnRseS4gSSBtdXN0IGVuc3VyZSB0aGlzIHBpZWNlIGRvdmV0YWlscyBuaWNlbHkgd2l0aCB0aGUgaXNvbGF0aW9uIHN0cmF0ZWd5IHdlIGp1c3QgY29uc2lkZXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIHByZXBhcmF0aW9uIHBoYXNlIGlzIG9wdGltaXplZCBvciBpZiBpdCBuZWVkcyBhbm90aGVyIGxvb2sgdG8gYmUgb3B0aW1hbGx5IHN0cmVhbWxpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjg1MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjA0OjQ4Ljc0MDI5MDc4MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3ODE3MDMzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmcmVlX3RhaWxfcGFnZV9wcmVwYXJlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfYWxsb2MuYz0xMDg0PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19jaGVja19wYWdlc19lbmFibGVkKHZvaWQpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTA4OC1cXG5tbS9wYWdlX2FsbG9jLmM6MTA4OTpzdGF0aWMgaW50IGZyZWVfdGFpbF9wYWdlX3ByZXBhcmUoc3RydWN0IHBhZ2UgKmhlYWRfcGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpXFxubW0vcGFnZV9hbGxvYy5jLTEwOTAte1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTEzMTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIF9fZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTEzODEtXFx0XFx0XFx0aWYgKGNvbXBvdW5kKVxcbm1tL3BhZ2VfYWxsb2MuYzoxMzgyOlxcdFxcdFxcdFxcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XFxubW0vcGFnZV9hbGxvYy5jLTEzODMtXFx0XFx0XFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowNDo1NC40MTg0Njk1NjZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0MzE5MzEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTWVtb3J5IE1hbmFnZW1lbnQ6IFRhcmdldGluZyBgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZWAgZm9yIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBtZW1vcnkgbWFuYWdlbWVudCBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHBhZ2UgZnJlZWluZy4gSSBzZWUgdGhhdCBgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZWAgaXMgY2FsbGVkIHdpdGhpbiBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgLiBOb3csIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgc2VlbXMgdG8gYmUgYSBwcmV0dHkgZnJlcXVlbnRseSBhY2Nlc3NlZCBwaWVjZSBvZiBjb2RlLCBhIGhvdCBwYXRoIGFzIHRoZXkgc2F5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvbXBvdW5kIHBhZ2VzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgICppdHNlbGYqIG1pZ2h0IGJlIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGRldGFpbGVkIGFuYWx5c2lzLCBhIHBvdGVudGlhbGx5IGZydWl0ZnVsIHN5bWJvbCB0byBmb2N1cyBvbiBzaW5jZSBpdOKAmXMgb25seSBpbnZvbHZlZCB3aGVuIHdlIGhhdmUgdGhlc2UgY29tcG91bmQgcGFnZXMuIEJ1dCBoYW5nIG9uLCBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgIGhhbmRsZXMgKmFsbCogcGFnZSBmcmVlcywgd2hpbGUgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgIGlzIHRoZSBvbmUgc3BlY2lmaWNhbGx5IGZvciBjb21wb3VuZCBwYWdlcy4gQWxyaWdodCwgSSdsbCBhZGQgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgIHRvIG15IGxpc3Qgb2YgdGhpbmdzIHRvIGtlZXAgYW4gZXllIG9uLiBJIHRoaW5rIHRoYXQgaXMgdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byBrZWVwIGdvaW5nLlxuXG5OZXh0IHVwLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCBgcGNwdV9kZXN0cm95X2NodW5rYC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCdzIGFib3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI4OSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowNTowMC40NjE2NjY2NDJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTM3NDIwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNwdV9kZXN0cm95X2NodW5rXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BlcmNwdS1rbS5jPTUzPXN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdV9jcmVhdGVfY2h1bmsoZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0vcGVyY3B1LWttLmMtODYtXFxubW0vcGVyY3B1LWttLmM6ODc6c3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcXG5tbS9wZXJjcHUta20uYy04OC17XFxuLS1cXG5tbS9wZXJjcHUtdm0uYz0zNTM9c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2NyZWF0ZV9jaHVuayhnZnBfdCBnZnApXFxuLS1cXG5tbS9wZXJjcHUtdm0uYy0zNzctXFxubW0vcGVyY3B1LXZtLmM6Mzc4OnN0YXRpYyB2b2lkIHBjcHVfZGVzdHJveV9jaHVuayhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmspXFxubW0vcGVyY3B1LXZtLmMtMzc5LXtcXG4tLVxcbm1tL3BlcmNwdS5jPTE1Mzc9c3RhdGljIHZvaWQgcGNwdV9jaHVua19kZXBvcHVsYXRlZChzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmssXFxuLS1cXG5tbS9wZXJjcHUuYy0xNTYyLSAqIHBjcHVfY3JlYXRlX2NodW5rXFx0XFx0LSBjcmVhdGUgYSBuZXcgY2h1bmtcXG5tbS9wZXJjcHUuYzoxNTYzOiAqIHBjcHVfZGVzdHJveV9jaHVua1xcdFxcdC0gZGVzdHJveSBhIGNodW5rLCBhbHdheXMgcHJlY2VkZWQgYnkgZnVsbCBkZXBvcFxcbm1tL3BlcmNwdS5jLTE1NjQtICogcGNwdV9hZGRyX3RvX3BhZ2VcXHRcXHQtIHRyYW5zbGF0ZSBhZGRyZXNzIHRvIHBoeXNpY2FsIGFkZHJlc3NcXG4tLVxcbm1tL3BlcmNwdS5jPTE1NzM9c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2NyZWF0ZV9jaHVuayhnZnBfdCBnZnApO1xcbm1tL3BlcmNwdS5jOjE1NzQ6c3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuayk7XFxubW0vcGVyY3B1LmMtMTU3NS1zdGF0aWMgc3RydWN0IHBhZ2UgKnBjcHVfYWRkcl90b19wYWdlKHZvaWQgKmFkZHIpO1xcbi0tXFxubW0vcGVyY3B1LmM9MTk1OT1zdGF0aWMgdm9pZCBwY3B1X2JhbGFuY2VfZnJlZShib29sIGVtcHR5X29ubHkpXFxuLS1cXG5tbS9wZXJjcHUuYy0xOTk0LVxcdFxcdH1cXG5tbS9wZXJjcHUuYzoxOTk1OlxcdFxcdHBjcHVfZGVzdHJveV9jaHVuayhjaHVuayk7XFxubW0vcGVyY3B1LmMtMTk5Ni1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDU6MDUuNjU1NDE1MTc2WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzOTY2MjI0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgcGNwdV9kZXN0cm95X2NodW5rYCBGdW5jdGlvbiBhbmQgUmVsYXRlZCBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIHNvIGBwY3B1X2Rlc3Ryb3lfY2h1bmtgIHNlZW1zIGxpa2UgYSBzb2xpZCBmdW5jdGlvbiwgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGxhcmdlciBwaWN0dXJlLiBJJ20gZm9jdXNpbmcgb24ga2V5IHN5bWJvbHMgbm93OiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAsIGBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AgaXRzZWxmIChvZiBjb3Vyc2UpLCBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgLCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AsIGFuZCBhbHNvIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUgY3J1Y2lhbCBwaWVjZXMgb2YgdGhpcyBwdXp6bGUuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGhhdmUgYENPTVBBQ1RJT05gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBhbmQgYERFQlVHX1ZNYCBpbiBwbGF5LiBCdXQgd2FpdCwgdGhlcmUncyBhIHByb2JsZW0sIGBORUVEX1BFUl9DUFVfS01gIGlzIG5vdCBkaXJlY3RseSBzZWxlY3RhYmxlLCB3aGljaCBpcyBvZGQuIFRoaXMgaXMgY29uY2VybmluZywgaXMgdGhlcmUgYW5vdGhlciBjb25maWcgb3B0aW9uIHRoYXQgdHJpZ2dlcnMgYHBjcHVfZGVzdHJveV9jaHVua2AncyBlbmFibGVtZW50P1xuXG5JIGtub3cgYHBjcHVfZGVzdHJveV9jaHVua2AgaXMgZGVmaW5lZCBpbiBib3RoIGBtbS9wZXJjcHUta20uY2AgYW5kIGBtbS9wZXJjcHUtdm0uY2AuIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBpcyBtb2RpZnlpbmcgYG1tL3BlcmNwdS1rbS5jYC4gVGhlIGNvcmUgaXNzdWUgdGhlbiBiZWNvbWVzLCBpZiBgTkVFRF9QRVJfQ1BVX0tNYCBpc24ndCBlbmFibGVkLCB0aGVuIGBtbS9wZXJjcHUta20uY2AgKndvbid0KiBiZSBjb21waWxlZCEgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBtbS9wZXJjcHUta20uY2AgKmlzKiBiZWluZyBjb21waWxlZCB1bmRlciB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY3JpdGljYWwgcHJlcmVxdWlzaXRlIHRvIGNvbnNpZGVyIGZvciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxODIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDU6MTIuMDUyMDQyNDUzWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDcwMjk4NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBlcmNwdS1rbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9wZXJjcHUta20uYy0yLS8qXFxubW0vcGVyY3B1LWttLmM6MzogKiBtbS9wZXJjcHUta20uYyAtIGtlcm5lbCBtZW1vcnkgYmFzZWQgY2h1bmsgYWxsb2NhdGlvblxcbm1tL3BlcmNwdS1rbS5jLTQtICpcXG4tLVxcbm1tL3BlcmNwdS1rbS5jLTEwLSAqXFxubW0vcGVyY3B1LWttLmM6MTE6ICogVG8gdXNlIHBlcmNwdS1rbSxcXG5tbS9wZXJjcHUta20uYy0xMi0gKlxcbi0tXFxubW0vcGVyY3B1LWttLmMtMjUtICogICBrZXJuZWwgbWVtb3J5IGJsb2NrIHVzaW5nIGFsbG9jX3BhZ2VzKCksIG1lbW9yeSB3aWxsIGJlIHdhc3RlZCBpZlxcbm1tL3BlcmNwdS1rbS5jOjI2OiAqICAgY2h1bmsgc2l6ZSBpcyBub3QgYWxpZ25lZC4gIHBlcmNwdS1rbSBjb2RlIHdpbGwgd2hpbmUgYWJvdXQgaXQuXFxubW0vcGVyY3B1LWttLmMtMjctICovXFxuLS1cXG5tbS9wZXJjcHUuYz0xNTc2PXN0YXRpYyBpbnQgX19pbml0IHBjcHVfdmVyaWZ5X2FsbG9jX2luZm8oY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWkpO1xcbi0tXFxubW0vcGVyY3B1LmMtMTU3OC0jaWZkZWYgQ09ORklHX05FRURfUEVSX0NQVV9LTVxcbm1tL3BlcmNwdS5jOjE1Nzk6I2luY2x1ZGUgXFxcInBlcmNwdS1rbS5jXFxcIlxcbm1tL3BlcmNwdS5jLTE1ODAtI2Vsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDU6MTcuMTIyMzQ3OTI2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDE5MjQ5NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyB0byBhcHByb2FjaCBmdXp6aW5nIGl0LiBJIHNlZSB0aGF0IGBtbS9wZXJjcHUta20uY2AgaXMgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBpbiBgbW0vcGVyY3B1LmNgIGJhc2VkIG9uIGBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNYC4gVGhlIGlzc3VlIGlzLCBJIGNhbid0IGVhc2lseSBlbmFibGUgdGhhdCBjb25maWd1cmF0aW9uIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBgIVNNUCB8fCAhTU1VYC4gU2luY2UgSSdtIHByb2JhYmx5IHRlc3Rpbmcgb24gYSBzdGFuZGFyZCBTTVAga2VybmVsLCB0aGF0IHBhcnQgb2YgdGhlIHBhdGNoIGlzIGVzc2VudGlhbGx5IHVudGVzdGFibGUgYXMgaXMuIEdvb2QgdG8ga25vdyAtIG5vIG5lZWQgdG8gYWdvbml6ZSBvdmVyIGVuYWJsaW5nIHRoYXQgY29uZmlnLiBXYWl0Li4uIEkgc2hvdWxkIHByb2JhYmx5IHJlbW92ZSBpdCBmcm9tIGNvbnNpZGVyYXRpb24sIHNpbmNlIGl0J3Mgbm90IHNlbGVjdGFibGUuXG5cbk5vdywgbGV0J3Mgem9vbSBvdXQuIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZml4aW5nIGlzc3VlcyB3aXRoIGBwYWdlLVx1MDAzZXByaXZhdGVgIG5vdCBiZWluZyBoYW5kbGVkIGNvcnJlY3RseSwgcGFydGljdWxhcmx5IG9uIHRhaWwgcGFnZXMuIEl0J3MgdG91Y2hpbmcgc29tZSBjcml0aWNhbCBtZW1vcnkgbWFuYWdlbWVudCBhcmVhczogcmVtb3ZpbmcgYHNldF9wYWdlX3ByaXZhdGVgIGluIGNvbXBhY3Rpb24sIGFkZGluZyB3YXJuaW5ncyBkdXJpbmcgaHVnZSBwYWdlIHNwbGl0dGluZywgc29tZSBpbnRlcm5hbCBwcmVwYXJhdGlvbiB3b3JrLCBhbmQgYWRkaW5nIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBQbHVzIGl0J3MgY2xlYXJpbmcgY2h1bmsgaW5mb3JtYXRpb24gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaG9zZSBhcmUgYWxsIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IG5lZWQgdG8gYmUgdGVzdGVkIHRob3JvdWdobHkuIEZ1enppbmcgaXMgdGhlIHJpZ2h0IGFwcHJvYWNoIGhlcmUgdG8gZW5zdXJlIHdlIGRvbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBtaXNzIGFueSBsYXRlbnQgYnVncy5cblxuSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzeW1ib2xzIGluIHBhcnRpY3VsYXI6IGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgLCBgcGNwdV9kZXN0cm95X2NodW5rYCwgYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLCBhbmQgYGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mYC5cblxuQWhhLCBgcGNwdV9kZXN0cm95X2NodW5rYCBpbiBgbW0vcGVyY3B1LWttLmNgIGlzIHN0YXRpYyBhbmQgb25seSBjb21waWxlZCBpZiBgQ09ORklHX05FRURfUEVSX0NQVV9LTWAgaXMgc2V0LiBTbywgZXZlbiB0aG91Z2ggSSBjYW4ndCAqZW5hYmxlKiBpdCBkaXJlY3RseSwgaXQgKmNvdWxkKiBiZSBjb21waWxlZC4gSXQncyBzdGF0aWNhbGx5IGxpbmtlZC4gQmVzdCB0byBpbmNsdWRlIGl0LCBhbmQgdGhlIGZ1enplciB3aWxsIHNpbXBseSBpZ25vcmUgaXQgaWYgaXQncyBub3QgcHJlc2VudC5cblxuVGhlIGtleSBjb25maWdzIHRvIGNvbnNpZGVyIGZvciBmdXp6aW5nIHdvdWxkIGJlIGBDT01QQUNUSU9OYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYW5kIGBERUJVR19WTWAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBERUJVR19WTWAgaXMgYSBib29sZWFuLiBZZXMsIGl0IGlzLiBQZXJmZWN0LlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHRyaWdnZXIgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwNjgsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjA1OjMwLjE0MTYwMTAxM1oiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjk0MTM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09NUEFDVElPTlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkRFQlVHX1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiZnJlZV90YWlsX3BhZ2VfcHJlcGFyZVwiLFxuICAgIFwicGNwdV9kZXN0cm95X2NodW5rXCIsXG4gICAgXCJpc29sYXRlX2ZyZWVwYWdlc19ibG9ja1wiLFxuICAgIFwiZmFzdF9pc29sYXRlX2ZyZWVwYWdlc1wiLFxuICAgIFwiY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIGZpeCBpc3N1ZXMgd2l0aCBgcGFnZS1cXHUwMDNlcHJpdmF0ZWAgbm90IGJlaW5nIHByb3Blcmx5IGNsZWFyZWQgb3IgY2hlY2tlZCBvbiB0YWlsIHBhZ2VzLiBJdCByZW1vdmVzIGBzZXRfcGFnZV9wcml2YXRlYCBpbiBjb21wYWN0aW9uLCBhZGRzIHdhcm5pbmdzIGluIGh1Z2UgbWVtb3J5IHNwbGl0dGluZyBhbmQgaW50ZXJuYWwgcHJlcCwgYW5kIGFkZHMgYSBjaGVjayBpbiBwYWdlIGFsbG9jYXRpb24uIEl0IGFsc28gY2xlYXJzIGNodW5rIGluZm8gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkb24ndCB0cmlnZ2VyIGZhbHNlIHBvc2l0aXZlcyBvciBtaXNzIGFjdHVhbCBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPTVBBQ1RJT05cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERUJVR19WTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3BsaXRfZm9saW9fdG9fb3JkZXJcIixcbiAgICBcImZyZWVfdGFpbF9wYWdlX3ByZXBhcmVcIixcbiAgICBcInBjcHVfZGVzdHJveV9jaHVua1wiLFxuICAgIFwiaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tcIixcbiAgICBcImZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNcIixcbiAgICBcImNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBmaXggaXNzdWVzIHdpdGggYHBhZ2UtXFx1MDAzZXByaXZhdGVgIG5vdCBiZWluZyBwcm9wZXJseSBjbGVhcmVkIG9yIGNoZWNrZWQgb24gdGFpbCBwYWdlcy4gSXQgcmVtb3ZlcyBgc2V0X3BhZ2VfcHJpdmF0ZWAgaW4gY29tcGFjdGlvbiwgYWRkcyB3YXJuaW5ncyBpbiBodWdlIG1lbW9yeSBzcGxpdHRpbmcgYW5kIGludGVybmFsIHByZXAsIGFuZCBhZGRzIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBJdCBhbHNvIGNsZWFycyBjaHVuayBpbmZvIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGluIHBlcmNwdS1rbS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG9uJ3QgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgb3IgbWlzcyBhY3R1YWwgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 13:51:20 +0000 UTC FinishedAt: 2026-07-03 14:05:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e031e55776cf9193b4720a253e92539ca536d224", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION", "TRANSPARENT_HUGEPAGE", "DEBUG_VM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e031e55776cf9193b4720a253e92539ca536d224", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION", "TRANSPARENT_HUGEPAGE", "DEBUG_VM" ], "series_id": "3ca04eb0-8886-4368-98a4-d961179c2d22" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__split_folio_to_order", "free_tail_page_prepare", "pcpu_destroy_chunk", "isolate_freepages_block", "fast_isolate_freepages", "compaction_alloc_noprof" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVCVUdfVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDssCiAgICAmIzM0O2ZyZWVfdGFpbF9wYWdlX3ByZXBhcmUmIzM0OywKICAgICYjMzQ7cGNwdV9kZXN0cm95X2NodW5rJiMzNDssCiAgICAmIzM0O2lzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrJiMzNDssCiAgICAmIzM0O2Zhc3RfaXNvbGF0ZV9mcmVlcGFnZXMmIzM0OywKICAgICYjMzQ7Y29tcGFjdGlvbl9hbGxvY19ub3Byb2YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBmaXggaXNzdWVzIHdpdGggYHBhZ2UtXHUwMDNlcHJpdmF0ZWAgbm90IGJlaW5nIHByb3Blcmx5IGNsZWFyZWQgb3IgY2hlY2tlZCBvbiB0YWlsIHBhZ2VzLiBJdCByZW1vdmVzIGBzZXRfcGFnZV9wcml2YXRlYCBpbiBjb21wYWN0aW9uLCBhZGRzIHdhcm5pbmdzIGluIGh1Z2UgbWVtb3J5IHNwbGl0dGluZyBhbmQgaW50ZXJuYWwgcHJlcCwgYW5kIGFkZHMgYSBjaGVjayBpbiBwYWdlIGFsbG9jYXRpb24uIEl0IGFsc28gY2xlYXJzIGNodW5rIGluZm8gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkb24mIzM5O3QgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgb3IgbWlzcyBhY3R1YWwgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJmZmY5ODU3NDZkNDc0Mjc0YzEwODVlNTg0OWFhNTJjOWMwYWRkODBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDE0OjAxOjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2NvbXBhY3Rpb24uYyBiL21tL2NvbXBhY3Rpb24uY1xuaW5kZXggZjA4NzY1YWRlMDE0Y2UuLjlmNDIwNDg1M2FmZDYyIDEwMDY0NFxuLS0tIGEvbW0vY29tcGFjdGlvbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9jb21wYWN0aW9uLmNcbkBAIC02NDQsNyAmIzQzOzY0NCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLFxuIFx0XHRpc29sYXRlZCA9IF9faXNvbGF0ZV9mcmVlX3BhZ2UocGFnZSwgb3JkZXIpO1xuIFx0XHRpZiAoIWlzb2xhdGVkKVxuIFx0XHRcdGJyZWFrO1xuLVx0XHRzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIG9yZGVyKTtcbiBcbiBcdFx0bnJfc2Nhbm5lZCAmIzQzOz0gaXNvbGF0ZWQgLSAxO1xuIFx0XHR0b3RhbF9pc29sYXRlZCAmIzQzOz0gaXNvbGF0ZWQ7XG5AQCAtMTYxNyw3ICYjNDM7MTYxNiw2IEBAIHN0YXRpYyB2b2lkIGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXMoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MpXG4gXHRcdC8qIElzb2xhdGUgdGhlIHBhZ2UgaWYgYXZhaWxhYmxlICovXG4gXHRcdGlmIChwYWdlKSB7XG4gXHRcdFx0aWYgKF9faXNvbGF0ZV9mcmVlX3BhZ2UocGFnZSwgb3JkZXIpKSB7XG4tXHRcdFx0XHRzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIG9yZGVyKTtcbiBcdFx0XHRcdG5yX2lzb2xhdGVkID0gMSBcdTAwM2NcdTAwM2Mgb3JkZXI7XG4gXHRcdFx0XHRucl9zY2FubmVkICYjNDM7PSBucl9pc29sYXRlZCAtIDE7XG4gXHRcdFx0XHR0b3RhbF9pc29sYXRlZCAmIzQzOz0gbnJfaXNvbGF0ZWQ7XG5AQCAtMTg0Niw3ICYjNDM7MTg0NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgZm9saW8gKmNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mKHN0cnVjdCBmb2xpbyAqc3JjLCB1bnNpZ25lZCBsb25nIGRhXG4gXHRcdHNpemUgXHUwMDNlXHUwMDNlPSAxO1xuIFxuIFx0XHRsaXN0X2FkZChcdTAwMjZmcmVlcGFnZVtzaXplXS5scnUsIFx1MDAyNmNjLVx1MDAzZWZyZWVwYWdlc1tzdGFydF9vcmRlcl0pO1xuLVx0XHRzZXRfcGFnZV9wcml2YXRlKFx1MDAyNmZyZWVwYWdlW3NpemVdLCBzdGFydF9vcmRlcik7XG4gXHR9XG4gXHRkc3QgPSAoc3RydWN0IGZvbGlvICopZnJlZXBhZ2U7XG4gXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcbmluZGV4IGJkZDg2MzU5MjJmOTZkLi4wNmQwNjcxY2ZmODk5MCAxMDA2NDRcbi0tLSBhL21tL2h1Z2VfbWVtb3J5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2VfbWVtb3J5LmNcbkBAIC0zNTkxLDYgJiM0MzszNTkxLDEzIEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbiBcdFx0bmV3X2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0XHRuZXdfZm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleCAmIzQzOyBpO1xuIFxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIHBhZ2UtXHUwMDNlcHJpdmF0ZSBzaG91bGQgbm90IGJlIHNldCBpbiB0YWlsIHBhZ2VzLiBXYXJuIG9uY2VcbiYjNDM7XHRcdCAqIGlmIHByaXZhdGUgaXMgdW5leHBlY3RlZGx5IHNldC4gRG8gaXQgYmVmb3JlIHN3YXAudmFsIGFzc2lnbm1lbnRcbiYjNDM7XHRcdCAqIHNpbmNlIHByaXZhdGUgb3ZlcmxhcHMgd2l0aCBzd2FwLnZhbC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0Vk1fV0FSTl9PTl9PTkNFX1BBR0UobmV3X2ZvbGlvLVx1MDAzZXByaXZhdGUsIG5ld19oZWFkKTtcbiYjNDM7XG4gXHRcdGlmIChmb2xpb190ZXN0X3N3YXBjYWNoZShmb2xpbykpXG4gXHRcdFx0bmV3X2ZvbGlvLVx1MDAzZXN3YXAudmFsID0gZm9saW8tXHUwMDNlc3dhcC52YWwgJiM0MzsgaTtcbiBcbmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaFxuaW5kZXggZmE0ZmI2OTQ0NGVjZGMuLmZiZDlmYjg0MzQxYmM3IDEwMDY0NFxuLS0tIGEvbW0vaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaW50ZXJuYWwuaFxuQEAgLTkwMiw3ICYjNDM7OTAyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHByZXBfY29tcG91bmRfdGFpbChzdHJ1Y3QgcGFnZSAqdGFpbCxcbiB7XG4gXHR0YWlsLVx1MDAzZW1hcHBpbmcgPSBUQUlMX01BUFBJTkc7XG4gXHRzZXRfY29tcG91bmRfaGVhZCh0YWlsLCBoZWFkLCBvcmRlcik7XG4tXHRzZXRfcGFnZV9wcml2YXRlKHRhaWwsIDApO1xuJiM0MztcdFZNX1dBUk5fT05fT05DRSh0YWlsLVx1MDAzZXByaXZhdGUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9jb21wb3VuZF90YWlsKHN0cnVjdCBwYWdlICp0YWlsLFxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xuaW5kZXggNzYyZDliNmJjNzkyZjEuLjcyM2E1MmRmYzgwZjZkIDEwMDY0NFxuLS0tIGEvbW0vcGFnZV9hbGxvYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmNcbkBAIC0xMzc2LDE1ICYjNDM7MTM3NiwyMiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gI2VuZGlmXG4gXHRcdH1cbiBcdFx0Zm9yIChpID0gMTsgaSBcdTAwM2MgKDEgXHUwMDNjXHUwMDNjIG9yZGVyKTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0c3RydWN0IHBhZ2UgKnRhaWxfcGFnZSA9IHBhZ2UgJiM0MzsgaTtcbiYjNDM7XG4gXHRcdFx0aWYgKGNvbXBvdW5kKVxuLVx0XHRcdFx0YmFkICYjNDM7PSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHBhZ2UgJiM0MzsgaSk7XG4mIzQzO1x0XHRcdFx0YmFkICYjNDM7PSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XG4gXHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xuLVx0XHRcdFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSAmIzQzOyBpKSkge1xuJiM0MztcdFx0XHRcdGlmIChmcmVlX3BhZ2VfaXNfYmFkKHRhaWxfcGFnZSkpIHtcbiBcdFx0XHRcdFx0YmFkJiM0MzsmIzQzOztcbiBcdFx0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuLVx0XHRcdChwYWdlICYjNDM7IGkpLVx1MDAzZWZsYWdzLmYgXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xuJiM0MztcdFx0XHR0YWlsX3BhZ2UtXHUwMDNlZmxhZ3MuZiBcdTAwMjY9IH5QQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVA7XG4mIzQzO1x0XHRcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkgXHUwMDI2XHUwMDI2IHRhaWxfcGFnZS1cdTAwM2Vwcml2YXRlKSB7XG4mIzQzO1x0XHRcdFx0YmFkX3BhZ2UodGFpbF9wYWdlLCBcJiMzNDtub256ZXJvIHByaXZhdGVcJiMzNDspO1xuJiM0MztcdFx0XHRcdGJhZCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fVxuIFx0fVxuIFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHtcbmRpZmYgLS1naXQgYS9tbS9wZXJjcHUta20uYyBiL21tL3BlcmNwdS1rbS5jXG5pbmRleCA0ZWZhNzRhNDk1Y2I2Yi4uN2ZmZTg0YWRhZGI5ZDkgMTAwNjQ0XG4tLS0gYS9tbS9wZXJjcHUta20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGVyY3B1LWttLmNcbkBAIC05NCw4ICYjNDM7OTQsMTUgQEAgc3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcbiBcdHBjcHVfc3RhdHNfY2h1bmtfZGVhbGxvYygpO1xuIFx0dHJhY2VfcGVyY3B1X2Rlc3Ryb3lfY2h1bmsoY2h1bmstXHUwMDNlYmFzZV9hZGRyKTtcbiBcbi1cdGlmIChjaHVuay1cdTAwM2VkYXRhKVxuJiM0MztcdGlmIChjaHVuay1cdTAwM2VkYXRhKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgcGFnZSAqcGFnZXMgPSAoc3RydWN0IHBhZ2UgKiljaHVuay1cdTAwM2VkYXRhO1xuJiM0MztcdFx0aW50IGk7XG4mIzQzO1xuJiM0MztcdFx0LyogY2xlYXIgY2h1bmsgaW5mbyBmcm9tIGVhY2ggcGFnZSBiZWZvcmUgZnJlZSB0aGVtICovXG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9wYWdlczsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdHBjcHVfc2V0X3BhZ2VfY2h1bmsocGFnZXMgJiM0MzsgaSwgTlVMTCk7XG4gXHRcdF9fZnJlZV9wYWdlcyhjaHVuay1cdTAwM2VkYXRhLCBvcmRlcl9iYXNlXzIobnJfcGFnZXMpKTtcbiYjNDM7XHR9XG4gXHRwY3B1X2ZyZWVfY2h1bmsoY2h1bmspO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT01QQUNUSU9OJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFQlVHX1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zcGxpdF9mb2xpb190b19vcmRlciYjMzQ7LAogICAgJiMzNDtmcmVlX3RhaWxfcGFnZV9wcmVwYXJlJiMzNDssCiAgICAmIzM0O3BjcHVfZGVzdHJveV9jaHVuayYjMzQ7LAogICAgJiMzNDtpc29sYXRlX2ZyZWVwYWdlc19ibG9jayYjMzQ7LAogICAgJiMzNDtmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzJiMzNDssCiAgICAmIzM0O2NvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdG8gZml4IGlzc3VlcyB3aXRoIGBwYWdlLVx1MDAzZXByaXZhdGVgIG5vdCBiZWluZyBwcm9wZXJseSBjbGVhcmVkIG9yIGNoZWNrZWQgb24gdGFpbCBwYWdlcy4gSXQgcmVtb3ZlcyBgc2V0X3BhZ2VfcHJpdmF0ZWAgaW4gY29tcGFjdGlvbiwgYWRkcyB3YXJuaW5ncyBpbiBodWdlIG1lbW9yeSBzcGxpdHRpbmcgYW5kIGludGVybmFsIHByZXAsIGFuZCBhZGRzIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBJdCBhbHNvIGNsZWFycyBjaHVuayBpbmZvIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGluIHBlcmNwdS1rbS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG9uJiMzOTt0IHRyaWdnZXIgZmFsc2UgcG9zaXRpdmVzIG9yIG1pc3MgYWN0dWFsIGJ1Z3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJmZmY5ODU3NDZkNDc0Mjc0YzEwODVlNTg0OWFhNTJjOWMwYWRkODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzIDE0OjAxOjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jCmluZGV4IGYwODc2NWFkZTAxNGNlLi45ZjQyMDQ4NTNhZmQ2MiAxMDA2NDQKLS0tIGEvbW0vY29tcGFjdGlvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2NvbXBhY3Rpb24uYwpAQCAtNjQ0LDcgJiM0Mzs2NDQsNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywKIAkJaXNvbGF0ZWQgPSBfX2lzb2xhdGVfZnJlZV9wYWdlKHBhZ2UsIG9yZGVyKTsKIAkJaWYgKCFpc29sYXRlZCkKIAkJCWJyZWFrOwotCQlzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIG9yZGVyKTsKIAogCQlucl9zY2FubmVkICYjNDM7PSBpc29sYXRlZCAtIDE7CiAJCXRvdGFsX2lzb2xhdGVkICYjNDM7PSBpc29sYXRlZDsKQEAgLTE2MTcsNyAmIzQzOzE2MTYsNiBAQCBzdGF0aWMgdm9pZCBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKQogCQkvKiBJc29sYXRlIHRoZSBwYWdlIGlmIGF2YWlsYWJsZSAqLwogCQlpZiAocGFnZSkgewogCQkJaWYgKF9faXNvbGF0ZV9mcmVlX3BhZ2UocGFnZSwgb3JkZXIpKSB7Ci0JCQkJc2V0X3BhZ2VfcHJpdmF0ZShwYWdlLCBvcmRlcik7CiAJCQkJbnJfaXNvbGF0ZWQgPSAxICZsdDsmbHQ7IG9yZGVyOwogCQkJCW5yX3NjYW5uZWQgJiM0Mzs9IG5yX2lzb2xhdGVkIC0gMTsKIAkJCQl0b3RhbF9pc29sYXRlZCAmIzQzOz0gbnJfaXNvbGF0ZWQ7CkBAIC0xODQ2LDcgJiM0MzsxODQ0LDYgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqY29tcGFjdGlvbl9hbGxvY19ub3Byb2Yoc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGEKIAkJc2l6ZSAmZ3Q7Jmd0Oz0gMTsKIAogCQlsaXN0X2FkZCgmYW1wO2ZyZWVwYWdlW3NpemVdLmxydSwgJmFtcDtjYy0mZ3Q7ZnJlZXBhZ2VzW3N0YXJ0X29yZGVyXSk7Ci0JCXNldF9wYWdlX3ByaXZhdGUoJmFtcDtmcmVlcGFnZVtzaXplXSwgc3RhcnRfb3JkZXIpOwogCX0KIAlkc3QgPSAoc3RydWN0IGZvbGlvICopZnJlZXBhZ2U7CiAKZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jCmluZGV4IGJkZDg2MzU5MjJmOTZkLi4wNmQwNjcxY2ZmODk5MCAxMDA2NDQKLS0tIGEvbW0vaHVnZV9tZW1vcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jCkBAIC0zNTkxLDYgJiM0MzszNTkxLDEzIEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlciwKIAkJbmV3X2ZvbGlvLSZndDttYXBwaW5nID0gZm9saW8tJmd0O21hcHBpbmc7CiAJCW5ld19mb2xpby0mZ3Q7aW5kZXggPSBmb2xpby0mZ3Q7aW5kZXggJiM0MzsgaTsKIAomIzQzOwkJLyoKJiM0MzsJCSAqIHBhZ2UtJmd0O3ByaXZhdGUgc2hvdWxkIG5vdCBiZSBzZXQgaW4gdGFpbCBwYWdlcy4gV2FybiBvbmNlCiYjNDM7CQkgKiBpZiBwcml2YXRlIGlzIHVuZXhwZWN0ZWRseSBzZXQuIERvIGl0IGJlZm9yZSBzd2FwLnZhbCBhc3NpZ25tZW50CiYjNDM7CQkgKiBzaW5jZSBwcml2YXRlIG92ZXJsYXBzIHdpdGggc3dhcC52YWwuCiYjNDM7CQkgKi8KJiM0MzsJCVZNX1dBUk5fT05fT05DRV9QQUdFKG5ld19mb2xpby0mZ3Q7cHJpdmF0ZSwgbmV3X2hlYWQpOwomIzQzOwogCQlpZiAoZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKQogCQkJbmV3X2ZvbGlvLSZndDtzd2FwLnZhbCA9IGZvbGlvLSZndDtzd2FwLnZhbCAmIzQzOyBpOwogCmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaAppbmRleCBmYTRmYjY5NDQ0ZWNkYy4uZmJkOWZiODQzNDFiYzcgMTAwNjQ0Ci0tLSBhL21tL2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvbW0vaW50ZXJuYWwuaApAQCAtOTAyLDcgJiM0Mzs5MDIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJlcF9jb21wb3VuZF90YWlsKHN0cnVjdCBwYWdlICp0YWlsLAogewogCXRhaWwtJmd0O21hcHBpbmcgPSBUQUlMX01BUFBJTkc7CiAJc2V0X2NvbXBvdW5kX2hlYWQodGFpbCwgaGVhZCwgb3JkZXIpOwotCXNldF9wYWdlX3ByaXZhdGUodGFpbCwgMCk7CiYjNDM7CVZNX1dBUk5fT05fT05DRSh0YWlsLSZndDtwcml2YXRlKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGluaXRfY29tcG91bmRfdGFpbChzdHJ1Y3QgcGFnZSAqdGFpbCwKZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuYwppbmRleCA3NjJkOWI2YmM3OTJmMS4uNzIzYTUyZGZjODBmNmQgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmMKQEAgLTEzNzYsMTUgJiM0MzsxMzc2LDIyIEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSwKICNlbmRpZgogCQl9CiAJCWZvciAoaSA9IDE7IGkgJmx0OyAoMSAmbHQ7Jmx0OyBvcmRlcik7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJc3RydWN0IHBhZ2UgKnRhaWxfcGFnZSA9IHBhZ2UgJiM0MzsgaTsKJiM0MzsKIAkJCWlmIChjb21wb3VuZCkKLQkJCQliYWQgJiM0Mzs9IGZyZWVfdGFpbF9wYWdlX3ByZXBhcmUocGFnZSwgcGFnZSAmIzQzOyBpKTsKJiM0MzsJCQkJYmFkICYjNDM7PSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7CiAJCQlpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7Ci0JCQkJaWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSAmIzQzOyBpKSkgewomIzQzOwkJCQlpZiAoZnJlZV9wYWdlX2lzX2JhZCh0YWlsX3BhZ2UpKSB7CiAJCQkJCWJhZCYjNDM7JiM0Mzs7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAkJCX0KLQkJCShwYWdlICYjNDM7IGkpLSZndDtmbGFncy5mICZhbXA7PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQOwomIzQzOwkJCXRhaWxfcGFnZS0mZ3Q7ZmxhZ3MuZiAmYW1wOz0gflBBR0VfRkxBR1NfQ0hFQ0tfQVRfUFJFUDsKJiM0MzsJCQlpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpICZhbXA7JmFtcDsgdGFpbF9wYWdlLSZndDtwcml2YXRlKSB7CiYjNDM7CQkJCWJhZF9wYWdlKHRhaWxfcGFnZSwgJiMzNDtub256ZXJvIHByaXZhdGUmIzM0Oyk7CiYjNDM7CQkJCWJhZCYjNDM7JiM0Mzs7CiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwkJCX0KIAkJfQogCX0KIAlpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSkgewpkaWZmIC0tZ2l0IGEvbW0vcGVyY3B1LWttLmMgYi9tbS9wZXJjcHUta20uYwppbmRleCA0ZWZhNzRhNDk1Y2I2Yi4uN2ZmZTg0YWRhZGI5ZDkgMTAwNjQ0Ci0tLSBhL21tL3BlcmNwdS1rbS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3BlcmNwdS1rbS5jCkBAIC05NCw4ICYjNDM7OTQsMTUgQEAgc3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaykKIAlwY3B1X3N0YXRzX2NodW5rX2RlYWxsb2MoKTsKIAl0cmFjZV9wZXJjcHVfZGVzdHJveV9jaHVuayhjaHVuay0mZ3Q7YmFzZV9hZGRyKTsKIAotCWlmIChjaHVuay0mZ3Q7ZGF0YSkKJiM0MzsJaWYgKGNodW5rLSZndDtkYXRhKSB7CiYjNDM7CQlzdHJ1Y3QgcGFnZSAqcGFnZXMgPSAoc3RydWN0IHBhZ2UgKiljaHVuay0mZ3Q7ZGF0YTsKJiM0MzsJCWludCBpOwomIzQzOwomIzQzOwkJLyogY2xlYXIgY2h1bmsgaW5mbyBmcm9tIGVhY2ggcGFnZSBiZWZvcmUgZnJlZSB0aGVtICovCiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgbnJfcGFnZXM7IGkmIzQzOyYjNDM7KQomIzQzOwkJCXBjcHVfc2V0X3BhZ2VfY2h1bmsocGFnZXMgJiM0MzsgaSwgTlVMTCk7CiAJCV9fZnJlZV9wYWdlcyhjaHVuay0mZ3Q7ZGF0YSwgb3JkZXJfYmFzZV8yKG5yX3BhZ2VzKSk7CiYjNDM7CX0KIAlwY3B1X2ZyZWVfY2h1bmsoY2h1bmspOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMzIKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBjbGVhcmx5IG1lc3Npbmcgd2l0aCBzb21lIGNyaXRpY2FsIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIEl0IHRvdWNoZXMgc2V2ZXJhbCBrZXkgZmlsZXM6IGBtbS9jb21wYWN0aW9uLmNgLCBgbW0vaHVnZV9tZW1vcnkuY2AsIGBtbS9pbnRlcm5hbC5oYCwgYG1tL3BhZ2VfYWxsb2MuY2AsIGFuZCBgbW0vcGVyY3B1LWttLmNgLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBob3cgbWVtb3J5IGlzIGFsbG9jYXRlZCwgZnJlZWQsIGFuZCBtYW5hZ2VkIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEkgc2VlIHRoZXkmIzM5O3ZlIHJlbW92ZWQgYHNldF9wYWdlX3ByaXZhdGUocGFnZSwgb3JkZXIpYCBpbiBgbW0vY29tcGFjdGlvbi5jYCwgYWRkZWQgYSBgVk1fV0FSTl9PTl9PTkNFX1BBR0VgIGNoZWNrIGluIGBtbS9odWdlX21lbW9yeS5jYCwgYW5kIHJlcGxhY2VkIHNvbWUgYHNldF9wYWdlX3ByaXZhdGVgIGNhbGxzIHdpdGggYFZNX1dBUk5fT05fT05DRWAgYXNzZXJ0aW9ucyBpbiBgbW0vaW50ZXJuYWwuaGAuIFRoZXJlJiMzOTtzIGFsc28gYSBuZXcgYHRhaWxfcGFnZS0mZ3Q7cHJpdmF0ZWAgY2hlY2sgaW4gYG1tL3BhZ2VfYWxsb2MuY2AgYW5kIHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgY2xlYXJpbmcgY2h1bmsgaW5mb3JtYXRpb24gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gYG1tL3BlcmNwdS1rbS5jYC4KCkdpdmVuIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCBteSBndXQgc2F5cyB0aGlzIGRlZmluaXRlbHkgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIEkgbmVlZCB0byBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGF0IEkgY291bGQgdGFyZ2V0LiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0aGF0IGZ1bmN0aW9ucyBsaWtlIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYF9fZnJlZV9wYWdlc19wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AsIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAgYXJlIHByb2JhYmx5IGdvb2QgY2FuZGlkYXRlcyB0byBmb2N1cyBvbi4gVGhlc2Ugc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciB0cmlnZ2VyaW5nIGludGVyZXN0aW5nIG1lbW9yeSBtYW5hZ2VtZW50IHNjZW5hcmlvcy4KCkkmIzM5O20gYWxzbyBnb2luZyB0byBjaGVjayB3aGljaCBjb25maWd1cmF0aW9ucyBlbmFibGUgdGhlc2Ugc2VjdGlvbnMgb2YgY29kZS4gU28sIGBtbS9jb21wYWN0aW9uLmNgIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19DT01QQUNUSU9OYCwgYG1tL2h1Z2VfbWVtb3J5LmNgIGRlcGVuZHMgb24gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGFuZCBgbW0vcGVyY3B1LWttLmNgIG5lZWRzIGBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNYC4gSSYjMzk7bGwgYWxzbyBuZWVkIHRvIGRpdmUgaW50byB0aGUgdXNhZ2Ugb2YgYG1tL3BlcmNwdS1rbS5jYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19ORUVEX1BFUl9DUFVfS00mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL3Rlc3Rfdm1hbGxvYy5jPTMxNj1wY3B1X2FsbG9jX3Rlc3Qodm9pZClcbi0tXG5saWIvdGVzdF92bWFsbG9jLmMtMzE4LVx0aW50IHJ2ID0gMDtcbmxpYi90ZXN0X3ZtYWxsb2MuYzozMTk6I2lmbmRlZiBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNXG5saWIvdGVzdF92bWFsbG9jLmMtMzIwLVx0dm9pZCBfX3BlcmNwdSAqKnBjcHU7XG4tLVxubW0vcGVyY3B1LWttLmMtMTItICpcbm1tL3BlcmNwdS1rbS5jOjEzOiAqIC0gZGVmaW5lIENPTkZJR19ORUVEX1BFUl9DUFVfS00gZnJvbSB0aGUgYXJjaCBLY29uZmlnLlxubW0vcGVyY3B1LWttLmMtMTQtICpcbi0tXG5tbS9wZXJjcHUuYz0xNTc2PXN0YXRpYyBpbnQgX19pbml0IHBjcHVfdmVyaWZ5X2FsbG9jX2luZm8oY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWkpO1xubW0vcGVyY3B1LmMtMTU3Ny1cbm1tL3BlcmNwdS5jOjE1Nzg6I2lmZGVmIENPTkZJR19ORUVEX1BFUl9DUFVfS01cbm1tL3BlcmNwdS5jLTE1NzktI2luY2x1ZGUgXCYjMzQ7cGVyY3B1LWttLmNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjU2CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBgQ09ORklHX05FRURfUEVSX0NQVV9LTWAgYW5kIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIHNvIGBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNYCBpcyBhbiBhcmNoIGNvbmZpZywgbm90IHNvbWV0aGluZyBJIHNlZSBhbGwgdGhlIHRpbWUsIGJ1dCBJIGtub3cgaXQmIzM5O3MgdXN1YWxseSBzcGVjaWZpYyB0byBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZXMuIFRoaW5rIG02OGssIG1pY3JvYmxhemUsIG5pb3MyLCB0aGF0IHNvcnQgb2YgdGhpbmcuLi4gb3Igc3lzdGVtcyB3aXRob3V0IGZ1bGwgbWVtb3J5IG1hbmFnZW1lbnQgdW5pdHMgKG5vbW11KS4gSXQmIzM5O3MgZ290IG1lIGN1cmlvdXMsIHRob3VnaC4KCkkgc2hvdWxkIHByb2JhYmx5IGRpdmUgaW50byBob3cgdGhpcyBpbXBhY3RzIHRoZSBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQuIENvbXBhY3Rpb24gaXMgd2hlcmUgSSYjMzk7ZCBzdGFydC4gQW5kIGh1Z2VwYWdlcyEgYG1tL2NvbXBhY3Rpb24uY2AgYW5kIGBtbS9odWdlX21lbW9yeS5jYCBzZWVtIGxpa2UgdGhlIGxpa2VseSBwbGFjZXMgdGhpcyBjb25maWcgd291bGQgaGF2ZSBhbiBpbXBhY3QuIExldCBtZSBjaGVjayB0aGUgY29kZSB0aGVyZS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBwZXItQ1BVIGttYWxsb2Mgc3R1ZmYgaXMgaG9va2VkIGluLi4uIGFuZCBob3cgdGhlIGFyY2hpdGVjdHVyZXMgdGhhdCAqbmVlZCogdGhpcyBzZXR0aW5nIGludGVyYWN0IHdpdGggY29tcGFjdGlvbiBhbmQgaHVnZSBwYWdlIGFsbG9jYXRpb24uIFNvdW5kcyBsaWtlIGEgZnVuIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0NPTVBBQ1RJT04mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0PTExND1jb21wYWN0X21lbW9yeVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdC0xMTYtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3Q6MTE3OkF2YWlsYWJsZSBvbmx5IHdoZW4gQ09ORklHX0NPTVBBQ1RJT04gaXMgc2V0LiBXaGVuIDEgaXMgd3JpdHRlbiB0byB0aGUgZmlsZSxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdC0xMTgtYWxsIHpvbmVzIGFyZSBjb21wYWN0ZWQgc3VjaCB0aGF0IGZyZWUgbWVtb3J5IGlzIGF2YWlsYWJsZSBpbiBjb250aWd1b3VzXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0PTE0NT1jb21wYWN0X3VuZXZpY3RhYmxlX2FsbG93ZWRcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3QtMTQ3LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0OjE0ODpBdmFpbGFibGUgb25seSB3aGVuIENPTkZJR19DT01QQUNUSU9OIGlzIHNldC4gV2hlbiBzZXQgdG8gMSwgY29tcGFjdGlvbiBpc1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0LTE0OS1hbGxvd2VkIHRvIGV4YW1pbmUgdGhlIHVuZXZpY3RhYmxlIGxydSAobWxvY2tlZCBwYWdlcykgZm9yIHBhZ2VzIHRvIGNvbXBhY3QuXG4tLVxuYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9Mjc0PWV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTtcbmFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3NS1cbmFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjI3NjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3Ny0jZGVmaW5lIF9fSEFWRV9BUkNIX1BURVBfR0VUX0FORF9DTEVBUlxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAxX2RlZmNvbmZpZz0yNz1DT05GSUdfUFJFRU1QVD15XG5hcmNoL2FyYy9jb25maWdzL2F4czEwMV9kZWZjb25maWc6Mjg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL2F4czEwMV9kZWZjb25maWctMjktQ09ORklHX05FVD15XG4tLVxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnPTI2PUNPTkZJR19QUkVFTVBUPXlcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX2RlZmNvbmZpZzoyNzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX2RlZmNvbmZpZy0yOC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnPTI2PUNPTkZJR19QUkVFTVBUPXlcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX3NtcF9kZWZjb25maWc6Mjc6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnLTI4LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvaGFwc19oc19kZWZjb25maWc9MTg9Q09ORklHX01PRFVMRVM9eVxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZy0xOS0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfZGVmY29uZmlnOjIwOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZy0yMS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZz0yMT1DT05GSUdfTU9EVUxFUz15XG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZy0yMi0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZzoyMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvaGFwc19oc19zbXBfZGVmY29uZmlnLTI0LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc9MjQ9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9hcmMvY29uZmlncy9oc2RrX2RlZmNvbmZpZzoyNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWctMjYtQ09ORklHX05FVD15XG4tLVxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWc9MjI9Q09ORklHX01PRFVMRVM9eVxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWctMjMtIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldFxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWc6MjQ6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL25zaW1fNzAwX2RlZmNvbmZpZy0yNS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2RlZmNvbmZpZz0yMj1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cJiMzNDtuc2ltb3NjaVwmIzM0O1xuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9kZWZjb25maWc6MjM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2RlZmNvbmZpZy0yNC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX2RlZmNvbmZpZz0yMj1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cJiMzNDtuc2ltb3NjaV9oc1wmIzM0O1xuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19kZWZjb25maWc6MjM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX2RlZmNvbmZpZy0yNC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWc9MjA9Q09ORklHX1BSRUVNUFQ9eVxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19zbXBfZGVmY29uZmlnOjIxOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19zbXBfZGVmY29uZmlnLTIyLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvdGIxMHhfZGVmY29uZmlnPTMwPUNPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWT15XG5hcmNoL2FyYy9jb25maWdzL3RiMTB4X2RlZmNvbmZpZzozMTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvdGIxMHhfZGVmY29uZmlnLTMyLUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZz0zNj1DT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRD15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWctMzktQ09ORklHX05FVD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTQzPUNPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy00NC0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo0NTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy00Ni1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y3X2RlZmNvbmZpZz0yNT1DT05GSUdfTU9EVUxFX1VOTE9BRD15XG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y3X2RlZmNvbmZpZzoyNjojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjdfZGVmY29uZmlnLTI3LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZz00Nz1DT05GSUdfU0xVQl9USU5ZPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZzo0ODojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy00OS1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NhbWE3X2RlZmNvbmZpZz0zOT1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NhbWE3X2RlZmNvbmZpZy00Mi0jIENPTkZJR19TV0FQIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTdfZGVmY29uZmlnOjQzOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctNDQtQ09ORklHX0NNQT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTQ0PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6NDU6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNDYtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz00MD1DT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZzo0MTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNDItQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnPTQ3PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc6NDg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNDktQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnPTM3PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWctMzktQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTM5PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc6NDA6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNDEtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZz0zOD1DT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzozOTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctNDAtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTU4PUNPTkZJR19CSU5GTVRfTUlTQz1tXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6NTk6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctNjAtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc9MzY9Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnOjM3OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctMzgtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc9Mzc9Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnOjM4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctMzktQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz0zOD1DT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZzozOTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWctNDAtQ09ORklHX0RNQVBPT0xfVEVTVD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc9MzQ9Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnOjM1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctMzYtQ09ORklHX1VTRVJGQVVMVEZEPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc9MzQ9Q09ORklHX0JJTkZNVF9NSVNDPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZzozNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZy0zNi1DT05GSUdfRE1BUE9PTF9URVNUPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWc9MjM9Q09ORklHX01PRFVMRV9VTkxPQUQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnLTI0LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2F0aDI1X2RlZmNvbmZpZzoyNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2F0aDI1X2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZz0yOD1DT05GSUdfTU9EVUxFUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWctMzAtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9jaTIwX2RlZmNvbmZpZzozMTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2NpMjBfZGVmY29uZmlnLTMyLUNPTkZJR19DTUE9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnPTI3PUNPTkZJR19NT0RVTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnLTI4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnOjI5OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWctMzAtQ09ORklHX0NNQT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc9Mjc9Q09ORklHX01PRFVMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWctMjgtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc6Mjk6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9jdTE4MzAtbmVvX2RlZmNvbmZpZy0zMC1DT05GSUdfQ01BPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZz0zMD1DT05GSUdfTUlQU19DTURMSU5FX0ZST01fQk9PVExPQURFUj15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3Mvb21lZ2EycF9kZWZjb25maWctMzItIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3Mvb21lZ2EycF9kZWZjb25maWc6MzM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZy0zNC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnPTIzPUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZy0yNC0jIENPTkZJR19DT1JFRFVNUCBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnOjI1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy92b2NvcmUyX2RlZmNvbmZpZz0zMD1DT05GSUdfTUlQU19DTURMSU5FX0ZST01fQk9PVExPQURFUj15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWctMzItIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWc6MzM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL21pcHMvY29uZmlncy92b2NvcmUyX2RlZmNvbmZpZy0zNC1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZz0yNT1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnLTI2LSMgQ09ORklHX0NPUkVEVU1QIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnOjI3OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MveHdheV9kZWZjb25maWctMjgtQ09ORklHX05FVD15XG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0zNj1DT05GSUdfQklORk1UX01JU0M9bVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0zNy0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTM5LUNPTkZJR19NRU1PUllfRkFJTFVSRT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2FrZWJvbm9fZGVmY29uZmlnPTE5PUNPTkZJR19JUlFfQUxMX0NQVVM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2FrZWJvbm9fZGVmY29uZmlnOjIwOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2FrZWJvbm9fZGVmY29uZmlnLTIxLSMgQ09ORklHX1NVU1BFTkQgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21pY3Jvd2F0dF9kZWZjb25maWc9MzA9Q09ORklHX1BQQ180S19QQUdFUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWljcm93YXR0X2RlZmNvbmZpZy0zMy0jIENPTkZJR19DT1JFRFVNUCBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9taWNyb3dhdHRfZGVmY29uZmlnOjM0OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbWljcm93YXR0X2RlZmNvbmZpZy0zNS0jIENPTkZJR19NSUdSQVRJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZz0yMz1DT05GSUdfQ01ETElORT1cJiMzNDtjb25zb2xlPXR0eVMwLDk2MDAgaXA9ZGhjcCByb290PS9kZXYvbmZzXCYjMzQ7XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjQtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnOjI1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnLTI2LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc9MzU9Q09ORklHX0JJTkZNVF9NSVNDPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTM3LSMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQIGlzIG5vdCBzZXRcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTM5LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnPTU2PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTU4LSMgQ09ORklHX01RX0lPU0NIRURfS1lCRVIgaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc6NTk6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZy02MC0jIENPTkZJR19NSUdSQVRJT04gaXMgbm90IHNldFxuLS1cbmFyY2gvdW0vY29uZmlncy9pMzg2X2RlZmNvbmZpZzoxOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnLTItQ09ORklHX0JJTkZNVF9NSVNDPW1cbi0tXG5hcmNoL3VtL2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoxOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMi1DT05GSUdfQklORk1UX01JU0M9bVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTMzPUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVwmIzM0O2tjNzA1XCYjMzQ7XG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzozNDojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnLTM1LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZz0zNz1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cJiMzNDtjc3BcJiMzNDtcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY2FkZW5jZV9jc3BfZGVmY29uZmlnOjM4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy9jYWRlbmNlX2NzcF9kZWZjb25maWctMzktQ09ORklHX1hURlBHQV9MQ0Q9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9MzI9Q09ORklHX0JVSUxUSU5fRFRCX05BTUU9XCYjMzQ7a2M3MDVcJiMzNDtcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc6MzM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnLTM0LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWc9MzY9Q09ORklHX0JVSUxUSU5fRFRCX05BTUU9XCYjMzQ7bHgyMDBteFwmIzM0O1xuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjM3OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnLTM4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL3ZpcnRfZGVmY29uZmlnPTMxPUNPTkZJR19NT0RVTEVfVU5MT0FEPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWctMzItIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZzozMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gveHRlbnNhL2NvbmZpZ3MvdmlydF9kZWZjb25maWctMzQtQ09ORklHX05FVD15XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnPTMyPUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVwmIzM0O2tjNzA1XCYjMzQ7XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnLTM0LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZzozNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZy0zNi1DT05GSUdfTkVUPXlcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaD04Mz1zdGF0aWMgaW5saW5lIGludCBjdXJyZW50X2lzX2tjb21wYWN0ZCh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTg3LVxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmg6ODg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC04OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaD0xMjk9c3RhdGljIGlubGluZSB2b2lkIHdha2V1cF9rY29tcGFjdGQocGdfZGF0YV90ICpwZ2RhdCxcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzMtXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMzQ6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzUtXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaD0xMzY9c3RydWN0IG5vZGU7XG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDoxMzc6I2lmIGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TWVNGUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzgtZXh0ZXJuIGludCBjb21wYWN0aW9uX3JlZ2lzdGVyX25vZGUoc3RydWN0IG5vZGUgKm5vZGUpO1xuLS1cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTE0OD1zdGF0aWMgaW5saW5lIHZvaWQgY29tcGFjdGlvbl91bnJlZ2lzdGVyX25vZGUoc3RydWN0IG5vZGUgKm5vZGUpXG4tLVxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTUwLX1cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oOjE1MTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gXHUwMDI2XHUwMDI2IENPTkZJR19TWVNGUyBcdTAwMjZcdTAwMjYgQ09ORklHX05VTUEgKi9cbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oLTE1Mi1cbi0tXG5pbmNsdWRlL2xpbnV4L2dmcC5oPTQzND1zdGF0aWMgaW5saW5lIGJvb2wgZ2ZwX2NvbXBhY3Rpb25fYWxsb3dlZChnZnBfdCBnZnBfbWFzaylcbmluY2x1ZGUvbGludXgvZ2ZwLmgtNDM1LXtcbmluY2x1ZGUvbGludXgvZ2ZwLmg6NDM2Olx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pIFx1MDAyNlx1MDAyNiAoZ2ZwX21hc2sgXHUwMDI2IF9fR0ZQX0lPKTtcbmluY2x1ZGUvbGludXgvZ2ZwLmgtNDM3LX1cbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTk2OD1zdHJ1Y3Qgem9uZSB7XG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTE2LVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxMTE3OiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTE4LVx0LyogcGZuIHdoZXJlIGNvbXBhY3Rpb24gZnJlZSBzY2FubmVyIHNob3VsZCBzdGFydCAqL1xuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTEyNS1cbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTEyNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTEyNy1cdC8qXG4tLVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTM3LVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaDoxMTM4OiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTM5LVx0LyogU2V0IHRvIHRydWUgd2hlbiB0aGUgUEdfbWlncmF0ZV9za2lwIGJpdHMgc2hvdWxkIGJlIGNsZWFyZWQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTE0Njc9dHlwZWRlZiBzdHJ1Y3QgcGdsaXN0X2RhdGEge1xuLS1cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTUyNi1cbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTUyNzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTUyOC1cdGludCBrY29tcGFjdGRfbWF4X29yZGVyO1xuLS1cbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmg9OTA9dm9pZCBjbGVhcl9wZm5ibG9ja19iaXQoY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgcGZuLFxuLS1cbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgtOTMtLyogRGVjbGFyYXRpb25zIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIGZsYWdzLiBTZWUgbW0vcGFnZV9hbGxvYy5jICovXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oOjk0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaC05NS0jZGVmaW5lIGdldF9wYWdlYmxvY2tfc2tpcChwYWdlKSBcXFxuLS1cbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmg9MTA5PXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZWJsb2NrX3NraXAoc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaC0xMTEtfVxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaDoxMTI6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oLTExMy1cbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODI2PXN0cnVjdCB0YXNrX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEzMTItXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTMxMzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMzE0LVx0c3RydWN0IGNhcHR1cmVfY29udHJvbFx0XHQqY2FwdHVyZV9jb250cm9sO1xuLS1cbmluY2x1ZGUvbGludXgvdm1fZXZlbnRfaXRlbS5oPTM0PWVudW0gdm1fZXZlbnRfaXRlbSB7IFBHUEdJTiwgUEdQR09VVCwgUFNXUElOLCBQU1dQT1VULFxuLS1cbmluY2x1ZGUvbGludXgvdm1fZXZlbnRfaXRlbS5oLTY0LSNlbmRpZlxuaW5jbHVkZS9saW51eC92bV9ldmVudF9pdGVtLmg6NjU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5pbmNsdWRlL2xpbnV4L3ZtX2V2ZW50X2l0ZW0uaC02Ni1cdFx0Q09NUEFDVE1JR1JBVEVfU0NBTk5FRCwgQ09NUEFDVEZSRUVfU0NBTk5FRCxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmg9Njc9REVGSU5FX0VWRU5UKG1tX2NvbXBhY3Rpb25faXNvbGF0ZV90ZW1wbGF0ZSwgbW1fY29tcGFjdGlvbl9mYXN0X2lzb2xhdGVfZnJlZXBhZ2VzLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaC03Ny1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaDo3ODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaC03OS1UUkFDRV9FVkVOVChtbV9jb21wYWN0aW9uX21pZ3JhdGVwYWdlcyxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tbWZsYWdzLmg9MjM2PUlGX0hBVkVfVk1fRFJPUFBBQkxFKFZNX0RST1BQQUJMRSxcdFwmIzM0O2Ryb3BwYWJsZVwmIzM0O1x0KVx0XHRcXFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21tZmxhZ3MuaC0yNDMtXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tbWZsYWdzLmg6MjQ0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxuaW5jbHVkZS90cmFjZS9ldmVudHMvbW1mbGFncy5oLTI0NS0jZGVmaW5lIENPTVBBQ1RJT05fU1RBVFVTXHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmg9MTY2PVRSQUNFX0VWRU5UKHNraXBfdGFza19yZWFwaW5nLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTE4MS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oOjE4MjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTE4My1UUkFDRV9FVkVOVChjb21wYWN0X3JldHJ5LFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTIxOC0pO1xuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmg6MjE5OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmgtMjIwLSNlbmRpZlxuLS1cbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDU2Mz1zdGF0aWMgdm9pZCBfX3NjaGVkX2ZvcmsodTY0IGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYy00NjA4LVxua2VybmVsL3NjaGVkL2NvcmUuYzo0NjA5OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxua2VybmVsL3NjaGVkL2NvcmUuYy00NjEwLVx0cC1cdTAwM2VjYXB0dXJlX2NvbnRyb2wgPSBOVUxMO1xuLS1cbm1tL2NvbXBhY3Rpb24uYy0yOC1cbm1tL2NvbXBhY3Rpb24uYzoyOTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL2NvbXBhY3Rpb24uYy0zMC0vKlxuLS1cbm1tL2NvbXBhY3Rpb24uYz01OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdmlhX2NvbXBhY3RfbWVtb3J5KGludCBvcmRlcikgeyByZXR1cm4gZmFsc2U7IH1cbi0tXG5tbS9jb21wYWN0aW9uLmMtNjEtXG5tbS9jb21wYWN0aW9uLmM6NjI6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXG5tbS9jb21wYWN0aW9uLmMtNjMtXG4tLVxubW0vY29tcGFjdGlvbi5jPTkxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHJlbGVhc2VfZnJlZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVwYWdlcylcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTE1LVxubW0vY29tcGFjdGlvbi5jOjExNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL2NvbXBhY3Rpb24uYy0xMTctXG4tLVxubW0vY29tcGFjdGlvbi5jPTQ5MD1zdGF0aWMgYm9vbCB0ZXN0X2FuZF9zZXRfc2tpcChzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxubW0vY29tcGFjdGlvbi5jLTQ5My19XG5tbS9jb21wYWN0aW9uLmM6NDk0OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vY29tcGFjdGlvbi5jLTQ5NS1cbi0tXG5tbS9jb21wYWN0aW9uLmM9MTMzNj1pc29sYXRlX21pZ3JhdGVwYWdlc19yYW5nZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4tLVxubW0vY29tcGFjdGlvbi5jLTEzNzEtXG5tbS9jb21wYWN0aW9uLmM6MTM3MjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xubW0vY29tcGFjdGlvbi5jOjEzNzM6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS9jb21wYWN0aW9uLmMtMTM3NC1cbi0tXG5tbS9jb21wYWN0aW9uLmM9MzM1MD1zdWJzeXNfaW5pdGNhbGwoa2NvbXBhY3RkX2luaXQpXG5tbS9jb21wYWN0aW9uLmMtMzM1MS1cbm1tL2NvbXBhY3Rpb24uYzozMzUyOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xuLS1cbm1tL2ludGVybmFsLmg9MTAwNj1zdGF0aWMgaW5saW5lIHZvaWQgc3BhcnNlX2luaXRfc3Vic2VjdGlvbl9tYXAodm9pZClcbi0tXG5tbS9pbnRlcm5hbC5oLTEwMTAtXG5tbS9pbnRlcm5hbC5oOjEwMTE6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXG5tbS9pbnRlcm5hbC5oLTEwMTItXG4tLVxubW0vaW50ZXJuYWwuaD0xMDgwPXZvaWQgaW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHN0cnVjdCBwYWdlICpwYWdlKTtcbm1tL2ludGVybmFsLmgtMTA4MS1cbm1tL2ludGVybmFsLmg6MTA4MjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xubW0vaW50ZXJuYWwuaC0xMDgzLVxuLS1cbm1tL21tX2luaXQuYz0xMzI3PXN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsXG4tLVxubW0vbW1faW5pdC5jLTEzNjktXG5tbS9tbV9pbml0LmM6MTM3MDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL21tX2luaXQuYy0xMzcxLXN0YXRpYyB2b2lkIHBnZGF0X2luaXRfa2NvbXBhY3RkKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4tLVxubW0vb29tX2tpbGwuYz00NTY9c3RhdGljIHZvaWQgZHVtcF9oZWFkZXIoc3RydWN0IG9vbV9jb250cm9sICpvYylcbi0tXG5tbS9vb21fa2lsbC5jLTQ2MC1cdFx0XHRjdXJyZW50LVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqKTtcbm1tL29vbV9raWxsLmM6NDYxOlx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01QQUNUSU9OKSBcdTAwMjZcdTAwMjYgb2MtXHUwMDNlb3JkZXIpXG5tbS9vb21fa2lsbC5jLTQ2Mi1cdFx0cHJfd2FybihcJiMzNDtDT01QQUNUSU9OIGlzIGRpc2FibGVkISEhXFxuXCYjMzQ7KTtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NzEyPXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYnVkZHlfb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNzE3LVxubW0vcGFnZV9hbGxvYy5jOjcxODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL3BhZ2VfYWxsb2MuYy03MTktc3RhdGljIGlubGluZSBzdHJ1Y3QgY2FwdHVyZV9jb250cm9sICp0YXNrX2NhcGMoc3RydWN0IHpvbmUgKnpvbmUpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTc2Nz1jb21wYWN0aW9uX2NhcHR1cmUoc3RydWN0IGNhcHR1cmVfY29udHJvbCAqY2FwYywgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTc3MS19XG5tbS9wYWdlX2FsbG9jLmM6NzcyOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vcGFnZV9hbGxvYy5jLTc3My1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDA1ND1fX2FsbG9jX3BhZ2VzX21heV9vb20oZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDE0NS1cbm1tL3BhZ2VfYWxsb2MuYzo0MTQ2OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0vcGFnZV9hbGxvYy5jLTQxNDctLyogVHJ5IG1lbW9yeSBjb21wYWN0aW9uIGZvciBoaWdoLW9yZGVyIGFsbG9jYXRpb25zIGJlZm9yZSByZWNsYWltICovXG4tLVxubW0vcGFnZV9hbGxvYy5jPTQyODY9c2hvdWxkX2NvbXBhY3RfcmV0cnkoZ2ZwX3QgZ2ZwX21hc2ssIHN0cnVjdCBhbGxvY19jb250ZXh0ICphYywgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00MzExLX1cbm1tL3BhZ2VfYWxsb2MuYzo0MzEyOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vcGFnZV9hbGxvYy5jLTQzMTMtXG4tLVxubW0vdm1zY2FuLmM9NjMyMz1zdGF0aWMgdm9pZCBzaHJpbmtfem9uZXMoc3RydWN0IHpvbmVsaXN0ICp6b25lbGlzdCwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXG4tLVxubW0vdm1zY2FuLmMtNjM2My1cdFx0XHQgKi9cbm1tL3Ztc2Nhbi5jOjYzNjQ6XHRcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pIFx1MDAyNlx1MDAyNlxubW0vdm1zY2FuLmMtNjM2NS1cdFx0XHQgICAgc2MtXHUwMDNlb3JkZXIgXHUwMDNlIFBBR0VfQUxMT0NfQ09TVExZX09SREVSIFx1MDAyNlx1MDAyNlxuLS1cbm1tL3Ztc3RhdC5jPTEwNDI9dm9pZCBtZW1tYXBfcGFnZXNfYWRkKGxvbmcgZGVsdGEpXG4tLVxubW0vdm1zdGF0LmMtMTA0Ni1cbm1tL3Ztc3RhdC5jOjEwNDc6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS92bXN0YXQuYy0xMDQ4LVxuLS1cbm1tL3Ztc3RhdC5jPTExODc9Y29uc3QgY2hhciAqIGNvbnN0IHZtc3RhdF90ZXh0W10gPSB7XG4tLVxubW0vdm1zdGF0LmMtMTM3MC0jZW5kaWZcbm1tL3Ztc3RhdC5jOjEzNzE6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS92bXN0YXQuYy0xMzcyLVx0W0koQ09NUEFDVE1JR1JBVEVfU0NBTk5FRCldXHRcdD0gXCYjMzQ7Y29tcGFjdF9taWdyYXRlX3NjYW5uZWRcJiMzNDssXG4tLVxubW0vdm1zdGF0LmMtMTQ5Ni1cbm1tL3Ztc3RhdC5jOjE0OTc6I2lmIChkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pKSB8fCBcXFxubW0vdm1zdGF0LmMtMTQ5OC0gICAgIGRlZmluZWQoQ09ORklHX1BST0NfRlMpXG4tLVxubW0vdm1zdGF0LmM9MjI2OD12b2lkIF9faW5pdCBpbml0X21tX2ludGVybmFscyh2b2lkKVxuLS1cbm1tL3Ztc3RhdC5jLTIzMDEtXG5tbS92bXN0YXQuYzoyMzAyOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pXG5tbS92bXN0YXQuYy0yMzAzLVxuLS1cbm1tL3pzbWFsbG9jLmM9MjcwPXN0cnVjdCB6c19wb29sIHtcbi0tXG5tbS96c21hbGxvYy5jLTI4NC0jZW5kaWZcbm1tL3pzbWFsbG9jLmM6Mjg1OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yODYtXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrO1xuLS1cbm1tL3pzbWFsbG9jLmM9NDMxPXN0YXRpYyBib29sIFpzSHVnZVBhZ2Uoc3RydWN0IHpzcGFnZSAqenNwYWdlKVxuLS1cbm1tL3pzbWFsbG9jLmMtNDM1LVxubW0venNtYWxsb2MuYzo0MzY6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTQzNy1zdGF0aWMgdm9pZCBraWNrX2RlZmVycmVkX2ZyZWUoc3RydWN0IHpzX3Bvb2wgKnBvb2wpO1xuLS1cbm1tL3pzbWFsbG9jLmM9MTAyNz1zdGF0aWMgc3RydWN0IHpzcGFnZSAqYWxsb2NfenNwYWdlKHN0cnVjdCB6c19wb29sICpwb29sLFxuLS1cbm1tL3pzbWFsbG9jLmMtMTAzNy1cbm1tL3pzbWFsbG9jLmM6MTAzODpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikpXG5tbS96c21hbGxvYy5jLTEwMzktXHRcdGdmcCBcdTAwMjY9IH5fX0dGUF9NT1ZBQkxFO1xuLS1cbm1tL3pzbWFsbG9jLmM9MTQ1MT1zdGF0aWMgdm9pZCBvYmpfZnJlZShpbnQgY2xhc3Nfc2l6ZSwgdW5zaWduZWQgbG9uZyBvYmopXG4tLVxubW0venNtYWxsb2MuYy0xNDc4LVxubW0venNtYWxsb2MuYzoxNDc5OiNpZiAoWlNfT0JKX0NMQVNTX0JJVFMgXHUwMDNlIDApIHx8IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pXG5tbS96c21hbGxvYy5jLTE0ODAtLyogRm9sZHMgdG8gMCB3aGVuIFpTX09CSl9DTEFTU19CSVRTID09IDA7IG5vIGlmZGVmIG5lZWRlZCBhdCBjYWxsZXJzLiAqL1xuLS1cbm1tL3pzbWFsbG9jLmM9MTc1MD1zdGF0aWMgaW50IHB1dGJhY2tfenNwYWdlKHN0cnVjdCBzaXplX2NsYXNzICpjbGFzcywgc3RydWN0IHpzcGFnZSAqenNwYWdlKVxuLS1cbm1tL3pzbWFsbG9jLmMtMTc1OS1cbm1tL3pzbWFsbG9jLmM6MTc2MDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL3pzbWFsbG9jLmMtMTc2MS0vKlxuLS1cbm1tL3pzbWFsbG9jLmM9MjM5MT1zdGF0aWMgaW50IF9faW5pdCB6c19pbml0KHZvaWQpXG4tLVxubW0venNtYWxsb2MuYy0yMzk4LVxubW0venNtYWxsb2MuYzoyMzk5OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yNDAwLVx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXHUwMDI2enNtYWxsb2NfbW9wcywgUEdUWV96c21hbGxvYyk7XG4tLVxubW0venNtYWxsb2MuYz0yNDEwPXN0YXRpYyB2b2lkIF9fZXhpdCB6c19leGl0KHZvaWQpXG5tbS96c21hbGxvYy5jLTI0MTEte1xubW0venNtYWxsb2MuYzoyNDEyOiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yNDEzLVx0c2V0X21vdmFibGVfb3BzKE5VTEwsIFBHVFlfenNtYWxsb2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTk2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFzc2Vzc2luZyBQb3RlbnRpYWwgU3lzdGVtIEltcGFjdHMqKgoKUmlnaHQsIGBDT05GSUdfQ09NUEFDVElPTmAgaXMgYmFzaWNhbGx5IGV2ZXJ5d2hlcmUgdGhlc2UgZGF5cywgc28gdGhhdCYjMzk7cyBhIGdpdmVuLiBOb3csIGxldCYjMzk7cyBwaXZvdCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGludGVycGxheSB3aXRoIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaG93IHRoZXNlIHR3byBpbnRlcmFjdCBpbiB0aGUgb3ZlcmFsbCBtZW1vcnkgbWFuYWdlbWVudCBzY2hlbWUuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBmcmFnbWVudGF0aW9uIGlzc3VlcywgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcy4gSSBuZWVkIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgZ290Y2hhcyBvciBvcHRpbWl6YXRpb25zIHRoYXQgaW1tZWRpYXRlbHkganVtcCBvdXQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgbXkgb3duIHByaW9yIGV4cGVyaWVuY2Ugc3VnZ2VzdHMgYWJvdXQgaG93IHRoZXNlIHR3byB3b3JrIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTkyNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjIucnN0PTE0MjY9VGhlIGZvbGxvd2luZyBuZXN0ZWQga2V5cyBhcmUgZGVmaW5lZC5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3QtMTc0My1cdFx0TnVtYmVyIG9mIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyB3aGljaCB3ZXJlIGFsbG9jYXRlZCB0byBzYXRpc2Z5XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3Q6MTc0NDpcdFx0YSBwYWdlIGZhdWx0LiBUaGlzIGNvdW50ZXIgaXMgbm90IHByZXNlbnQgd2hlbiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdC0xNzQ1LSAgICAgICAgICAgICAgICBpcyBub3Qgc2V0LlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdC0xNzQ5LVx0XHRjb2xsYXBzaW5nIGFuIGV4aXN0aW5nIHJhbmdlIG9mIHBhZ2VzLiBUaGlzIGNvdW50ZXIgaXMgbm90XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3Q6MTc1MDpcdFx0cHJlc2VudCB3aGVuIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSBpcyBub3Qgc2V0LlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjIucnN0LTE3NTEtXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS90cmFuc2h1Z2UucnN0PTM5OT1BZGRpdGlvbmFsbHksIEtjb25maWcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgZGVmYXVsdCBodWdlcGFnZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS90cmFuc2h1Z2UucnN0OjQwMDpwb2xpY2llcyBmb3Igc2htZW0gKGBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfKmBgKSBhbmQgdG1wZnNcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJzdDo0MDE6KGBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfKmBgKSBhdCBidWlsZCB0aW1lLiBSZWZlciB0byB0aGVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJzdC00MDItS2NvbmZpZyBoZWxwIGZvciBtb3JlIGRldGFpbHMuXG4tLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy90bXBmcy5yc3Q9MTExPXRtcGZzIGFsc28gc3VwcG9ydHMgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyB3aGljaCByZXF1aXJlcyBhIGtlcm5lbFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy90bXBmcy5yc3Q6MTEyOmNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgYW5kIHdpdGggaHVnZSBzdXBwb3J0ZWQgZm9yXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3RtcGZzLnJzdC0xMTMteW91ciBzeXN0ZW0gKGhhc190cmFuc3BhcmVudF9odWdlcGFnZSgpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMpLlxuLS1cbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3Q9MTYyPXNobWVtIG1vdW50cG9pbnQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvbmUgKCYjMzk7c2htX21udCYjMzk7KS4gRm9yIGJ1aWxkc1xuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdDoxNjM6d2l0aCBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgZW5hYmxlZCwgZnVydGhlciBjYWxscyB0b1xuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdC0xNjQtZHJtX2dlbV9vYmplY3RfaW5pdCgpIHdpbGwgbGV0IHNobWVtIGFsbG9jYXRlIGh1Z2UgcGFnZXMgd2hlblxuLS1cbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3Q9MzA4PUluIG9yZGVyIHRvIHJlZHVjZSBwYWdlIHRhYmxlIG92ZXJoZWFkLCBpZiB0aGUgaW50ZXJuYWwgc2htZW0gbW91bnRwb2ludFxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdC0zMDktXCYjMzQ7c2htX21udFwmIzM0OyBpcyBjb25maWd1cmVkIHRvIHVzZSB0cmFuc3BhcmVudCBodWdlIHBhZ2VzIChmb3IgYnVpbGRzIHdpdGhcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3Q6MzEwOkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSBlbmFibGVkKSBhbmQgaWYgdGhlIHNobWVtIGJhY2tpbmcgc3RvcmVcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QtMzExLW1hbmFnZWQgdG8gYWxsb2NhdGUgYSBodWdlIHBhZ2UgZm9yIGEgZmF1bHR5IGFkZHJlc3MsIHRoZSBmYXVsdCBoYW5kbGVyXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIxMD1HZW5lcmFsXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI2NS1gYGRlZmVycmVkX3NwbGl0X3F1ZXVlYGBcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNjY6ICBQZXItbm9kZSBxdWV1ZSBvZiBodWdlIHBhZ2VzIHRoYXQgdGhlaXIgc3BsaXQgd2FzIGRlZmVycmVkLiBEZWZpbmVkIG9ubHkgd2hlbiBgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWBgIGlzIGVuYWJsZWQuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjY3LVxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q9MjA1PW5vZGVfem9uZWxpc3Rz5byV55So44CCXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTEtYGBkZWZlcnJlZF9zcGxpdF9xdWV1ZWBgXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjI1Mjrmr4/kuKroioLngrnnmoTlpKfpobXpmJ/liJfvvIzov5nkupvlpKfpobXnmoTmi4bliIbooqvmjqjov5/kuobjgILku4XlnKjlvIDlkK/kuoYgYGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgYFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTMt6YWN572u6YCJ6aG55pe25a6a5LmJ44CCXG4tLVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmg9MTM5PVBURV9CSVRfRlVOQyhzd3BfY2xlYXJfZXhjbHVzaXZlLCBcdTAwMjY9IH4oX1BBR0VfU1dQX0VYQ0xVU0lWRSkpO1xuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmgtMTQwLVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmg6MTQxOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3BndGFibGUtYml0cy1hcmN2Mi5oLTE0Mi0jaW5jbHVkZSBcdTAwM2Nhc20vaHVnZXBhZ2UuaFx1MDAzZVxuLS1cbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3RsYmZsdXNoLmg9MTU9dm9pZCBsb2NhbF9mbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTE2LVx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTtcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3RsYmZsdXNoLmg6MTc6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0xOC12b2lkIGxvY2FsX2ZsdXNoX3BtZF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0yNy0jZGVmaW5lIGZsdXNoX3RsYl9tbShtbSlcdFx0bG9jYWxfZmx1c2hfdGxiX21tKG1tKVxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaDoyODojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTI5LSNkZWZpbmUgZmx1c2hfcG1kX3RsYl9yYW5nZSh2bWEsIHMsIGUpXHRsb2NhbF9mbHVzaF9wbWRfdGxiX3JhbmdlKHZtYSwgcywgZSlcbi0tXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oPTM3PWV4dGVybiB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oOjM4OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3RsYmZsdXNoLmgtMzktZXh0ZXJuIHZvaWQgZmx1c2hfcG1kX3RsYl9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpO1xuLS1cbmFyY2gvYXJjL21tL3RsYi5jPTEzND1ub2lubGluZSB2b2lkIGxvY2FsX2ZsdXNoX3RsYl9hbGwodm9pZClcbi0tXG5hcmNoL2FyYy9tbS90bGIuYy0xNTYtXG5hcmNoL2FyYy9tbS90bGIuYzoxNTc6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpKSB7XG5hcmNoL2FyYy9tbS90bGIuYy0xNTgtXHRcdGNvbnN0IGludCBzdGxiX2lkeCA9IDB4ODAwO1xuLS1cbmFyY2gvYXJjL21tL3RsYi5jPTMxMD1zdGF0aWMgaW5saW5lIHZvaWQgaXBpX2ZsdXNoX3RsYl9yYW5nZSh2b2lkICphcmcpXG4tLVxuYXJjaC9hcmMvbW0vdGxiLmMtMzE2LVxuYXJjaC9hcmMvbW0vdGxiLmM6MzE3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJjL21tL3RsYi5jLTMxOC1zdGF0aWMgaW5saW5lIHZvaWQgaXBpX2ZsdXNoX3BtZF90bGJfcmFuZ2Uodm9pZCAqYXJnKVxuLS1cbmFyY2gvYXJjL21tL3RsYi5jPTM1ND12b2lkIGZsdXNoX3RsYl9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL2FyYy9tbS90bGIuYy0zNjUtXG5hcmNoL2FyYy9tbS90bGIuYzozNjY6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcmMvbW0vdGxiLmMtMzY3LXZvaWQgZmx1c2hfcG1kX3RsYl9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL2FyYy9tbS90bGIuYz00NzI9dm9pZCB1cGRhdGVfbW11X2NhY2hlX3JhbmdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5hcmNoL2FyYy9tbS90bGIuYy01MDYtXG5hcmNoL2FyYy9tbS90bGIuYzo1MDc6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcmMvbW0vdGxiLmMtNTA4LVxuLS1cbmFyY2gvYXJjL21tL3RsYi5jPTU2Mz1pbnQgYXJjX21tdV9tdW1ib2p1bWJvKGludCBjLCBjaGFyICpidWYsIGludCBsZW4pXG4tLVxuYXJjaC9hcmMvbW0vdGxiLmMtNTk3LVx0XHRcdCAgbW11LVx1MDAzZXNfcGdfc3pfbSxcbmFyY2gvYXJjL21tL3RsYi5jOjU5ODpcdFx0XHQgIElTX0VOQUJMRUQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSA/IFwmIzM0OyAoVEhQIGVuYWJsZWQpXCYjMzQ7OlwmIzM0O1wmIzM0Oyk7XG5hcmNoL2FyYy9tbS90bGIuYy01OTktXG4tLVxuYXJjaC9hcmMvbW0vdGxiLmM9NjE2PXZvaWQgYXJjX21tdV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcmMvbW0vdGxiLmMtNjQ4LVxuYXJjaC9hcmMvbW0vdGxiLmM6NjQ5Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSBcdTAwMjZcdTAwMjZcbmFyY2gvYXJjL21tL3RsYi5jLTY1MC1cdCAgICBtbXUtXHUwMDNlc19wZ19zel9tICE9IFRPX01CKEhQQUdFX1BNRF9TSVpFKSlcbi0tXG5hcmNoL2FyYy9tbS90bGJleC5TPTc5PWV4X3NhdmVkX3JlZzE6XG4tLVxuYXJjaC9hcmMvbW0vdGxiZXguUy0xOTMtXG5hcmNoL2FyYy9tbS90bGJleC5TOjE5NDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2FyYy9tbS90bGJleC5TLTE5NS1cdGFuZC5mXHQwLCByMywgX1BBR0VfSFdfU1pcdDsgSXMgdGhpcyBIdWdlIFBNRCAodGhwKVxuLS1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3BndGFibGUtM2xldmVsLmg9MTgzPXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rc3BlY2lhbChwdGVfdCBwdGUpXG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcGd0YWJsZS0zbGV2ZWwuaC0xOTMtXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxlLTNsZXZlbC5oOjE5NDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxlLTNsZXZlbC5oLTE5NS0jZGVmaW5lIHBtZF90cmFuc19odWdlKHBtZClcdChwbWRfdmFsKHBtZCkgXHUwMDI2XHUwMDI2ICFwbWRfdGFibGUocG1kKSlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTEzNj1DT05GSUdfTUVNT1JZX0ZBSUxVUkU9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzoxMzc6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTM4LUNPTkZJR19ORVQ9eVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTgyPXN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2xlYXZlX2xhenlfbW11X21vZGUodm9pZClcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC04Ni1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjg3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTg4LSNkZWZpbmUgX19IQVZFX0FSQ0hfRkxVU0hfUE1EX1RMQl9SQU5HRVxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTk0LVx0X19mbHVzaF90bGJfcmFuZ2Uodm1hLCBhZGRyLCBlbmQsIFBVRF9TSVpFLCAxLCBUTEJGX05PTkUpXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDo5NTojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC05Ni1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD03ODM9c3RhdGljIGlubGluZSBib29sIHBtZF9sZWFmKHBtZF90IHBtZClcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC03OTItXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDo3OTM6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzk0LXN0YXRpYyBpbmxpbmUgaW50IHBtZF90cmFuc19odWdlKHBtZF90IHBtZClcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC04MDEtfVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6ODAyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTgwMy1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMjU5PXN0YXRpYyBpbmxpbmUgaW50IF9fcHRlcF9zZXRfYWNjZXNzX2ZsYWdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEyNjYtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMjY3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEyNjgtI2RlZmluZSBfX0hBVkVfQVJDSF9QTURQX1NFVF9BQ0NFU1NfRkxBR1Ncbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMzIxPXN0YXRpYyBpbmxpbmUgYm9vbCBfX3B0ZXBfY2xlYXJfZmx1c2hfeW91bmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTM0MC1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjEzNDE6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSB8fCBkZWZpbmVkKENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORylcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEzNDItI2RlZmluZSBfX0hBVkVfQVJDSF9QTURQX1RFU1RfQU5EX0NMRUFSX1lPVU5HXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMzQzPXN0YXRpYyBpbmxpbmUgYm9vbCBwbWRwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTEzNDktfVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTM1MDojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFIHx8IENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORyAqL1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTM1MS1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMzk2PXN0YXRpYyBpbmxpbmUgcHRlX3QgX19nZXRfYW5kX2NsZWFyX2Z1bGxfcHRlcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDE0LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTQxNTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDE2LSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9IVUdFX0dFVF9BTkRfQ0xFQVJcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE0MTc9c3RhdGljIGlubGluZSBwbWRfdCBwbWRwX2h1Z2VfZ2V0X2FuZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDIxLX1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE0MjI6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQyMy1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xNDc2PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2NsZWFyX3lvdW5nX2RpcnR5X3B0ZXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQ5Ni1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE0OTc6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQ5OC0jZGVmaW5lIF9fSEFWRV9BUkNIX1BNRFBfU0VUX1dSUFJPVEVDVFxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTIwPUNPTkZJR19LU009eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMjE6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTIyLUNPTkZJR19DTUE9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3BndGFibGUuaD0yNjQ9c3RhdGljIGlubGluZSB2b2lkIHBtZF9jbGVhcihwbWRfdCAqcG1kcClcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMjcwLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjI3MTojaWZuZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3Mi0jZGVmaW5lIHBtZF9wYWdlKHBtZClcdFx0KHBmbl90b19wYWdlKHBtZF9waHlzKHBtZCkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpKVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjI3MzojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICAqL1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3NC1cbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9NTAwPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBwbWRfcGZuKHBtZF90IHBtZClcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTA0LVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjUwNTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTA2LVxuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3BndGFibGUuaD02MTQ9c3RhdGljIGlubGluZSBwbWRfdCBwbWRwX2h1Z2VfZ2V0X2FuZF9jbGVhcihzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNjIzLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjYyNDojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNjI1LVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnPTI0PUNPTkZJR19NT0RVTEVfVU5MT0FEPXlcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnLTI1LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnOjI2OkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy0yNy1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZz0yMz1DT05GSUdfT1NGX1BBUlRJVElPTj15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZy0yNC0jIENPTkZJR19FRklfUEFSVElUSU9OIGlzIG5vdCBzZXRcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnOjI1OkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUPXlcbi0tXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTYwNz11bnNpZ25lZCBsb25nIGlvX3JlbWFwX3Bmbl9yYW5nZV9wZm4odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4tLVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaC02MTItXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjYxMzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTYxNC1cbi0tXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTczND1zdGF0aWMgaW5saW5lIHBtZF90IHBtZHBfaHVnZV9nZXRfYW5kX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzQzLVxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaDo3NDQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaC03NDUtXG4tLVxuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYz0xNj12b2lkIHBnZF9pbml0KHZvaWQgKmFkZHIpXG4tLVxuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYy0zMi1cbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTMyLmM6MzM6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKVxuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYy0zNC12b2lkIHNldF9wbWRfYXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jLTM4LX1cbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTMyLmM6Mzk6I2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSAqL1xuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYy00MC1cbi0tXG5hcmNoL21pcHMvbW0vcGd0YWJsZS02NC5jPTcwPXZvaWQgcHVkX2luaXQodm9pZCAqYWRkcilcbi0tXG5hcmNoL21pcHMvbW0vcGd0YWJsZS02NC5jLTkxLVxuYXJjaC9taXBzL21tL3BndGFibGUtNjQuYzo5MjojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL21pcHMvbW0vcGd0YWJsZS02NC5jLTkzLXZvaWQgc2V0X3BtZF9hdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmFyY2gvbWlwcy9tbS90bGItcjRrLmM9MzkxPXZvaWQgYWRkX3dpcmVkX2VudHJ5KHVuc2lnbmVkIGxvbmcgZW50cnlsbzAsIHVuc2lnbmVkIGxvbmcgZW50cnlsbzEsXG4tLVxuYXJjaC9taXBzL21tL3RsYi1yNGsuYy00MzQtXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jOjQzNTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jLTQzNi1cbi0tXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jPTQ1Mz1FWFBPUlRfU1lNQk9MKGhhc190cmFuc3BhcmVudF9odWdlcGFnZSk7XG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jLTQ1NC1cbmFyY2gvbWlwcy9tbS90bGItcjRrLmM6NDU1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgICovXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jLTQ1Ni1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz02Mj1DT05GSUdfSFdQT0lTT05fSU5KRUNUPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjYzOkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy02NC1DT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTkwPUNPTkZJR19LU009eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjkxOkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTItQ09ORklHX01FTV9TT0ZUX0RJUlRZPXlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNGsuaD0xMTI9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHB0ZV9zZXRfaGlkeChwdGVfdCAqcHRlcCwgcmVhbF9wdGVfdCBycHRlLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC00ay5oLTExOS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC00ay5oOjEyMDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNGsuaC0xMjEtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTc0LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjc1OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTc2LSNkZWZpbmUgSF9QTURfRlJBR19TSVpFX1NISUZUICAoSF9QTURfSU5ERVhfU0laRSAmIzQzOyAzICYjNDM7IDEpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oPTE3NT1zdGF0aWMgaW5saW5lIGludCBoYXNoX19yZW1hcF80a19wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg2LSNkZWZpbmUgSF9QVEVfVEFCTEVfU0laRVx0UFRFX0ZSQUdfU0laRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjE4NzojaWYgZGVmaW5lZChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpIHx8IGRlZmluZWQgKENPTkZJR19IVUdFVExCX1BBR0UpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg4LSNkZWZpbmUgSF9QTURfVEFCTEVfU0laRVx0KChzaXplb2YocG1kX3QpIFx1MDAzY1x1MDAzYyBQTURfSU5ERVhfU0laRSkgJiM0MzsgXFxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjAwLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjIwMTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjAyLXN0YXRpYyBpbmxpbmUgY2hhciAqZ2V0X2hwdGVfc2xvdF9hcnJheShwbWRfdCAqcG1kcClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg9MjM4PXN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2hwdGVfc2xvdF92YWxpZCh1bnNpZ25lZCBjaGFyICpocHRlX3Nsb3RfYXJyYXksXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTI1MS0gKiBwbWRfdHJhbnNfaHVnZSgpIGlzIGRlZmluZWQgYXMgZmFsc2UgYXQgYnVpbGQgdGltZSBpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjI1MjogKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9biB0byBvcHRpbWl6ZSBhd2F5IGNvZGUgYmxvY2tzIGF0IGJ1aWxkXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjUzLSAqIHRpbWUgaW4gc3VjaCBjYXNlLlxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaD0yODE9ZXh0ZXJuIGludCBoYXNoX19oYXNfdHJhbnNwYXJlbnRfaHVnZXBhZ2Uodm9pZCk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg6MjgyOiNlbmRpZiAvKiAgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjgzLVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oPTI2ND1zdGF0aWMgaW5saW5lIHZvaWQgaGFzaF9fc2V0X3B0ZV9hdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTI3My1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oOjI3NDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC0yNzUtZXh0ZXJuIHZvaWQgaHB0ZV9kb19odWdlcGFnZV9mbHVzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oPTI3OD1zdGF0aWMgaW5saW5lIHZvaWQgaHB0ZV9kb19odWdlcGFnZV9mbHVzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC0yODMtfVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmg6Mjg0OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTI4NS1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmg9NDc0PWludCBfX2hhc2hfcGFnZV9odWdlKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgYWNjZXNzLCB1bnNpZ25lZCBsb25nIHZzaWQsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oLTQ3Ni1cdFx0ICAgICBpbnQgc3NpemUsIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50IG1tdV9wc2l6ZSk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmg6NDc3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaC00NzgtZXh0ZXJuIGludCBfX2hhc2hfcGFnZV90aHAodW5zaWduZWQgbG9uZyBlYSwgdW5zaWduZWQgbG9uZyBhY2Nlc3MsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg9MTA5OT1zdGF0aWMgaW5saW5lIGJvb2wgcG1kX3VzZXJfYWNjZXNzaWJsZV9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsIHBtZF90IHBtZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMTAzLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg6MTEwNDojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMTA1LWV4dGVybiBwbWRfdCBwZm5fcG1kKHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oPTE0MzU9c3RhdGljIGlubGluZSBib29sIGFyY2hfbmVlZHNfcGd0YWJsZV9kZXBvc2l0KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmgtMTQ0MS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oOjE0NDI6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmgtMTQ0My1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg9MjU4PXN0YXRpYyBpbmxpbmUgaW50IHJhZGl4X19wNGRfYmFkKHA0ZF90IHA0ZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMjYyLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oOjI2MzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMjY0LVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtd2Fsay5oPTEwPXN0YXRpYyBpbmxpbmUgcHRlX3QgKmZpbmRfbGludXhfcHRlKHBnZF90ICpwZ2RpciwgdW5zaWduZWQgbG9uZyBlYSxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0xOC0jaWYgZGVmaW5lZChDT05GSUdfREVCVUdfVk0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaDoxOTpcdCEoZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSB8fCBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0yMC1cdC8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX1BQQ182NEtfUEFHRVMpXHQmIzQzOz0gaGFzaF82NGsub1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgJiM0Mzs9IGhhc2hfaHVnZXBhZ2Uub1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L01ha2VmaWxlLTExLW9iai0kKENPTkZJR19QUENfU1VCUEFHRV9QUk9UKVx0JiM0Mzs9IHN1YnBhZ2VfcHJvdC5vXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfbmF0aXZlLmM9NTUxPXN0YXRpYyB2b2lkIG5hdGl2ZV9ocHRlX2ludmFsaWRhdGUodW5zaWduZWQgbG9uZyBzbG90LCB1bnNpZ25lZCBsb25nIHZwbixcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9uYXRpdmUuYy01ODktXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9uYXRpdmUuYzo1OTA6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfbmF0aXZlLmMtNTkxLXN0YXRpYyB2b2lkIG5hdGl2ZV9odWdlcGFnZV9pbnZhbGlkYXRlKHVuc2lnbmVkIGxvbmcgdnNpZCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM9MTQ4PWludCBoYXNoX19tYXBfa2VybmVsX3BhZ2UodW5zaWduZWQgbG9uZyBlYSwgdW5zaWduZWQgbG9uZyBwYSwgcGdwcm90X3QgcHJvdClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMTg4LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jOjE4OTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMTkwLVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYz00MjM9RVhQT1JUX1NZTUJPTF9HUEwoaGFzaF9faGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKTtcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy00MjQtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6NDI1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy00MjYtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0yMTk4PXZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGxvbmcgdnBuLCByZWFsX3B0ZV90IHB0ZSwgaW50IHBzaXplLCBpbnQgc3NpemUsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0yMjE4LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoyMjE5OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMjIyMC12b2lkIGZsdXNoX2hhc2hfaHVnZXBhZ2UodW5zaWduZWQgbG9uZyB2c2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0yMjc0LX1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MjI3NTojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTIyNzYtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYz00OD1lYXJseV9wYXJhbShcJiMzNDtrZmVuY2Uuc2FtcGxlX2ludGVydmFsXCYjMzQ7LCBwYXJzZV9rZmVuY2VfZWFybHlfaW5pdCk7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy01MC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6NTE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy01Mi0vKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9MjY0PXB1ZF90IHB1ZF9tb2RpZnkocHVkX3QgcHVkLCBwZ3Byb3RfdCBuZXdwcm90KVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjcxLX1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6MjcyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjczLVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9NTMyPXZvaWQgcHRlcF9tb2RpZnlfcHJvdF9jb21taXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTU0MC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6NTQxOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtNTQyLS8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz0xNDE1PXZvaWQgX19yZWYgcmFkaXhfX3ZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE0MjItXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjE0MjM6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy0xNDI0LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9MTUzNj1wdWRfdCByYWRpeF9fcHVkcF9odWdlX2dldF9hbmRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy0xNTQ2LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzoxNTQ3OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTU0OC1cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9MTAxMj1zdGF0aWMgaW5saW5lIHZvaWQgX19yYWRpeF9fZmx1c2hfdGxiX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMDUwLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEwNTE6XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTA1Mi1cdFx0XHRwZ19zaXplcyB8PSBwc2l6ZV90b19ycHRpX3Bnc2l6ZShNTVVfUEFHRV8yTSk7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEwNzYtXHRcdGhlbmQgPSBlbmQgXHUwMDI2IFBNRF9NQVNLO1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEwNzc6XHRcdGhmbHVzaCA9IElTX0VOQUJMRUQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSBcdTAwMjZcdTAwMjYgaHN0YXJ0IFx1MDAzYyBoZW5kO1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEwNzgtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jPTEzMDM9dm9pZCByYWRpeF9fZmx1c2hfdGxiX3B3Y19yYW5nZV9wc2l6ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTMwOC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYzoxMzA5OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMzEwLXZvaWQgcmFkaXhfX2ZsdXNoX3RsYl9jb2xsYXBzZWRfcG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEzNTMtfVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEzNTQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEzNTUtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3N1YnBhZ2VfcHJvdC5jPTkwPXN0YXRpYyB2b2lkIHN1YnBhZ2VfcHJvdF9jbGVhcih1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zdWJwYWdlX3Byb3QuYy0xMzYtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc3VicGFnZV9wcm90LmM6MTM3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zdWJwYWdlX3Byb3QuYy0xMzgtc3RhdGljIGludCBzdWJwYWdlX3dhbGtfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvdHJhY2UuYy00LSAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3RyYWNlLmM6NTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvdHJhY2UuYy02LSNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy90aHAuaFx1MDAzZVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYz0xMTc9dm9pZCBwdGVfZnJhZ21lbnRfZnJlZSh1bnNpZ25lZCBsb25nICp0YWJsZSwgaW50IGtlcm5lbClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMtMTMyLVxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jOjEzMzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1mcmFnLmMtMTM0LXZvaWQgcHRlX2ZyZWVfZGVmZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBndGFibGVfdCBwZ3RhYmxlKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYy0xNDEtfVxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jOjE0MjojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2xwYXIuYz0xMDg5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGNhbGxfYmxvY2tfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaWR4LCB1bnNpZ25lZCBsb25nICpwYXJhbSxcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvbHBhci5jLTExNDAtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvbHBhci5jOjExNDE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2xwYXIuYy0xMTQyLS8qXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0Lmg9Mzk5PXA0ZF90ICpwNGRfb2Zmc2V0KHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUtNjQuaC00MDAtXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUtNjQuaDo0MDE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0LmgtNDAyLXN0YXRpYyBpbmxpbmUgcHRlX3QgcG1kX3B0ZShwbWRfdCBwbWQpO1xuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTIwND1leHRlcm4gcGdkX3QgZWFybHlfcGdfZGlyW107XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0yMDUtXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaDoyMDY6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMjA3LXN0YXRpYyBpbmxpbmUgaW50IHBtZF9wcmVzZW50KHBtZF90IHBtZClcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaD05OTI9c3RhdGljIGlubGluZSBib29sIHB1ZF91c2VyX2FjY2Vzc2libGVfcGFnZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLCBwdWRfdCBwdWQpXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtOTk3LVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6OTk4OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTk5OS1zdGF0aWMgaW5saW5lIGludCBwbWRfdHJhbnNfaHVnZShwbWRfdCBwbWQpXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTE1OD1zdGF0aWMgaW5saW5lIHB1ZF90IHB1ZF9tb2RpZnkocHVkX3QgcHVkLCBwZ3Byb3RfdCBuZXdwcm90KVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExNjItXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMTYzOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExNjQtXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90bGJmbHVzaC5oPTU0PXZvaWQgbG9jYWxfZmx1c2hfdGxiX2tlcm5lbF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RsYmZsdXNoLmg6NTU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTU2LSNkZWZpbmUgX19IQVZFX0FSQ0hfRkxVU0hfUE1EX1RMQl9SQU5HRVxuLS1cbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jPTEyNT1pbnQgcG1kX2ZyZWVfcHRlX3BhZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jLTEzNi0jZW5kaWYgLyogQ09ORklHX0hBVkVfQVJDSF9IVUdFX1ZNQVAgKi9cbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jOjEzNzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xMzgtcG1kX3QgcG1kcF9jb2xsYXBzZV9mbHVzaChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYz0xNTc9cHVkX3QgcHVkcF9pbnZhbGlkYXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsXG4tLVxuYXJjaC9yaXNjdi9tbS9wZ3RhYmxlLmMtMTY1LX1cbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jOjE2NjojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xNjctXG4tLVxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jPTIwMz12b2lkIGZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jLTIwOC1cbmFyY2gvcmlzY3YvbW0vdGxiZmx1c2guYzoyMDk6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jLTIxMC12b2lkIGZsdXNoX3BtZF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEwOD1DT05GSUdfUEVSU0lTVEVOVF9IVUdFX1pFUk9fRk9MSU89eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwOTpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTExMC1DT05GSUdfQ01BX0RFQlVHRlM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMDE9Q09ORklHX1BFUlNJU1RFTlRfSFVHRV9aRVJPX0ZPTElPPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMDI6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMDMtQ09ORklHX0NNQV9TWVNGUz15XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xNTYwPXN0YXRpYyBpbmxpbmUgcHVkX3QgcHVkX21rZGlydHkocHVkX3QgcHVkKVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTU2Ny1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTU2ODojaWYgZGVmaW5lZChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpIHx8IGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSlcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTU2OS1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFzc2FnZV9wZ3Byb3RfcG1kKHBncHJvdF90IHBncHJvdClcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE2MTg9c3RhdGljIGlubGluZSBwbWRfdCBta19wbWRfcGh5cyh1bnNpZ25lZCBsb25nIHBoeXNwYWdlLCBwZ3Byb3RfdCBwZ3Byb3QpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjIyLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNjIzOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgfHwgQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjI0LVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTY5Mz1wdWRfdCBwdWRwX3hjaGdfZGlyZWN0KHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgcHVkX3QgKiwgcHVkX3QpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjk0LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNjk1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTY5Ni1cbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE4MzA9c3RhdGljIGlubGluZSBpbnQgaGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKHZvaWQpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xODMzLX1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTgzNDojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE4MzUtXG4tLVxuYXJjaC9zMzkwL21tL3BnYWxsb2MuYz0xMzk9dm9pZCBwYWdlX3RhYmxlX2ZyZWUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgKnRhYmxlKVxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjYyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUmVjZW50IENoYW5nZXMgUmVsYXRlZCB0byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApKioKCk9rYXksIHNvIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIHdpZGVseSBkZXBsb3llZCwgbWVhbmluZyBhbnkgaXNzdWVzIGFyb3VuZCBpdCBuZWVkIHRvIGJlIGFkZHJlc3NlZCBtZXRpY3Vsb3VzbHkuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgcmVjZW50IGNoYW5nZXMgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGBtbS9wYWdlX2FsbG9jLmNgLCBgbW0vaW50ZXJuYWwuaGAsIGBtbS9odWdlX21lbW9yeS5jYCwgYG1tL2NvbXBhY3Rpb24uY2AsIGFuZCBgbW0vcGVyY3B1LWttLmNgLiBUaGUgcGF0dGVybiBoZXJlIHN1Z2dlc3RzIGEgc2lnbmlmaWNhbnQgY29uY2VybiBhcm91bmQgdGhlIGBwYWdlLSZndDtwcml2YXRlYCBmaWVsZCBhbmQgaXRzIHByb3BlciBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IG9uIHRhaWwgcGFnZXMgb2YgY29tcG91bmQgcGFnZXMuCgpMb29raW5nIGF0IGBtbS9wYWdlX2FsbG9jLmNgLCB0aGUgY2hhbmdlcyBpbiBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgIGFyZSBub3RpY2VhYmxlLiBUaGUgY29kZSBub3cgaXRlcmF0ZXMgdGhyb3VnaCB0YWlsIHBhZ2VzLCB3aGljaCBpcyBleHBlY3RlZC4gQ3JpdGljYWxseSwgd2Ugc2VlIGFkZGl0aW9uYWwgY2hlY2tzIGFuZCBjbGVhcmVyIGNsZWFyaW5nIG9mIHRoZSBgUEFHRV9GTEFHU19DSEVDS19BVF9QUkVQYCBmbGFnIGFuZCBhbiBhZGRlZCBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHByaXZhdGUgZmllbGQgb24gdGFpbCBwYWdlcyBpcyBjbGVhcmVkLiBUaGVyZSYjMzk7cyBhbHNvIGEgYFZNX1dBUk5fT05fT05DRWAgbm93IGlmIGB0YWlsLSZndDtwcml2YXRlYCBpcyB1bmV4cGVjdGVkbHkgbm9uLXplcm8uIFRoaXMgc3Ryb25nbHkgaW1wbGllcyB0aGF0IHRoZXJlIHdlcmUgc2NlbmFyaW9zIHdoZXJlIHRhaWwgcGFnZXMgd2VyZW4mIzM5O3QgaGF2aW5nIHRoZWlyIHByaXZhdGUgaW5mb3JtYXRpb24gcHJvcGVybHkgY2xlYXJlZCBkdXJpbmcgdGhlIGZyZWUgcHJvY2VzcywgbGVhZGluZyB0byBwb3RlbnRpYWwgY29ycnVwdGlvbiBvciBpbmNvcnJlY3Qgc3RhdGUuCgpJbiBgbW0vaW50ZXJuYWwuaGAsIGBwcmVwX2NvbXBvdW5kX3RhaWxgIG5vdyBoYXMgYSBgVk1fV0FSTl9PTl9PTkNFYCBpZiBgdGFpbC0mZ3Q7cHJpdmF0ZWAgaXMgc2V0LCBjb25maXJtaW5nIHRoZSBhYm92ZSwgd2hlcmUgdGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHRoZSBwcml2YXRlIGZpZWxkIG9uIHRhaWwgcGFnZXMuCgpUaGVuLCB0aGUgYWRkaXRpb25zIGluIGBtbS9odWdlX21lbW9yeS5jYCBhcmUgYWxzbyBpbnRlcmVzdGluZy4gVGhlIGNvZGUgdGhhdCYjMzk7cyByZXNwb25zaWJsZSBmb3Igc3BsaXR0aW5nIGh1Z2UgcGFnZXMsIG5vdyBjb250YWlucyBhIGBWTV9XQVJOX09OX09OQ0VfUEFHRWAgY2hlY2sgdG8gZW5zdXJlIHRoZSBgcHJpdmF0ZWAgZmllbGQgaXNuJiMzOTt0IHNldCBvbiB0aGUgbmV3bHkgY3JlYXRlZCB0YWlsIGZvbGlvLCBiZWZvcmUgdGhlIGFzc2lnbm1lbnQgdG8gYHN3YXAudmFsYC4gVGhpcyBzaG93cyB0aGF0IHRoZSBvcmlnaW5hbCBwcm9ibGVtIHdhcyBldmVuIHdvcnNlLCBhZmZlY3RpbmcgaG93IGBzd2FwLnZhbGAgaXMgc2V0LCBhcyB0aGUgY29kZSB1c2VzIGBzd2FwLnZhbGAgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uIGFzIGBwcml2YXRlYC4gQWdhaW4sIHRoaXMgcmVpbmZvcmNlcyB0aGF0IHRoZSBgcGFnZS0mZ3Q7cHJpdmF0ZWAgZmllbGQgaXMgYSBjcml0aWNhbCBwb2ludCBvZiBjb25jZXJuIGluIHRoZSBoYW5kbGluZyBvZiBjb21wb3VuZCBwYWdlcyBhbmQgZXNwZWNpYWxseSBodWdlcGFnZXMuCgpUaGUgYG1tL2NvbXBhY3Rpb24uY2AgY2hhbmdlcyBzdWdnZXN0IGEgcmVsYXRlZCBwcm9ibGVtIHdpdGggcGFnZSBpc29sYXRpb24gZHVyaW5nIGNvbXBhY3Rpb24uIFRoZSByZW1vdmFsIG9mIGBzZXRfcGFnZV9wcml2YXRlYCBpbiB2YXJpb3VzIGxvY2F0aW9ucyB3aXRoaW4gYF9faXNvbGF0ZV9mcmVlX3BhZ2VgIGltcGxpZXMgdGhhdCB3ZSB3ZXJlIHBvdGVudGlhbGx5IGluY29ycmVjdGx5IHVzaW5nIGBwYWdlLSZndDtwcml2YXRlYCBmb3IgY29tcGFjdGlvbi1yZWxhdGVkIG1ldGFkYXRhLCBvciB0aGF0IHRoaXMgd2FzIGNhdXNpbmcgaXNzdWVzLiBBbHNvLCB3aXRoaW4gdGhpcyBmaWxlIHRoZXJlJiMzOTtzIGNvZGUgdGhhdCBmcmVlcyBhIHBhZ2UgaW4gYGZyZWVwYWdlYCwgd2hpY2ggcHJldmlvdXNseSB1c2VkIGBzZXRfcGFnZV9wcml2YXRlYC4KCkZpbmFsbHksIHRoZSBgbW0vcGVyY3B1LWttLmNgIGNoYW5nZXMgYXJlIGNydWNpYWwuIEhlcmUsIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGFsbG9jYXRlZCBmb3IgcGVyLUNQVSBrbWVtIGNhY2hlcywgdGhlIGNvZGUgZXhwbGljaXRseSBpdGVyYXRlcyB0aHJvdWdoIGVhY2ggcGFnZSwgY2xlYXJpbmcgcGVyLUNQVSBjaHVuayBpbmZvcm1hdGlvbi4gVGhpcyBpbmNsdWRlcyBjYWxsaW5nIGBwY3B1X3NldF9wYWdlX2NodW5rKHBhZ2VzICYjNDM7IGksIE5VTEwpYC4gVGhlIGNvbW1lbnQgaGlnaGxpZ2h0cyB0aGF0IHRoZSBzeXN0ZW0gKmNsZWFycyBjaHVuayBpbmZvKiAqZnJvbSBlYWNoIHBhZ2UqIGJlZm9yZSB0aGUgcGFnZXMgYXJlIGZyZWVkLiBUaGlzIGNsZWFycyB0aGUgbWV0YWRhdGEgZnJvbSB0aGUgcGFnZXMgYmVmb3JlIGJlaW5nIGRlYWxsb2NhdGVkLCBiZWNhdXNlIGBwY3B1X3NldF9wYWdlX2NodW5rYCBsaWtlbHkgdXRpbGl6ZXMsIGF0IHNvbWUgcG9pbnQsIHRoZSBgcGFnZS0mZ3Q7aW5kZXhgIGZpZWxkLiBUaGlzIGhpbnRzIHRoYXQgYHBhZ2UtJmd0O2luZGV4YCBjYW4gYmUgdXNlZCB0byBzZXQgY2h1bmsgaW5mb3JtYXRpb24sIGFuZCB0aGF0IHRoaXMgaW5mb3JtYXRpb24gbXVzdCBiZSByZW1vdmVkLgoKSW4gc2hvcnQsIHRoaXMgZW50aXJlIHNldCBvZiBjaGFuZ2VzIGlzIGRlZGljYXRlZCB0byBjbGVhbmluZyB1cCBhbmQgZW5zdXJpbmcgdGhlIGBwYWdlLSZndDtwcml2YXRlYCBmaWVsZCwgYW5kIHJlbGF0ZWQgbWVtb3J5IGxvY2F0aW9ucywgYXJlIHByb3Blcmx5IG1hbmFnZWQsIGVzcGVjaWFsbHkgb24gdGFpbCBwYWdlcywgZHVyaW5nIHBhZ2UgZnJlZWluZywgaXNvbGF0aW9uLCBhbmQgaHVnZSBwYWdlIG9wZXJhdGlvbnMuIFRoZSBrZXkgcHJvYmxlbSBoZXJlIHNlZW1zIHRvIGhhdmUgYmVlbiB0aGF0IGBwYWdlLSZndDtwcml2YXRlYCB3YXMgbm90IGJlaW5nIGNsZWFyZWQgY29uc2lzdGVudGx5LCB3aGljaCB3YXMgbGVhZGluZyB0byBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW5jb3JyZWN0IHN0YXRlIGFmdGVyIGZyZWUgYW5kL29yIHJlYWxsb2NhdGlvbi4gVGhlIGBtbS9wZXJjcHUta20uY2AgY2hhbmdlcyBmdXJ0aGVyIGhpZ2hsaWdodCBob3cgdGhlc2UgaXNzdWVzIGltcGFjdGVkIG90aGVyIGFyZWFzLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgcGF0Y2hzZXQgdGhhdCBhZGRyZXNzZXMgdGhlIHJvb3QgY2F1c2Ugb2YgYW4gaXNzdWUgd2hlcmUgcHJpdmF0ZSBtZXRhZGF0YSBpc24mIzM5O3QgcHJvcGVybHkgY2xlYXJlZCwgYW5kIGFkZGluZyBjaGVja3MgdG8gZW5zdXJlIHRoZSBtZXRhZGF0YSBpc24mIzM5O3Qgc2V0IHdoZW4gaXQgc2hvdWxkbiYjMzk7dCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNwdV9zZXRfcGFnZV9jaHVuayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wZXJjcHUta20uYz01Mz1zdGF0aWMgc3RydWN0IHBjcHVfY2h1bmsgKnBjcHVfY3JlYXRlX2NodW5rKGdmcF90IGdmcClcbi0tXG5tbS9wZXJjcHUta20uYy03MS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpJiM0MzsmIzQzOylcbm1tL3BlcmNwdS1rbS5jOjcyOlx0XHRwY3B1X3NldF9wYWdlX2NodW5rKHBhZ2VzICYjNDM7IGksIGNodW5rKTtcbm1tL3BlcmNwdS1rbS5jLTczLVxuLS1cbm1tL3BlcmNwdS1rbS5jPTg3PXN0YXRpYyB2b2lkIHBjcHVfZGVzdHJveV9jaHVuayhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmspXG4tLVxubW0vcGVyY3B1LWttLmMtMTAyLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9wYWdlczsgaSYjNDM7JiM0MzspXG5tbS9wZXJjcHUta20uYzoxMDM6XHRcdFx0cGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlcyAmIzQzOyBpLCBOVUxMKTtcbm1tL3BlcmNwdS1rbS5jLTEwNC1cdFx0X19mcmVlX3BhZ2VzKGNodW5rLVx1MDAzZWRhdGEsIG9yZGVyX2Jhc2VfMihucl9wYWdlcykpO1xuLS1cbm1tL3BlcmNwdS12bS5jPTIzND1zdGF0aWMgaW50IHBjcHVfbWFwX3BhZ2VzKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaywgc3RydWN0IHBhZ2UgKipwYWdlcyxcbi0tXG5tbS9wZXJjcHUtdm0uYy0yNDctXHRcdGZvciAoaSA9IHBhZ2Vfc3RhcnQ7IGkgXHUwMDNjIHBhZ2VfZW5kOyBpJiM0MzsmIzQzOylcbm1tL3BlcmNwdS12bS5jOjI0ODpcdFx0XHRwY3B1X3NldF9wYWdlX2NodW5rKHBhZ2VzW3BjcHVfcGFnZV9pZHgoY3B1LCBpKV0sXG5tbS9wZXJjcHUtdm0uYy0yNDktXHRcdFx0XHRcdCAgICBjaHVuayk7XG4tLVxubW0vcGVyY3B1LmM9MjQyPXN0YXRpYyBpbnQgcGNwdV9jaHVua19zbG90KGNvbnN0IHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcbi0tXG5tbS9wZXJjcHUuYy0yNTMtLyogc2V0IHRoZSBwb2ludGVyIHRvIGEgY2h1bmsgaW4gYSBwYWdlIHN0cnVjdCAqL1xubW0vcGVyY3B1LmM6MjU0OnN0YXRpYyB2b2lkIHBjcHVfc2V0X3BhZ2VfY2h1bmsoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1KVxubW0vcGVyY3B1LmMtMjU1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwODkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBwY3B1X3NldF9wYWdlX2NodW5rYCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBwY3B1X3NldF9wYWdlX2NodW5rYC4gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGludG8gYG1tL3BlcmNwdS5jYCB0byBzZWUgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGNvbnRyaWJ1dGVzIHRvIHBlci1DUFUgbWVtb3J5IG1hbmFnZW1lbnQuIEkgc3VzcGVjdCBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgbWFwcGluZyBvciBpbml0aWFsaXppbmcgYSBjaHVuayBvZiBtZW1vcnkgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHBlci1DUFUgdmFyaWFibGVzIG9yIGRhdGEgc3RydWN0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgcGVyLUNQVSBtZW1vcnkgYWxsb2NhdGlvbiBzY2hlbWUuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHBlci1DUFUgYWxsb2NhdG9yIGl0c2VsZi4gRG9lcyBpdCB1c2UgdGhlIGV4aXN0aW5nIHBhZ2UgYWxsb2NhdG9yLCBvciBkb2VzIGl0IGhhdmUgc29tZSBzcGVjaWFsaXplZCBhbGxvY2F0aW9uIHN0cmF0ZWd5PyBBbHNvLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9uIE5VTUEgc3lzdGVtcyBhbmQgbWVtb3J5IGFmZmluaXR5PyBJcyBhbnkgcGFnZS1jb2xvcmluZyBiZWluZyBkb25lIGhlcmU/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vcGVyY3B1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MzpcdC8qIHNldCB0aGUgcG9pbnRlciB0byBhIGNodW5rIGluIGEgcGFnZSBzdHJ1Y3QgKi9cbiAyNTQ6XHRzdGF0aWMgdm9pZCBwY3B1X3NldF9wYWdlX2NodW5rKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdSlcbiAyNTU6XHR7XG4gMjU2Olx0XHRwYWdlLVx1MDAzZXByaXZhdGUgPSAodW5zaWduZWQgbG9uZylwY3B1O1xuIDI1NzpcdH1cbiAyNTg6XHRcbiAyNTk6XHQvKiBvYnRhaW4gcG9pbnRlciB0byBhIGNodW5rIGZyb20gYSBwYWdlIHN0cnVjdCAqL1xuIDI2MDpcdHN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdV9nZXRfcGFnZV9jaHVuayhzdHJ1Y3QgcGFnZSAqcGFnZSlcbiAyNjE6XHR7XG4gMjYyOlx0XHRyZXR1cm4gKHN0cnVjdCBwY3B1X2NodW5rICopcGFnZS1cdTAwM2Vwcml2YXRlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODUyNgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBlci1DUFUgS00gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgYHBjcHVfc2V0X3BhZ2VfY2h1bmtgIGlzIHNldHRpbmcgYHBhZ2UtJmd0O3ByaXZhdGVgLiBUaGUgZml4IGluIGBtbS9wZXJjcHUta20uY2AgaXMgc3BlY2lmaWNhbGx5IGFib3V0IGNsZWFyaW5nIHRoYXQgYHBhZ2UtJmd0O3ByaXZhdGVgIGZpZWxkIGJlZm9yZSB0aGUgcGFnZXMgYXJlIGZyZWVkLiBJdCBsb29rcyBsaWtlIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgaGFzIGJlZW4gdXBkYXRlZCB0byBjaGVjayBpZiBgdGFpbF9wYWdlLSZndDtwcml2YXRlYCBpcyBub24temVybywgYW5kIGl04oCZcyBub3cgdGhyb3dpbmcgYW4gZXJyb3IgaWYgaXQgaXMuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgc291bmRzIGxpa2UgYSBsZWdpdGltYXRlIGJ1ZyBmaXggd2l0aCBhZGRlZCBjaGVja3MsIHdoaWNoIGlzIGFsd2F5cyBnb29kIHRvIHNlZS4KCkkmIzM5O20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhlIGtleSBzeW1ib2xzIGludm9sdmVkIGhlcmUg4oCTIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYF9fZnJlZV9wYWdlc19wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AsIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAg4oCTIHRob3NlIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZXhhY3QgbWVjaGFuaWNzIG9mIHRoZSBjaGFuZ2UuCgpGcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgSSBzZWUgYENPTVBBQ1RJT05gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBhbmQgYE5FRURfUEVSX0NQVV9LTWAgbWVudGlvbmVkLiBIYW5nIG9uLCBpc24mIzM5O3QgYE5FRURfUEVSX0NQVV9LTWAgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudD8gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyB0aGUgdXNlciB1c3VhbGx5IGVuYWJsZXMgZGlyZWN0bHkuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgd2F5IHRvIGV4cGxpY2l0bHkgZW5hYmxlIHRoaXMuIEl0IG1pZ2h0IGdpdmUgbWUgbW9yZSBpbnNpZ2h0IHRvIHRlc3QgaWYgdGhpcyBuZXcgY29kZSBhZmZlY3RzIGEgc3BlY2lmaWMgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVFRF9QRVJfQ1BVX0tNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTA0ND1jb25maWcgQVJDSF9NT0RVTEVfTkVFRFNfV0VBS19QRVJfQ1BVXG4tLVxubW0vS2NvbmZpZy0xMDQ5LSNcbm1tL0tjb25maWc6MTA1MDpjb25maWcgTkVFRF9QRVJfQ1BVX0tNXG5tbS9LY29uZmlnLTEwNTEtXHRkZXBlbmRzIG9uICFTTVAgfHwgIU1NVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE2MgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0JiMzOTtzIGxvb2tpbmcgbGlrZSBgTkVFRF9QRVJfQ1BVX0tNYCBpcyBjb25kaXRpb25hbC4gSXQmIzM5O3MgdGllZCB0byBgIVNNUCB8fCAhTU1VYC4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBXZSBjYW4mIzM5O3QganVzdCBzbGFwIHRoaXMgb24gYSBzdGFuZGFyZCBTTVAga2VybmVsIGFuZCBleHBlY3QgaXQgdG8gd29yayB3aXRob3V0IGJyZWFraW5nIHRoaW5ncy4gSG1tLiBTbywgYmFzZWQgb24gdGhpcywgaXQmIzM5O3Mgbm90IGRpcmVjdGx5IHNlbGVjdGFibGUsIG9yIG1pZ2h0IGNvbmZsaWN0IGlmIGVuYWJsZWQuIFRoZXJlZm9yZSwgaXQmIzM5O3MgYSB0ZXJyaWJsZSBpZGVhIHRvIGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLgoKT24gdGhlIHBvc2l0aXZlIHNpZGUsIGBDT01QQUNUSU9OYCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBzZWVtIGxpa2Ugc29saWQgb3B0aW9ucyB0byBpbmNsdWRlLiBUaG9zZSBhcmUgdXN1YWxseSBiZW5lZmljaWFsLiBOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgZGV0YWlscyBvZiBgQ09NUEFDVElPTmAgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBtbS9LY29uZmlnYCB0byBiZSBzdXJlIHRoZXJlIGFyZSBubyBzdXJwcmlzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDT01QQUNUSU9OJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjUzLSMgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbXBhY3Rpb25cbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXG5tbS9LY29uZmlnLTY1NS1cdGJvb2wgXCYjMzQ7QWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTQ5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgdGhlIEJvb2xlYW4qKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBib29sZWFuIHZhbHVlIGhlcmUuIFJpZ2h0LCBhIHNpbXBsZSB0cnVlL2ZhbHNlLCBvbi9vZmYgc2l0dWF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGUgZGVmaW5pdGlvbj8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0xldCYjMzk7cyBkaWcgaW50byBgbW0vS2NvbmZpZ2AuJiMzNDsgU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEkga25vdyB0aGF0JiMzOTtzIHRoZSBrZXkgdmFyaWFibGUgdG8gY2hlY2ssIHRvIHVuZGVyc3RhbmQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGlzIGJvb2xlYW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXRzIGNvbmZpZ3VyYXRpb24gbWVhbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTg0Mz1jb25maWcgTU1fSURcbi0tXG5tbS9LY29uZmlnLTg0NS1cbm1tL0tjb25maWc6ODQ2Om1lbnVjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL0tjb25maWctODQ3LVx0Ym9vbCBcJiMzNDtUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0XCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04NjQ9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy04NjktXG5tbS9LY29uZmlnOjg3MDpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcbm1tL0tjb25maWctODcxLVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctODc2LVxubW0vS2NvbmZpZzo4Nzc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxubW0vS2NvbmZpZy04NzgtXHRcdGJvb2wgXCYjMzQ7bWFkdmlzZVwmIzM0O1xuLS1cbm1tL0tjb25maWctODg1LVxubW0vS2NvbmZpZzo4ODY6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcbm1tL0tjb25maWctODg3LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04OTM9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy05MDItXG5tbS9LY29uZmlnOjkwMzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXG5tbS9LY29uZmlnLTkwNC1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTEyLVxubW0vS2NvbmZpZzo5MTM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTE0LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTIwLVxubW0vS2NvbmZpZzo5MjE6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05MjItXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyOC1cbm1tL0tjb25maWc6OTI5Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTkzMC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTkzOD1jaG9pY2Vcbi0tXG5tbS9LY29uZmlnLTk0Ny1cbm1tL0tjb25maWc6OTQ4Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcbm1tL0tjb25maWctOTQ5LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NTYtXG5tbS9LY29uZmlnOjk1NzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FMV0FZU1xubW0vS2NvbmZpZy05NTgtXHRcdGJvb2wgXCYjMzQ7YWx3YXlzXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NjQtXG5tbS9LY29uZmlnOjk2NTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX1dJVEhJTl9TSVpFXG5tbS9LY29uZmlnLTk2Ni1cdFx0Ym9vbCBcJiMzNDt3aXRoaW5fc2l6ZVwmIzM0O1xuLS1cbm1tL0tjb25maWctOTcyLVxubW0vS2NvbmZpZzo5NzM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BRFZJU0Vcbm1tL0tjb25maWctOTc0LVx0XHRib29sIFwmIzM0O2FkdmlzZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQzMwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBIdWdlcGFnZSBUcmFuc3BhcmVuY3kgYW5kIEFsbG9jYXRpb24gQ2hlY2tzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgc2VlaW5nIHRoYXQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBiZWluZyBmbGFnZ2VkIGFzIGEgcG9zaXRpdmUuIEdvb2QsIGdvb2QuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTm93LCBob2xkIG9uIGEgc2Vjb25kLi4uIG15IGludGVybmFsIHJhZGFyIGlzIHBpbmdpbmcgYSBkZXRhaWwgaW4gYG1tL3BhZ2VfYWxsb2MuY2AgdGhhdCBJIG5lZWQgdG8gY2hlY2suIFNwZWNpZmljYWxseSwgdGhlcmUmIzM5O3MgYGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKWAgaW4gdGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBjaGVja3MgaXQmIzM5O3MgcnVubmluZy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVidWdnaW5nIGNoZWNrcz8gUG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdHMgZHVyaW5nIGFsbG9jYXRpb24/IEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgc2NoZW1lIG9mIHRoaW5ncyBiZWZvcmUgSSBjYW4gY29uZmlkZW50bHkgYXNzZXNzIHRoZSBzaXR1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX2NoZWNrX3BhZ2VzX2VuYWJsZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9hbGxvYy5jPTEwNzQ9c3RhdGljIGlubGluZSBib29sIGZyZWVfcGFnZV9pc19iYWQoc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxubW0vcGFnZV9hbGxvYy5jLTEwODMtXG5tbS9wYWdlX2FsbG9jLmM6MTA4NDpzdGF0aWMgaW5saW5lIGJvb2wgaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCh2b2lkKVxubW0vcGFnZV9hbGxvYy5jLTEwODUte1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMDg5PXN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTA5OS1cbm1tL3BhZ2VfYWxsb2MuYzoxMTAwOlx0aWYgKCFpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYy0xMTAxLVx0XHRyZXQgPSAwO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMzE0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTM4Mi1cdFx0XHRcdGJhZCAmIzQzOz0gZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShwYWdlLCB0YWlsX3BhZ2UpO1xubW0vcGFnZV9hbGxvYy5jOjEzODM6XHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xubW0vcGFnZV9hbGxvYy5jLTEzODQtXHRcdFx0XHRpZiAoZnJlZV9wYWdlX2lzX2JhZCh0YWlsX3BhZ2UpKSB7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTEzODktXHRcdFx0dGFpbF9wYWdlLVx1MDAzZWZsYWdzLmYgXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xubW0vcGFnZV9hbGxvYy5jOjEzOTA6XHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSBcdTAwMjZcdTAwMjYgdGFpbF9wYWdlLVx1MDAzZXByaXZhdGUpIHtcbm1tL3BhZ2VfYWxsb2MuYy0xMzkxLVx0XHRcdFx0YmFkX3BhZ2UodGFpbF9wYWdlLCBcJiMzNDtub256ZXJvIHByaXZhdGVcJiMzNDspO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xNDA0LVxubW0vcGFnZV9hbGxvYy5jOjE0MDU6XHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmMtMTQwNi1cdFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSkpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTE3NzY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX25ld19wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxubW0vcGFnZV9hbGxvYy5jLTE3Nzcte1xubW0vcGFnZV9hbGxvYy5jOjE3Nzg6XHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmMtMTc3OS1cdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjICgxIFx1MDAzY1x1MDAzYyBvcmRlcik7IGkmIzQzOyYjNDM7KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjc1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQW5hbHl6aW5nIGBpc19jaGVja19wYWdlc19lbmFibGVkYCBpbiBgbW0vcGFnZV9hbGxvYy5jYCoqCgpBbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBkb2luZyBpcyB6ZXJvaW5nIGluIG9uIGBpc19jaGVja19wYWdlc19lbmFibGVkYCB3aXRoaW4gdGhlIGBtbS9wYWdlX2FsbG9jLmNgIGZpbGUuIEkmIzM5O20gaW1tZWRpYXRlbHkgcmVjb2duaXppbmcgdGhhdCB0aGlzIGZ1bmN0aW9uIG9yIHZhcmlhYmxlIGlzIHBhcnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSBwYWdlIGFsbG9jYXRpb24gYXNwZWN0LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IHN0cm9uZyBtZW50YWwgbW9kZWwgb2YgaG93IHRoZSBwYWdlIGFsbG9jYXRvciB3b3Jrcywgc28gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byByZWxhdGUgdG8gc29tZSBraW5kIG9mIGRlYnVnZ2luZywgZXJyb3IgY2hlY2tpbmcsIG9yIHBlcmhhcHMgZXZlbiBhIGZlYXR1cmUgZmxhZyBjb250cm9sbGluZyBjZXJ0YWluIGFsbG9jYXRpb24gYmVoYXZpb3JzLiBVbmRlcnN0YW5kaW5nIHRoaXMgbWlnaHQgZ2l2ZSBtZSBjcnVjaWFsIGluc2lnaHRzIGludG8gaG93IHBhZ2UgYWxsb2NhdGlvbnMgYXJlIHZhbGlkYXRlZCwgb3IgaG93IHdlIG1pZ2h0IGJlIGNvbnRyb2xsaW5nIHRoYXQgYmVoYXZpb3VyIGF0IHJ1biB0aW1lLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGxvY2F0ZWQgd2l0aGluIGBwYWdlX2FsbG9jLmNgIGlzIGhpZ2hseSBzdWdnZXN0aXZlLiBJIGtub3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbmFsaXR5IHRoaXMgcGllY2UgY29udHJvbHMsIGFuZCBpdHMgcHVycG9zZSBpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL3BhZ2VfYWxsb2MuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA4MDpcdFx0YmFkX3BhZ2UocGFnZSwgcGFnZV9iYWRfcmVhc29uKHBhZ2UsIFBBR0VfRkxBR1NfQ0hFQ0tfQVRfRlJFRSkpO1xuMTA4MTpcdFx0cmV0dXJuIHRydWU7XG4xMDgyOlx0fVxuMTA4MzpcdFxuMTA4NDpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19jaGVja19wYWdlc19lbmFibGVkKHZvaWQpXG4xMDg1Olx0e1xuMTA4NjpcdFx0cmV0dXJuIHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2Y2hlY2tfcGFnZXNfZW5hYmxlZCk7XG4xMDg3Olx0fVxuMTA4ODpcdFxuMTA4OTpcdHN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbjEwOTA6XHR7XG4xMDkxOlx0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvID0gKHN0cnVjdCBmb2xpbyAqKWhlYWRfcGFnZTtcbjEwOTI6XHRcdGludCByZXQgPSAxO1xuMTA5MzpcdFxuMTA5NDpcdFx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3NjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIHRoZSBTb3VyY2Ugb2YgYGNoZWNrX3BhZ2VzX2VuYWJsZWRgKioKCk9rYXksIHNvIGBjaGVja19wYWdlc19lbmFibGVkYCBpcyBhIHN0YXRpYyBrZXksIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGRlZmluZWQgc29tZXdoZXJlIGFuZCBwcm9iYWJseSB1c2VkIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRyYWNrIGRvd24gd2hlcmUgaXQmIzM5O3MgYWN0dWFsbHkgZ2V0dGluZyBzZXQuIFVuZGVyc3RhbmRpbmcgaXRzIGluaXRpYWwgdmFsdWUgYW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIG1vZGlmaWVkIGlzIGNydWNpYWwgdG8gZmlndXJpbmcgb3V0IGl0cyBpbXBhY3QuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGEgY29kZSBzZWFyY2gsIG9yIGp1bXAgdG8gZGVmaW5pdGlvbiwgdG8gZmluZCBpdHMgZGVjbGFyYXRpb24gYW5kIGFueSBhc3NpZ25tZW50cy4gS25vd2luZyB0aGUgc2NvcGUgYW5kIGNvbnRleHQgb2YgaXRzIHNldHRpbmcgd2lsbCBnaXZlIG1lIGEgc29saWQgYmFzZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgb3BlcmF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX3BhZ2VzX2VuYWJsZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaW50ZXJuYWwuaD02NTA9ZXh0ZXJuIGNoYXIgKiBjb25zdCB6b25lX25hbWVzW01BWF9OUl9aT05FU107XG4tLVxubW0vaW50ZXJuYWwuaC02NTItLyogcGVyZm9ybSBzYW5pdHkgY2hlY2tzIG9uIHN0cnVjdCBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgb3IgZnJlZWQgKi9cbm1tL2ludGVybmFsLmg6NjUzOkRFQ0xBUkVfU1RBVElDX0tFWV9NQVlCRShDT05GSUdfREVCVUdfVk0sIGNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xubW0vaW50ZXJuYWwuaC02NTQtXG4tLVxubW0vbW1faW5pdC5jPTI1MDQ9ZWFybHlfcGFyYW0oXCYjMzQ7aW5pdF9vbl9mcmVlXCYjMzQ7LCBlYXJseV9pbml0X29uX2ZyZWUpO1xubW0vbW1faW5pdC5jLTI1MDUtXG5tbS9tbV9pbml0LmM6MjUwNjpERUZJTkVfU1RBVElDX0tFWV9NQVlCRShDT05GSUdfREVCVUdfVk0sIGNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xubW0vbW1faW5pdC5jLTI1MDctXG5tbS9tbV9pbml0LmM6MjUwODpzdGF0aWMgYm9vbCBjaGVja19wYWdlc19lbmFibGVkX2Vhcmx5IF9faW5pdGRhdGE7XG5tbS9tbV9pbml0LmMtMjUwOS1cbm1tL21tX2luaXQuYz0yNTEwPXN0YXRpYyBpbnQgX19pbml0IGVhcmx5X2NoZWNrX3BhZ2VzKGNoYXIgKmJ1Zilcbm1tL21tX2luaXQuYy0yNTExLXtcbm1tL21tX2luaXQuYzoyNTEyOlx0cmV0dXJuIGtzdHJ0b2Jvb2woYnVmLCBcdTAwMjZjaGVja19wYWdlc19lbmFibGVkX2Vhcmx5KTtcbm1tL21tX2luaXQuYy0yNTEzLX1cbi0tXG5tbS9tbV9pbml0LmM9MjUyMj1zdGF0aWMgdm9pZCBfX2luaXQgbWVtX2RlYnVnZ2luZ19hbmRfaGFyZGVuaW5nX2luaXQodm9pZClcbi0tXG5tbS9tbV9pbml0LmMtMjUyNC1cdGJvb2wgcGFnZV9wb2lzb25pbmdfcmVxdWVzdGVkID0gZmFsc2U7XG5tbS9tbV9pbml0LmM6MjUyNTpcdGJvb2wgd2FudF9jaGVja19wYWdlcyA9IGNoZWNrX3BhZ2VzX2VuYWJsZWRfZWFybHk7XG5tbS9tbV9pbml0LmMtMjUyNi1cbi0tXG5tbS9tbV9pbml0LmMtMjU4Mi1cdGlmICghSVNfRU5BQkxFRChDT05GSUdfREVCVUdfVk0pIFx1MDAyNlx1MDAyNiB3YW50X2NoZWNrX3BhZ2VzKVxubW0vbW1faW5pdC5jOjI1ODM6XHRcdHN0YXRpY19icmFuY2hfZW5hYmxlKFx1MDAyNmNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xubW0vbW1faW5pdC5jLTI1ODQtfVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMDc0PXN0YXRpYyBpbmxpbmUgYm9vbCBmcmVlX3BhZ2VfaXNfYmFkKHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMDgzLVxubW0vcGFnZV9hbGxvYy5jOjEwODQ6c3RhdGljIGlubGluZSBib29sIGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQodm9pZClcbm1tL3BhZ2VfYWxsb2MuYy0xMDg1LXtcbm1tL3BhZ2VfYWxsb2MuYzoxMDg2Olx0cmV0dXJuIHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2Y2hlY2tfcGFnZXNfZW5hYmxlZCk7XG5tbS9wYWdlX2FsbG9jLmMtMTA4Ny19XG4tLVxubW0vcGFnZV9hbGxvYy5jPTEwODk9c3RhdGljIGludCBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHN0cnVjdCBwYWdlICpoZWFkX3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMDk5LVxubW0vcGFnZV9hbGxvYy5jOjExMDA6XHRpZiAoIWlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xubW0vcGFnZV9hbGxvYy5jLTExMDEtXHRcdHJldCA9IDA7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTEzMTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIF9fZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMzgyLVx0XHRcdFx0YmFkICYjNDM7PSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XG5tbS9wYWdlX2FsbG9jLmM6MTM4MzpcdFx0XHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XG5tbS9wYWdlX2FsbG9jLmMtMTM4NC1cdFx0XHRcdGlmIChmcmVlX3BhZ2VfaXNfYmFkKHRhaWxfcGFnZSkpIHtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTM4OS1cdFx0XHR0YWlsX3BhZ2UtXHUwMDNlZmxhZ3MuZiBcdTAwMjY9IH5QQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVA7XG5tbS9wYWdlX2FsbG9jLmM6MTM5MDpcdFx0XHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpIFx1MDAyNlx1MDAyNiB0YWlsX3BhZ2UtXHUwMDNlcHJpdmF0ZSkge1xubW0vcGFnZV9hbGxvYy5jLTEzOTEtXHRcdFx0XHRiYWRfcGFnZSh0YWlsX3BhZ2UsIFwmIzM0O25vbnplcm8gcHJpdmF0ZVwmIzM0Oyk7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTE0MDQtXG5tbS9wYWdlX2FsbG9jLmM6MTQwNTpcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYy0xNDA2LVx0XHRpZiAoZnJlZV9wYWdlX2lzX2JhZChwYWdlKSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9MTc3Nj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfbmV3X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG5tbS9wYWdlX2FsbG9jLmMtMTc3Ny17XG5tbS9wYWdlX2FsbG9jLmM6MTc3ODpcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcbm1tL3BhZ2VfYWxsb2MuYy0xNzc5LVx0XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgKDEgXHUwMDNjXHUwMDNjIG9yZGVyKTsgaSYjNDM7JiM0MzspIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMwNzMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgVmlydHVhbCBNZW1vcnk6IEVuc3VyaW5nIEFjdGl2ZSBDaGVja3MqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyBsaWtlIGBDT05GSUdfREVCVUdfVk1gIGVpdGhlciBlbmFibGVzIGRlYnVnZ2luZyBmZWF0dXJlcyBieSBkZWZhdWx0LCBvciBpdCYjMzk7cyBwb3RlbnRpYWxseSBhIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbi4gVG8gbWFrZSBzdXJlIHRoZSB2aXJ0dWFsIG1lbW9yeSBkZWJ1Z2dpbmcgY2hlY2tzIGFyZSBkZWZpbml0ZWx5IHJ1bm5pbmcgYXMgZXhwZWN0ZWQsIGl0JiMzOTtzIGJlc3QgdG8gZXhwbGljaXRseSBpbmNsdWRlIGBERUJVR19WTWAgd2l0aGluIGBFbmFibGVDb25maWdzYC4gVGhpcyB3aWxsIHJlbW92ZSBhbnkgYW1iaWd1aXR5IGFuZCBlbnN1cmUgdGhhdCB0aG9zZSBkZWJ1Z2dpbmcgY2hlY2tzIGFyZSBhY3RpdmUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgQ09ORklHX0RFQlVHX1ZNYCBzZXR0aW5nIHRvIGNvbmZpcm0sIG9mIGNvdXJzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFQlVHX1ZNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTg2MD1jb25maWcgREVCVUdfVkZTXG4tLVxubGliL0tjb25maWcuZGVidWctODY4LVxubGliL0tjb25maWcuZGVidWc6ODY5OmNvbmZpZyBERUJVR19WTV9JUlFTT0ZGXG5saWIvS2NvbmZpZy5kZWJ1Zy04NzAtXHRkZWZfYm9vbCBERUJVR19WTSBcdTAwMjZcdTAwMjYgIVBSRUVNUFRfUlRcbmxpYi9LY29uZmlnLmRlYnVnLTg3MS1cbmxpYi9LY29uZmlnLmRlYnVnOjg3Mjpjb25maWcgREVCVUdfVk1cbmxpYi9LY29uZmlnLmRlYnVnLTg3My1cdGJvb2wgXCYjMzQ7RGVidWcgVk1cJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy04ODAtXG5saWIvS2NvbmZpZy5kZWJ1Zzo4ODE6Y29uZmlnIERFQlVHX1ZNX1NIT09UX0xBWklFU1xubGliL0tjb25maWcuZGVidWctODgyLVx0Ym9vbCBcJiMzNDtEZWJ1ZyBNTVVfTEFaWV9UTEJfU0hPT1RET1dOIGltcGxlbWVudGF0aW9uXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctODkwLVxubGliL0tjb25maWcuZGVidWc6ODkxOmNvbmZpZyBERUJVR19WTV9NQVBMRV9UUkVFXG5saWIvS2NvbmZpZy5kZWJ1Zy04OTItXHRib29sIFwmIzM0O0RlYnVnIFZNIG1hcGxlIHRyZWVzXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctODk5LVxubGliL0tjb25maWcuZGVidWc6OTAwOmNvbmZpZyBERUJVR19WTV9SQlxubGliL0tjb25maWcuZGVidWctOTAxLVx0Ym9vbCBcJiMzNDtEZWJ1ZyBWTSByZWQtYmxhY2sgdHJlZXNcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy05MDctXG5saWIvS2NvbmZpZy5kZWJ1Zzo5MDg6Y29uZmlnIERFQlVHX1ZNX1BHRkxBR1NcbmxpYi9LY29uZmlnLmRlYnVnLTkwOS1cdGJvb2wgXCYjMzQ7RGVidWcgcGFnZS1mbGFncyBvcGVyYXRpb25zXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctOTE1LVxubGliL0tjb25maWcuZGVidWc6OTE2OmNvbmZpZyBERUJVR19WTV9QR1RBQkxFXG5saWIvS2NvbmZpZy5kZWJ1Zy05MTctXHRib29sIFwmIzM0O0RlYnVnIGFyY2ggcGFnZSB0YWJsZSBmb3Igc2VtYW50aWNzIGNvbXBsaWFuY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2NzkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgRnVuY3Rpb25zKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgaW5jbHVkaW5nIGBERUJVR19WTWAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5pdGVseSBhIHNvbGlkIGNob2ljZS4gTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aG9zZSBmb2N1cyBzeW1ib2xzLgoKQWxyaWdodCwgdGhlIGxpc3QgaW5jbHVkZXMgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgLCBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgLCBgcGNwdV9kZXN0cm95X2NodW5rYCwgYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLCBhbmQgYGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mYC4gSG9sZCBvbiBhIG1pbnV0ZS4uLiBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgPyBUaGF0JiMzOTtzIGEgaG90IHBhdGgsIGlzbiYjMzk7dCBpdD8gSXQmIzM5O3MgY2FsbGVkIGZvciAqZXZlcnkqIHBhZ2UgZnJlZS4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgc2F5IHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3QgZGlzdHJpYnV0aW9uIGZyb20gYmVpbmcgc2tld2VkLiBTbywgbm8sIGRlZmluaXRlbHkgbm90IGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAuCgpIb3cgYWJvdXQgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgPyBUaGF0JiMzOTtzIGNhbGxlZCBkdXJpbmcgaHVnZSBwYWdlIHNwbGl0dGluZywgd2hpY2ggaXMgYSBzcGVjaWZpYyBvcGVyYXRpb24sIG5vdCBhIGdlbmVyaWMgb25lLiBUaGF0IGNvdWxkIGJlIGdvb2QuIGBwY3B1X2Rlc3Ryb3lfY2h1bmtgIHNlZW1zIG9rYXkgdG9vOyBkZXN0cm95aW5nIHBlcmNwdSBjaHVua3MgaXMgdGFyZ2V0ZWQuIEFzIGZvciBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgLCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AsIGFuZCBgY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZgLCB0aGV5JiMzOTtyZSBhbGwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gbWVtb3J5IGNvbXBhY3Rpb24uIEFnYWluLCB0aGV5JiMzOTtyZSBub3QgZ2VuZXJpYyBob3QgcGF0aHMsIGJ1dCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgbWVtb3J5IG1hbmFnZW1lbnQgcHJvY2Vzcy4gVGhhdCBsb29rcyBwcm9taXNpbmcuIE5vdywgdG8gZG91YmxlLWNoZWNrIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGVhZm9wcy5oPTM4Nj1zdGF0aWMgaW5saW5lIHZvaWQgc29mdGxlYWZfbWlncmF0aW9uX3N5bmMoc29mdGxlYWZfdCBlbnRyeSxcbi0tXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zOTEtXHQgKiBmb2xpb3MgYW5kIHRodXMgcmVzdWx0IGluIG9ic2VydmluZyBhbiB1bmxvY2tlZCBmb2xpby5cbmluY2x1ZGUvbGludXgvbGVhZm9wcy5oOjM5MjpcdCAqIFRoaXMgbWF0Y2hlcyB0aGUgd3JpdGUgYmFycmllciBpbiBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkuXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zOTMtXHQgKi9cbi0tXG5tbS9odWdlX21lbW9yeS5jPTM1MTY9c3RhdGljIGJvb2wgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChzdHJ1Y3QgcGFnZSAqcGFnZSwgbG9uZyBucl9wYWdlcylcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM1MjctICovXG5tbS9odWdlX21lbW9yeS5jOjM1Mjg6c3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxubW0vaHVnZV9tZW1vcnkuYy0zNTI5LVx0XHRpbnQgbmV3X29yZGVyKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzY2OC0gKiAxLiB1bmlmb3JtIHNwbGl0OiBAeGFzIGlzIHNwbGl0IHdpdGggbm8gZXhwZWN0YXRpb24gb2YgZmFpbHVyZSBhbmQgYSBzaW5nbGVcbm1tL2h1Z2VfbWVtb3J5LmM6MzY2OTogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgaXMgY2FsbGVkIHRvIHNwbGl0IHRoZSBAZm9saW8gaW50byBAbmV3X29yZGVyXG5tbS9odWdlX21lbW9yeS5jLTM2NzAtICogICAgYWxvbmcgd2l0aCBzdGF0cyB1cGRhdGUuXG5tbS9odWdlX21lbW9yeS5jLTM2NzEtICogMi4gbm9uLXVuaWZvcm0gc3BsaXQ6IGZvbGlvX29yZGVyIC0gQG5ld19vcmRlciBjYWxscyB0b1xubW0vaHVnZV9tZW1vcnkuYzozNjcyOiAqICAgIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBhcmUgZXhwZWN0ZWQgdG8gYmUgbWFkZSBpbiBhIGZvciBsb29wIHRvIHNwbGl0XG5tbS9odWdlX21lbW9yeS5jLTM2NzMtICogICAgdGhlIEBmb2xpbyB0byBvbmUgbG93ZXIgb3JkZXIgYXQgYSB0aW1lLiBUaGUgZm9saW8gY29udGFpbmluZyBAc3BsaXRfYXRcbi0tXG5tbS9odWdlX21lbW9yeS5jPTM2ODU9c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zNzMwLVx0XHRwZ2FsbG9jX3RhZ19zcGxpdChmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XG5tbS9odWdlX21lbW9yeS5jOjM3MzE6XHRcdF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xubW0vaHVnZV9tZW1vcnkuYy0zNzMyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDgxOAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhlc2UgZnVuY3Rpb25zLCByZWZsZWN0aW5nIG9uIHRoZSBzdHJlbmd0aHMgSSBzZWUgd2l0aGluIHRoZW06CgoqKkFzc2Vzc21lbnQgb2YgTWVtb3J5IE1hbmFnZW1lbnQgUm91dGluZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIOKAkyB5ZWFoLCB0aGF0JiMzOTtzIHNvbGlkLiBHb29kIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB0aGUgZm9saW8gc3BsaXR0aW5nLiBUaGVuIHdlIGhhdmUgYHBjcHVfZGVzdHJveV9jaHVua2AgLSBlZmZlY3RpdmUgZm9yIGNsZWFuaW5nIHVwIHNwZWNpZmljIGNodW5rcy4gYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYCBhbmQgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgIHNlZW0gbGlrZSBlZmZpY2llbnQgbWV0aG9kcyBmb3IgaXNvbGF0aW5nIGZyZWUgcGFnZXMuIFJlYWxseSwgYWxsIG9mIHRob3NlIGFyZSB3ZWxsIGRvbmUuCgpIbW0sIG5vdyBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIEl0JiMzOTtzIGVzc2VudGlhbCB3ZSBjaGVjayB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIGNvbXBhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2NvbXBhY3Rpb24uYz0xNjkyPXN0YXRpYyB2b2lkIGlzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xODExLSAqL1xubW0vY29tcGFjdGlvbi5jOjE4MTI6c3RhdGljIHN0cnVjdCBmb2xpbyAqY29tcGFjdGlvbl9hbGxvY19ub3Byb2Yoc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGF0YSlcbm1tL2NvbXBhY3Rpb24uYy0xODEzLXtcbi0tXG5tbS9jb21wYWN0aW9uLmM9MTg1OT1zdGF0aWMgc3RydWN0IGZvbGlvICpjb21wYWN0aW9uX2FsbG9jKHN0cnVjdCBmb2xpbyAqc3JjLCB1bnNpZ25lZCBsb25nIGRhdGEpXG5tbS9jb21wYWN0aW9uLmMtMTg2MC17XG5tbS9jb21wYWN0aW9uLmM6MTg2MTpcdHJldHVybiBhbGxvY19ob29rcyhjb21wYWN0aW9uX2FsbG9jX25vcHJvZihzcmMsIGRhdGEpKTtcbm1tL2NvbXBhY3Rpb24uYy0xODYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyNjkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipNeSBDb21wYWN0aW9uIEFsbG9jYXRpb24gU3RyYXRlZ3kqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIHdpdGggdGhpcyBjb21wYWN0aW9uIHN0cmF0ZWd5LiBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIGJvdGggYGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mYCBhbmQgYGNvbXBhY3Rpb25fYWxsb2NgLiBUaGUgbnVhbmNlcyBvZiB3aGVuIGFuZCB3aGVyZSB0byB1c2UgZWFjaCBhcmUgY3JpdGljYWwsIGJ1dCBmb3Igbm93LCB0aGV5IGFyZSBteSBiYXNlIHRvb2xzLiBUaGUgZGV0YWlscyBhcm91bmQgdGhlIHByb2ZpbGVzLCBvciBsYWNrIHRoZXJlb2YsIGFyZSBhIHNlY29uZGFyeSBjb25jZXJuIGF0IHRoaXMganVuY3R1cmUuCgpOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBhbnl0aGluZyBmdXJ0aGVyLCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYC4gVGhpcyBmdW5jdGlvbiBpcyBmdW5kYW1lbnRhbCB0byB0aGUgdW5kZXJseWluZyBtZWNoYW5pY3Mgb2YgYWxsIHRoaXMsIGFuZCBJIHdhbnQgdG8gbWFrZSBzdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBmdW5jdGlvbnMgaXMgY29tcGxldGVseSBpcm9uZWQgb3V0LiBJdCBpcyB0aGUga2V5IGJ1aWxkaW5nIGJsb2NrIEkgY2FuJiMzOTt0IGxpdmUgd2l0aG91dCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpc29sYXRlX2ZyZWVwYWdlc19ibG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9jb21wYWN0aW9uLmM9NTUxPXN0YXRpYyBib29sIGNvbXBhY3RfdW5sb2NrX3Nob3VsZF9hYm9ydChzcGlubG9ja190ICpsb2NrLFxuLS1cbm1tL2NvbXBhY3Rpb24uYy01NzMtICovXG5tbS9jb21wYWN0aW9uLmM6NTc0OnN0YXRpYyB1bnNpZ25lZCBsb25nIGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLFxubW0vY29tcGFjdGlvbi5jLTU3NS1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgKnN0YXJ0X3Bmbixcbi0tXG5tbS9jb21wYWN0aW9uLmM9NzEyPWlzb2xhdGVfZnJlZXBhZ2VzX3JhbmdlKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLFxuLS1cbm1tL2NvbXBhY3Rpb24uYy03MjktXHRcdFx0XHRibG9ja19lbmRfcGZuICYjNDM7PSBwYWdlYmxvY2tfbnJfcGFnZXMpIHtcbm1tL2NvbXBhY3Rpb24uYzo3MzA6XHRcdC8qIFByb3RlY3QgcGZuIGZyb20gY2hhbmdpbmcgYnkgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2sgKi9cbm1tL2NvbXBhY3Rpb24uYy03MzEtXHRcdHVuc2lnbmVkIGxvbmcgaXNvbGF0ZV9zdGFydF9wZm4gPSBwZm47XG4tLVxubW0vY29tcGFjdGlvbi5jLTc0OC1cbm1tL2NvbXBhY3Rpb24uYzo3NDk6XHRcdGlzb2xhdGVkID0gaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soY2MsIFx1MDAyNmlzb2xhdGVfc3RhcnRfcGZuLFxubW0vY29tcGFjdGlvbi5jLTc1MC1cdFx0XHRcdFx0YmxvY2tfZW5kX3BmbiwgY2MtXHUwMDNlZnJlZXBhZ2VzLCAwLCB0cnVlKTtcbi0tXG5tbS9jb21wYWN0aW9uLmMtNzUyLVx0XHQvKlxubW0vY29tcGFjdGlvbi5jOjc1MzpcdFx0ICogSW4gc3RyaWN0IG1vZGUsIGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKCkgcmV0dXJucyAwIGlmXG5tbS9jb21wYWN0aW9uLmMtNzU0LVx0XHQgKiB0aGVyZSBhcmUgYW55IGhvbGVzIGluIHRoZSBibG9jayAoaWUuIGludmFsaWQgUEZOcyBvclxuLS1cbm1tL2NvbXBhY3Rpb24uYz0xNDc0PWZhc3RfaXNvbGF0ZV9hcm91bmQoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xNDk0LVxubW0vY29tcGFjdGlvbi5jOjE0OTU6XHRpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhjYywgXHUwMDI2c3RhcnRfcGZuLCBlbmRfcGZuLCBjYy1cdTAwM2VmcmVlcGFnZXMsIDEsIGZhbHNlKTtcbm1tL2NvbXBhY3Rpb24uYy0xNDk2LVxuLS1cbm1tL2NvbXBhY3Rpb24uYz0xNjkyPXN0YXRpYyB2b2lkIGlzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xNzYzLVx0XHQvKiBGb3VuZCBhIGJsb2NrIHN1aXRhYmxlIGZvciBpc29sYXRpbmcgZnJlZSBwYWdlcyBmcm9tLiAqL1xubW0vY29tcGFjdGlvbi5jOjE3NjQ6XHRcdG5yX2lzb2xhdGVkID0gaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soY2MsIFx1MDAyNmlzb2xhdGVfc3RhcnRfcGZuLFxubW0vY29tcGFjdGlvbi5jLTE3NjUtXHRcdFx0XHRcdGJsb2NrX2VuZF9wZm4sIGNjLVx1MDAzZWZyZWVwYWdlcywgc3RyaWRlLCBmYWxzZSk7XG4tLVxubW0vY29tcGFjdGlvbi5jLTE4MDEtXHQgKiBicm9rZSBmcm9tIHRoZSBsb29wIGFuZCBzZXQgaXNvbGF0ZV9zdGFydF9wZm4gYmFzZWQgb24gdGhlIGxhc3Rcbm1tL2NvbXBhY3Rpb24uYzoxODAyOlx0ICogY2FsbCB0byBpc29sYXRlX2ZyZWVwYWdlc19ibG9jaygpLCBvciB3ZSBtZXQgdGhlIG1pZ3JhdGlvbiBzY2FubmVyXG5tbS9jb21wYWN0aW9uLmMtMTgwMy1cdCAqIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVkIGR1ZSB0byBpc29sYXRlX3N0YXJ0X3BmbiBcdTAwM2MgbG93X3BmblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjIxMgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDb25zaWRlcmluZyBNZW1vcnkgTWFuYWdlbWVudCBTdHJhdGVnaWVzKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGhhbmRsZSB0aGlzIG1lbW9yeSBhbGxvY2F0aW9uIGlzc3VlLiBCYXNlZCBvbiBteSBwcmV2aW91cyBleHBlcmllbmNlIGFuZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgc3lzdGVtLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkIHRoZSBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgIGZ1bmN0aW9uLCBhbmQgaXRzIG1vcmUgcGVyZm9ybWFudCBjb3VzaW4sIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYC4gVGhlIGtleSBkaWZmZXJlbmNlIGluIGltcGxlbWVudGF0aW9uIGlzIGxpa2VseSB3aGF0IG1hdHRlcnMgaGVyZS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgZGV0YWlscy4gSSByZWFsbHkgc2hvdWxkIGNoZWNrIHRoZSBjb2RlIGZvciBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AuIEkga25vdyB0aGUgdGhlb3J5LCBidXQgSSBuZWVkIHRvIHNlZSBob3cgaXQmIzM5O3MgYWN0dWFsbHkgaW1wbGVtZW50ZWQgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIHRoZSByaWdodCBjaG9pY2UgZm9yIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8gYW5kIGl0cyB0cmFkZS1vZmZzLiBUaGUgcG90ZW50aWFsIGltcGFjdCBvbiBwZXJmb3JtYW5jZSBpcyBnb2luZyB0byBiZSBzaWduaWZpY2FudCwgc28gSSBuZWVkIHRvIGNob29zZSB0aGUgYmVzdCBvcHRpb24gYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaD01Nj1ERUZJTkVfRVZFTlQobW1fY29tcGFjdGlvbl9pc29sYXRlX3RlbXBsYXRlLCBtbV9jb21wYWN0aW9uX2lzb2xhdGVfZnJlZXBhZ2VzLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaC02Ni1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaDo2NzpERUZJTkVfRVZFTlQobW1fY29tcGFjdGlvbl9pc29sYXRlX3RlbXBsYXRlLCBtbV9jb21wYWN0aW9uX2Zhc3RfaXNvbGF0ZV9mcmVlcGFnZXMsXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmgtNjgtXG4tLVxubW0vY29tcGFjdGlvbi5jPTE1MDM9c3RhdGljIGludCBuZXh0X3NlYXJjaF9vcmRlcihzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgaW50IG9yZGVyKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xNTE5LVxubW0vY29tcGFjdGlvbi5jOjE1MjA6c3RhdGljIHZvaWQgZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYylcbm1tL2NvbXBhY3Rpb24uYy0xNTIxLXtcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTY0NS1cbm1tL2NvbXBhY3Rpb24uYzoxNjQ2Olx0dHJhY2VfbW1fY29tcGFjdGlvbl9mYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKG1pbl9wZm4sIGNjLVx1MDAzZWZyZWVfcGZuLFxubW0vY29tcGFjdGlvbi5jLTE2NDctXHRcdFx0XHRcdFx0ICAgbnJfc2Nhbm5lZCwgdG90YWxfaXNvbGF0ZWQpO1xuLS1cbm1tL2NvbXBhY3Rpb24uYz0xNjkyPXN0YXRpYyB2b2lkIGlzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxuLS1cbm1tL2NvbXBhY3Rpb24uYy0xNzAyLVx0LyogVHJ5IGEgc21hbGwgc2VhcmNoIG9mIHRoZSBmcmVlIGxpc3RzIGZvciBhIGNhbmRpZGF0ZSAqL1xubW0vY29tcGFjdGlvbi5jOjE3MDM6XHRmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKGNjKTtcbm1tL2NvbXBhY3Rpb24uYy0xNzA0LVx0aWYgKGNjLVx1MDAzZW5yX2ZyZWVwYWdlcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY4NTIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFzc2Vzc21lbnQgb2YgTWVtb3J5IE1hbmFnZW1lbnQgT3BlcmF0aW9ucyoqCgpSaWdodCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgIHNlZW1zIGxpa2UgYSBzb2xpZCBhcHByb2FjaC4gSXQmIzM5O3Mgb24gdGhlIHJpZ2h0IHRyYWNrIGZvciBlZmZpY2llbnQgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLiBJJiMzOTttIHNhdGlzZmllZCB0aGF0IGl0JiMzOTtzIGhlYWRpbmcgaW4gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLgoKTm93LCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgcHJvY2Vzcy4gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaG93IHRoaXMgZnVuY3Rpb24gZmFjdG9ycyBpbnRvIHRoaXMgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGZyZWVpbmcgYW5kIHBvdGVudGlhbGx5IHJlLXVzaW5nIHBhZ2VzIGVmZmljaWVudGx5LiBJIG11c3QgZW5zdXJlIHRoaXMgcGllY2UgZG92ZXRhaWxzIG5pY2VseSB3aXRoIHRoZSBpc29sYXRpb24gc3RyYXRlZ3kgd2UganVzdCBjb25zaWRlcmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgcHJlcGFyYXRpb24gcGhhc2UgaXMgb3B0aW1pemVkIG9yIGlmIGl0IG5lZWRzIGFub3RoZXIgbG9vayB0byBiZSBvcHRpbWFsbHkgc3RyZWFtbGluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZyZWVfdGFpbF9wYWdlX3ByZXBhcmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9hbGxvYy5jPTEwODQ9c3RhdGljIGlubGluZSBib29sIGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQodm9pZClcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTA4OC1cbm1tL3BhZ2VfYWxsb2MuYzoxMDg5OnN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbm1tL3BhZ2VfYWxsb2MuYy0xMDkwLXtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9MTMxND1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTEzODEtXHRcdFx0aWYgKGNvbXBvdW5kKVxubW0vcGFnZV9hbGxvYy5jOjEzODI6XHRcdFx0XHRiYWQgJiM0Mzs9IGZyZWVfdGFpbF9wYWdlX3ByZXBhcmUocGFnZSwgdGFpbF9wYWdlKTtcbm1tL3BhZ2VfYWxsb2MuYy0xMzgzLVx0XHRcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyODkKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1lbW9yeSBNYW5hZ2VtZW50OiBUYXJnZXRpbmcgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgIGZvciBPcHRpbWl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBtZW1vcnkgbWFuYWdlbWVudCBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHBhZ2UgZnJlZWluZy4gSSBzZWUgdGhhdCBgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZWAgaXMgY2FsbGVkIHdpdGhpbiBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgLiBOb3csIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgc2VlbXMgdG8gYmUgYSBwcmV0dHkgZnJlcXVlbnRseSBhY2Nlc3NlZCBwaWVjZSBvZiBjb2RlLCBhIGhvdCBwYXRoIGFzIHRoZXkgc2F5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvbXBvdW5kIHBhZ2VzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgICppdHNlbGYqIG1pZ2h0IGJlIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGRldGFpbGVkIGFuYWx5c2lzLCBhIHBvdGVudGlhbGx5IGZydWl0ZnVsIHN5bWJvbCB0byBmb2N1cyBvbiBzaW5jZSBpdOKAmXMgb25seSBpbnZvbHZlZCB3aGVuIHdlIGhhdmUgdGhlc2UgY29tcG91bmQgcGFnZXMuIEJ1dCBoYW5nIG9uLCBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgIGhhbmRsZXMgKmFsbCogcGFnZSBmcmVlcywgd2hpbGUgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgIGlzIHRoZSBvbmUgc3BlY2lmaWNhbGx5IGZvciBjb21wb3VuZCBwYWdlcy4gQWxyaWdodCwgSSYjMzk7bGwgYWRkIGBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlYCB0byBteSBsaXN0IG9mIHRoaW5ncyB0byBrZWVwIGFuIGV5ZSBvbi4gSSB0aGluayB0aGF0IGlzIHRoZSByaWdodCBkaXJlY3Rpb24gdG8ga2VlcCBnb2luZy4KCk5leHQgdXAsIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IGBwY3B1X2Rlc3Ryb3lfY2h1bmtgLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCYjMzk7cyBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNwdV9kZXN0cm95X2NodW5rJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BlcmNwdS1rbS5jPTUzPXN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdV9jcmVhdGVfY2h1bmsoZ2ZwX3QgZ2ZwKVxuLS1cbm1tL3BlcmNwdS1rbS5jLTg2LVxubW0vcGVyY3B1LWttLmM6ODc6c3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcbm1tL3BlcmNwdS1rbS5jLTg4LXtcbi0tXG5tbS9wZXJjcHUtdm0uYz0zNTM9c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2NyZWF0ZV9jaHVuayhnZnBfdCBnZnApXG4tLVxubW0vcGVyY3B1LXZtLmMtMzc3LVxubW0vcGVyY3B1LXZtLmM6Mzc4OnN0YXRpYyB2b2lkIHBjcHVfZGVzdHJveV9jaHVuayhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmspXG5tbS9wZXJjcHUtdm0uYy0zNzkte1xuLS1cbm1tL3BlcmNwdS5jPTE1Mzc9c3RhdGljIHZvaWQgcGNwdV9jaHVua19kZXBvcHVsYXRlZChzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmssXG4tLVxubW0vcGVyY3B1LmMtMTU2Mi0gKiBwY3B1X2NyZWF0ZV9jaHVua1x0XHQtIGNyZWF0ZSBhIG5ldyBjaHVua1xubW0vcGVyY3B1LmM6MTU2MzogKiBwY3B1X2Rlc3Ryb3lfY2h1bmtcdFx0LSBkZXN0cm95IGEgY2h1bmssIGFsd2F5cyBwcmVjZWRlZCBieSBmdWxsIGRlcG9wXG5tbS9wZXJjcHUuYy0xNTY0LSAqIHBjcHVfYWRkcl90b19wYWdlXHRcdC0gdHJhbnNsYXRlIGFkZHJlc3MgdG8gcGh5c2ljYWwgYWRkcmVzc1xuLS1cbm1tL3BlcmNwdS5jPTE1NzM9c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2NyZWF0ZV9jaHVuayhnZnBfdCBnZnApO1xubW0vcGVyY3B1LmM6MTU3NDpzdGF0aWMgdm9pZCBwY3B1X2Rlc3Ryb3lfY2h1bmsoc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rKTtcbm1tL3BlcmNwdS5jLTE1NzUtc3RhdGljIHN0cnVjdCBwYWdlICpwY3B1X2FkZHJfdG9fcGFnZSh2b2lkICphZGRyKTtcbi0tXG5tbS9wZXJjcHUuYz0xOTU5PXN0YXRpYyB2b2lkIHBjcHVfYmFsYW5jZV9mcmVlKGJvb2wgZW1wdHlfb25seSlcbi0tXG5tbS9wZXJjcHUuYy0xOTk0LVx0XHR9XG5tbS9wZXJjcHUuYzoxOTk1Olx0XHRwY3B1X2Rlc3Ryb3lfY2h1bmsoY2h1bmspO1xubW0vcGVyY3B1LmMtMTk5Ni1cdFx0Y29uZF9yZXNjaGVkKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTgyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHBjcHVfZGVzdHJveV9jaHVua2AgRnVuY3Rpb24gYW5kIFJlbGF0ZWQgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gYHBjcHVfZGVzdHJveV9jaHVua2Agc2VlbXMgbGlrZSBhIHNvbGlkIGZ1bmN0aW9uLCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuIEkmIzM5O20gZm9jdXNpbmcgb24ga2V5IHN5bWJvbHMgbm93OiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAsIGBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AgaXRzZWxmIChvZiBjb3Vyc2UpLCBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgLCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AsIGFuZCBhbHNvIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUgY3J1Y2lhbCBwaWVjZXMgb2YgdGhpcyBwdXp6bGUuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gV2UgaGF2ZSBgQ09NUEFDVElPTmAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGFuZCBgREVCVUdfVk1gIGluIHBsYXkuIEJ1dCB3YWl0LCB0aGVyZSYjMzk7cyBhIHByb2JsZW0sIGBORUVEX1BFUl9DUFVfS01gIGlzIG5vdCBkaXJlY3RseSBzZWxlY3RhYmxlLCB3aGljaCBpcyBvZGQuIFRoaXMgaXMgY29uY2VybmluZywgaXMgdGhlcmUgYW5vdGhlciBjb25maWcgb3B0aW9uIHRoYXQgdHJpZ2dlcnMgYHBjcHVfZGVzdHJveV9jaHVua2AmIzM5O3MgZW5hYmxlbWVudD8KCkkga25vdyBgcGNwdV9kZXN0cm95X2NodW5rYCBpcyBkZWZpbmVkIGluIGJvdGggYG1tL3BlcmNwdS1rbS5jYCBhbmQgYG1tL3BlcmNwdS12bS5jYC4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGlzIG1vZGlmeWluZyBgbW0vcGVyY3B1LWttLmNgLiBUaGUgY29yZSBpc3N1ZSB0aGVuIGJlY29tZXMsIGlmIGBORUVEX1BFUl9DUFVfS01gIGlzbiYjMzk7dCBlbmFibGVkLCB0aGVuIGBtbS9wZXJjcHUta20uY2AgKndvbiYjMzk7dCogYmUgY29tcGlsZWQhIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgbW0vcGVyY3B1LWttLmNgICppcyogYmVpbmcgY29tcGlsZWQgdW5kZXIgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBhIGNyaXRpY2FsIHByZXJlcXVpc2l0ZSB0byBjb25zaWRlciBmb3IgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE0OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BlcmNwdS1rbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wZXJjcHUta20uYy0yLS8qXG5tbS9wZXJjcHUta20uYzozOiAqIG1tL3BlcmNwdS1rbS5jIC0ga2VybmVsIG1lbW9yeSBiYXNlZCBjaHVuayBhbGxvY2F0aW9uXG5tbS9wZXJjcHUta20uYy00LSAqXG4tLVxubW0vcGVyY3B1LWttLmMtMTAtICpcbm1tL3BlcmNwdS1rbS5jOjExOiAqIFRvIHVzZSBwZXJjcHUta20sXG5tbS9wZXJjcHUta20uYy0xMi0gKlxuLS1cbm1tL3BlcmNwdS1rbS5jLTI1LSAqICAga2VybmVsIG1lbW9yeSBibG9jayB1c2luZyBhbGxvY19wYWdlcygpLCBtZW1vcnkgd2lsbCBiZSB3YXN0ZWQgaWZcbm1tL3BlcmNwdS1rbS5jOjI2OiAqICAgY2h1bmsgc2l6ZSBpcyBub3QgYWxpZ25lZC4gIHBlcmNwdS1rbSBjb2RlIHdpbGwgd2hpbmUgYWJvdXQgaXQuXG5tbS9wZXJjcHUta20uYy0yNy0gKi9cbi0tXG5tbS9wZXJjcHUuYz0xNTc2PXN0YXRpYyBpbnQgX19pbml0IHBjcHVfdmVyaWZ5X2FsbG9jX2luZm8oY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWkpO1xuLS1cbm1tL3BlcmNwdS5jLTE1NzgtI2lmZGVmIENPTkZJR19ORUVEX1BFUl9DUFVfS01cbm1tL3BlcmNwdS5jOjE1Nzk6I2luY2x1ZGUgXCYjMzQ7cGVyY3B1LWttLmNcJiMzNDtcbm1tL3BlcmNwdS5jLTE1ODAtI2Vsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkwNjgKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogNDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaG93IHRvIGFwcHJvYWNoIGZ1enppbmcgaXQuIEkgc2VlIHRoYXQgYG1tL3BlcmNwdS1rbS5jYCBpcyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIGluIGBtbS9wZXJjcHUuY2AgYmFzZWQgb24gYENPTkZJR19ORUVEX1BFUl9DUFVfS01gLiBUaGUgaXNzdWUgaXMsIEkgY2FuJiMzOTt0IGVhc2lseSBlbmFibGUgdGhhdCBjb25maWd1cmF0aW9uIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBgIVNNUCB8fCAhTU1VYC4gU2luY2UgSSYjMzk7bSBwcm9iYWJseSB0ZXN0aW5nIG9uIGEgc3RhbmRhcmQgU01QIGtlcm5lbCwgdGhhdCBwYXJ0IG9mIHRoZSBwYXRjaCBpcyBlc3NlbnRpYWxseSB1bnRlc3RhYmxlIGFzIGlzLiBHb29kIHRvIGtub3cgLSBubyBuZWVkIHRvIGFnb25pemUgb3ZlciBlbmFibGluZyB0aGF0IGNvbmZpZy4gV2FpdC4uLiBJIHNob3VsZCBwcm9iYWJseSByZW1vdmUgaXQgZnJvbSBjb25zaWRlcmF0aW9uLCBzaW5jZSBpdCYjMzk7cyBub3Qgc2VsZWN0YWJsZS4KCk5vdywgbGV0JiMzOTtzIHpvb20gb3V0LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIGFib3V0IGZpeGluZyBpc3N1ZXMgd2l0aCBgcGFnZS0mZ3Q7cHJpdmF0ZWAgbm90IGJlaW5nIGhhbmRsZWQgY29ycmVjdGx5LCBwYXJ0aWN1bGFybHkgb24gdGFpbCBwYWdlcy4gSXQmIzM5O3MgdG91Y2hpbmcgc29tZSBjcml0aWNhbCBtZW1vcnkgbWFuYWdlbWVudCBhcmVhczogcmVtb3ZpbmcgYHNldF9wYWdlX3ByaXZhdGVgIGluIGNvbXBhY3Rpb24sIGFkZGluZyB3YXJuaW5ncyBkdXJpbmcgaHVnZSBwYWdlIHNwbGl0dGluZywgc29tZSBpbnRlcm5hbCBwcmVwYXJhdGlvbiB3b3JrLCBhbmQgYWRkaW5nIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBQbHVzIGl0JiMzOTtzIGNsZWFyaW5nIGNodW5rIGluZm9ybWF0aW9uIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGluIHBlcmNwdS1rbS4gVGhvc2UgYXJlIGFsbCBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBuZWVkIHRvIGJlIHRlc3RlZCB0aG9yb3VnaGx5LiBGdXp6aW5nIGlzIHRoZSByaWdodCBhcHByb2FjaCBoZXJlIHRvIGVuc3VyZSB3ZSBkb24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1pc3MgYW55IGxhdGVudCBidWdzLgoKSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzeW1ib2xzIGluIHBhcnRpY3VsYXI6IGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgLCBgcGNwdV9kZXN0cm95X2NodW5rYCwgYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLCBhbmQgYGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mYC4KCkFoYSwgYHBjcHVfZGVzdHJveV9jaHVua2AgaW4gYG1tL3BlcmNwdS1rbS5jYCBpcyBzdGF0aWMgYW5kIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19ORUVEX1BFUl9DUFVfS01gIGlzIHNldC4gU28sIGV2ZW4gdGhvdWdoIEkgY2FuJiMzOTt0ICplbmFibGUqIGl0IGRpcmVjdGx5LCBpdCAqY291bGQqIGJlIGNvbXBpbGVkLiBJdCYjMzk7cyBzdGF0aWNhbGx5IGxpbmtlZC4gQmVzdCB0byBpbmNsdWRlIGl0LCBhbmQgdGhlIGZ1enplciB3aWxsIHNpbXBseSBpZ25vcmUgaXQgaWYgaXQmIzM5O3Mgbm90IHByZXNlbnQuCgpUaGUga2V5IGNvbmZpZ3MgdG8gY29uc2lkZXIgZm9yIGZ1enppbmcgd291bGQgYmUgYENPTVBBQ1RJT05gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBhbmQgYERFQlVHX1ZNYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYERFQlVHX1ZNYCBpcyBhIGJvb2xlYW4uIFllcywgaXQgaXMuIFBlcmZlY3QuCgpBbHJpZ2h0LCB0aW1lIHRvIHRyaWdnZXIgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTQ6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVCVUdfVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDssCiAgICAmIzM0O2ZyZWVfdGFpbF9wYWdlX3ByZXBhcmUmIzM0OywKICAgICYjMzQ7cGNwdV9kZXN0cm95X2NodW5rJiMzNDssCiAgICAmIzM0O2lzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrJiMzNDssCiAgICAmIzM0O2Zhc3RfaXNvbGF0ZV9mcmVlcGFnZXMmIzM0OywKICAgICYjMzQ7Y29tcGFjdGlvbl9hbGxvY19ub3Byb2YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBmaXggaXNzdWVzIHdpdGggYHBhZ2UtXHUwMDNlcHJpdmF0ZWAgbm90IGJlaW5nIHByb3Blcmx5IGNsZWFyZWQgb3IgY2hlY2tlZCBvbiB0YWlsIHBhZ2VzLiBJdCByZW1vdmVzIGBzZXRfcGFnZV9wcml2YXRlYCBpbiBjb21wYWN0aW9uLCBhZGRzIHdhcm5pbmdzIGluIGh1Z2UgbWVtb3J5IHNwbGl0dGluZyBhbmQgaW50ZXJuYWwgcHJlcCwgYW5kIGFkZHMgYSBjaGVjayBpbiBwYWdlIGFsbG9jYXRpb24uIEl0IGFsc28gY2xlYXJzIGNodW5rIGluZm8gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkb24mIzM5O3QgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgb3IgbWlzcyBhY3R1YWwgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7LAogICAgJiMzNDtUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7LAogICAgJiMzNDtERUJVR19WTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fc3BsaXRfZm9saW9fdG9fb3JkZXImIzM0OywKICAgICYjMzQ7ZnJlZV90YWlsX3BhZ2VfcHJlcGFyZSYjMzQ7LAogICAgJiMzNDtwY3B1X2Rlc3Ryb3lfY2h1bmsmIzM0OywKICAgICYjMzQ7aXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2smIzM0OywKICAgICYjMzQ7ZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyYjMzQ7LAogICAgJiMzNDtjb21wYWN0aW9uX2FsbG9jX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIGZpeCBpc3N1ZXMgd2l0aCBgcGFnZS1cdTAwM2Vwcml2YXRlYCBub3QgYmVpbmcgcHJvcGVybHkgY2xlYXJlZCBvciBjaGVja2VkIG9uIHRhaWwgcGFnZXMuIEl0IHJlbW92ZXMgYHNldF9wYWdlX3ByaXZhdGVgIGluIGNvbXBhY3Rpb24sIGFkZHMgd2FybmluZ3MgaW4gaHVnZSBtZW1vcnkgc3BsaXR0aW5nIGFuZCBpbnRlcm5hbCBwcmVwLCBhbmQgYWRkcyBhIGNoZWNrIGluIHBhZ2UgYWxsb2NhdGlvbi4gSXQgYWxzbyBjbGVhcnMgY2h1bmsgaW5mbyBiZWZvcmUgZnJlZWluZyBwYWdlcyBpbiBwZXJjcHUta20uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGV5IGRvbiYjMzk7dCB0cmlnZ2VyIGZhbHNlIHBvc2l0aXZlcyBvciBtaXNzIGFjdHVhbCBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDE6NDUuNzY5MjAxNTIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0NTk1MzYxMDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPTVBBQ1RJT05cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERUJVR19WTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3BsaXRfZm9saW9fdG9fb3JkZXJcIixcbiAgICBcImZyZWVfdGFpbF9wYWdlX3ByZXBhcmVcIixcbiAgICBcInBjcHVfZGVzdHJveV9jaHVua1wiLFxuICAgIFwiaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tcIixcbiAgICBcImZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNcIixcbiAgICBcImNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBmaXggaXNzdWVzIHdpdGggYHBhZ2UtXFx1MDAzZXByaXZhdGVgIG5vdCBiZWluZyBwcm9wZXJseSBjbGVhcmVkIG9yIGNoZWNrZWQgb24gdGFpbCBwYWdlcy4gSXQgcmVtb3ZlcyBgc2V0X3BhZ2VfcHJpdmF0ZWAgaW4gY29tcGFjdGlvbiwgYWRkcyB3YXJuaW5ncyBpbiBodWdlIG1lbW9yeSBzcGxpdHRpbmcgYW5kIGludGVybmFsIHByZXAsIGFuZCBhZGRzIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBJdCBhbHNvIGNsZWFycyBjaHVuayBpbmZvIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGluIHBlcmNwdS1rbS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG9uJ3QgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgb3IgbWlzcyBhY3R1YWwgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDE6NDUuNzY5MjEwNjYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODIxNDAxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZmZmOTg1NzQ2ZDQ3NDI3NGMxMDg1ZTU4NDlhYTUyYzljMGFkZDgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMTQ6MDE6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jXFxuaW5kZXggZjA4NzY1YWRlMDE0Y2UuLjlmNDIwNDg1M2FmZDYyIDEwMDY0NFxcbi0tLSBhL21tL2NvbXBhY3Rpb24uY1xcbisrKyBiL21tL2NvbXBhY3Rpb24uY1xcbkBAIC02NDQsNyArNjQ0LDYgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsXFxuIFxcdFxcdGlzb2xhdGVkID0gX19pc29sYXRlX2ZyZWVfcGFnZShwYWdlLCBvcmRlcik7XFxuIFxcdFxcdGlmICghaXNvbGF0ZWQpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIG9yZGVyKTtcXG4gXFxuIFxcdFxcdG5yX3NjYW5uZWQgKz0gaXNvbGF0ZWQgLSAxO1xcbiBcXHRcXHR0b3RhbF9pc29sYXRlZCArPSBpc29sYXRlZDtcXG5AQCAtMTYxNyw3ICsxNjE2LDYgQEAgc3RhdGljIHZvaWQgZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYylcXG4gXFx0XFx0LyogSXNvbGF0ZSB0aGUgcGFnZSBpZiBhdmFpbGFibGUgKi9cXG4gXFx0XFx0aWYgKHBhZ2UpIHtcXG4gXFx0XFx0XFx0aWYgKF9faXNvbGF0ZV9mcmVlX3BhZ2UocGFnZSwgb3JkZXIpKSB7XFxuLVxcdFxcdFxcdFxcdHNldF9wYWdlX3ByaXZhdGUocGFnZSwgb3JkZXIpO1xcbiBcXHRcXHRcXHRcXHRucl9pc29sYXRlZCA9IDEgXFx1MDAzY1xcdTAwM2Mgb3JkZXI7XFxuIFxcdFxcdFxcdFxcdG5yX3NjYW5uZWQgKz0gbnJfaXNvbGF0ZWQgLSAxO1xcbiBcXHRcXHRcXHRcXHR0b3RhbF9pc29sYXRlZCArPSBucl9pc29sYXRlZDtcXG5AQCAtMTg0Niw3ICsxODQ0LDYgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqY29tcGFjdGlvbl9hbGxvY19ub3Byb2Yoc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGFcXG4gXFx0XFx0c2l6ZSBcXHUwMDNlXFx1MDAzZT0gMTtcXG4gXFxuIFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmcmVlcGFnZVtzaXplXS5scnUsIFxcdTAwMjZjYy1cXHUwMDNlZnJlZXBhZ2VzW3N0YXJ0X29yZGVyXSk7XFxuLVxcdFxcdHNldF9wYWdlX3ByaXZhdGUoXFx1MDAyNmZyZWVwYWdlW3NpemVdLCBzdGFydF9vcmRlcik7XFxuIFxcdH1cXG4gXFx0ZHN0ID0gKHN0cnVjdCBmb2xpbyAqKWZyZWVwYWdlO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcXG5pbmRleCBiZGQ4NjM1OTIyZjk2ZC4uMDZkMDY3MWNmZjg5OTAgMTAwNjQ0XFxuLS0tIGEvbW0vaHVnZV9tZW1vcnkuY1xcbisrKyBiL21tL2h1Z2VfbWVtb3J5LmNcXG5AQCAtMzU5MSw2ICszNTkxLDEzIEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG4gXFx0XFx0bmV3X2ZvbGlvLVxcdTAwM2VtYXBwaW5nID0gZm9saW8tXFx1MDAzZW1hcHBpbmc7XFxuIFxcdFxcdG5ld19mb2xpby1cXHUwMDNlaW5kZXggPSBmb2xpby1cXHUwMDNlaW5kZXggKyBpO1xcbiBcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogcGFnZS1cXHUwMDNlcHJpdmF0ZSBzaG91bGQgbm90IGJlIHNldCBpbiB0YWlsIHBhZ2VzLiBXYXJuIG9uY2VcXG4rXFx0XFx0ICogaWYgcHJpdmF0ZSBpcyB1bmV4cGVjdGVkbHkgc2V0LiBEbyBpdCBiZWZvcmUgc3dhcC52YWwgYXNzaWdubWVudFxcbitcXHRcXHQgKiBzaW5jZSBwcml2YXRlIG92ZXJsYXBzIHdpdGggc3dhcC52YWwuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRWTV9XQVJOX09OX09OQ0VfUEFHRShuZXdfZm9saW8tXFx1MDAzZXByaXZhdGUsIG5ld19oZWFkKTtcXG4rXFxuIFxcdFxcdGlmIChmb2xpb190ZXN0X3N3YXBjYWNoZShmb2xpbykpXFxuIFxcdFxcdFxcdG5ld19mb2xpby1cXHUwMDNlc3dhcC52YWwgPSBmb2xpby1cXHUwMDNlc3dhcC52YWwgKyBpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vaW50ZXJuYWwuaCBiL21tL2ludGVybmFsLmhcXG5pbmRleCBmYTRmYjY5NDQ0ZWNkYy4uZmJkOWZiODQzNDFiYzcgMTAwNjQ0XFxuLS0tIGEvbW0vaW50ZXJuYWwuaFxcbisrKyBiL21tL2ludGVybmFsLmhcXG5AQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwcmVwX2NvbXBvdW5kX3RhaWwoc3RydWN0IHBhZ2UgKnRhaWwsXFxuIHtcXG4gXFx0dGFpbC1cXHUwMDNlbWFwcGluZyA9IFRBSUxfTUFQUElORztcXG4gXFx0c2V0X2NvbXBvdW5kX2hlYWQodGFpbCwgaGVhZCwgb3JkZXIpO1xcbi1cXHRzZXRfcGFnZV9wcml2YXRlKHRhaWwsIDApO1xcbitcXHRWTV9XQVJOX09OX09OQ0UodGFpbC1cXHUwMDNlcHJpdmF0ZSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBvdW5kX3RhaWwoc3RydWN0IHBhZ2UgKnRhaWwsXFxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xcbmluZGV4IDc2MmQ5YjZiYzc5MmYxLi43MjNhNTJkZmM4MGY2ZCAxMDA2NDRcXG4tLS0gYS9tbS9wYWdlX2FsbG9jLmNcXG4rKysgYi9tbS9wYWdlX2FsbG9jLmNcXG5AQCAtMTM3NiwxNSArMTM3NiwyMiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXFxuICNlbmRpZlxcbiBcXHRcXHR9XFxuIFxcdFxcdGZvciAoaSA9IDE7IGkgXFx1MDAzYyAoMSBcXHUwMDNjXFx1MDAzYyBvcmRlcik7IGkrKykge1xcbitcXHRcXHRcXHRzdHJ1Y3QgcGFnZSAqdGFpbF9wYWdlID0gcGFnZSArIGk7XFxuK1xcbiBcXHRcXHRcXHRpZiAoY29tcG91bmQpXFxuLVxcdFxcdFxcdFxcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHBhZ2UgKyBpKTtcXG4rXFx0XFx0XFx0XFx0YmFkICs9IGZyZWVfdGFpbF9wYWdlX3ByZXBhcmUocGFnZSwgdGFpbF9wYWdlKTtcXG4gXFx0XFx0XFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xcbi1cXHRcXHRcXHRcXHRpZiAoZnJlZV9wYWdlX2lzX2JhZChwYWdlICsgaSkpIHtcXG4rXFx0XFx0XFx0XFx0aWYgKGZyZWVfcGFnZV9pc19iYWQodGFpbF9wYWdlKSkge1xcbiBcXHRcXHRcXHRcXHRcXHRiYWQrKztcXG4gXFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHQocGFnZSArIGkpLVxcdTAwM2VmbGFncy5mIFxcdTAwMjY9IH5QQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVA7XFxuK1xcdFxcdFxcdHRhaWxfcGFnZS1cXHUwMDNlZmxhZ3MuZiBcXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xcbitcXHRcXHRcXHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2IHRhaWxfcGFnZS1cXHUwMDNlcHJpdmF0ZSkge1xcbitcXHRcXHRcXHRcXHRiYWRfcGFnZSh0YWlsX3BhZ2UsIFxcXCJub256ZXJvIHByaXZhdGVcXFwiKTtcXG4rXFx0XFx0XFx0XFx0YmFkKys7XFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSkge1xcbmRpZmYgLS1naXQgYS9tbS9wZXJjcHUta20uYyBiL21tL3BlcmNwdS1rbS5jXFxuaW5kZXggNGVmYTc0YTQ5NWNiNmIuLjdmZmU4NGFkYWRiOWQ5IDEwMDY0NFxcbi0tLSBhL21tL3BlcmNwdS1rbS5jXFxuKysrIGIvbW0vcGVyY3B1LWttLmNcXG5AQCAtOTQsOCArOTQsMTUgQEAgc3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcXG4gXFx0cGNwdV9zdGF0c19jaHVua19kZWFsbG9jKCk7XFxuIFxcdHRyYWNlX3BlcmNwdV9kZXN0cm95X2NodW5rKGNodW5rLVxcdTAwM2ViYXNlX2FkZHIpO1xcbiBcXG4tXFx0aWYgKGNodW5rLVxcdTAwM2VkYXRhKVxcbitcXHRpZiAoY2h1bmstXFx1MDAzZWRhdGEpIHtcXG4rXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2VzID0gKHN0cnVjdCBwYWdlICopY2h1bmstXFx1MDAzZWRhdGE7XFxuK1xcdFxcdGludCBpO1xcbitcXG4rXFx0XFx0LyogY2xlYXIgY2h1bmsgaW5mbyBmcm9tIGVhY2ggcGFnZSBiZWZvcmUgZnJlZSB0aGVtICovXFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9wYWdlczsgaSsrKVxcbitcXHRcXHRcXHRwY3B1X3NldF9wYWdlX2NodW5rKHBhZ2VzICsgaSwgTlVMTCk7XFxuIFxcdFxcdF9fZnJlZV9wYWdlcyhjaHVuay1cXHUwMDNlZGF0YSwgb3JkZXJfYmFzZV8yKG5yX3BhZ2VzKSk7XFxuK1xcdH1cXG4gXFx0cGNwdV9mcmVlX2NodW5rKGNodW5rKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDE6NDYuNTUyNDEwNDU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjM4MTIxMzgwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09NUEFDVElPTlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkRFQlVHX1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiZnJlZV90YWlsX3BhZ2VfcHJlcGFyZVwiLFxuICAgIFwicGNwdV9kZXN0cm95X2NodW5rXCIsXG4gICAgXCJpc29sYXRlX2ZyZWVwYWdlc19ibG9ja1wiLFxuICAgIFwiZmFzdF9pc29sYXRlX2ZyZWVwYWdlc1wiLFxuICAgIFwiY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIGZpeCBpc3N1ZXMgd2l0aCBgcGFnZS1cXHUwMDNlcHJpdmF0ZWAgbm90IGJlaW5nIHByb3Blcmx5IGNsZWFyZWQgb3IgY2hlY2tlZCBvbiB0YWlsIHBhZ2VzLiBJdCByZW1vdmVzIGBzZXRfcGFnZV9wcml2YXRlYCBpbiBjb21wYWN0aW9uLCBhZGRzIHdhcm5pbmdzIGluIGh1Z2UgbWVtb3J5IHNwbGl0dGluZyBhbmQgaW50ZXJuYWwgcHJlcCwgYW5kIGFkZHMgYSBjaGVjayBpbiBwYWdlIGFsbG9jYXRpb24uIEl0IGFsc28gY2xlYXJzIGNodW5rIGluZm8gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkb24ndCB0cmlnZ2VyIGZhbHNlIHBvc2l0aXZlcyBvciBtaXNzIGFjdHVhbCBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJmZmY5ODU3NDZkNDc0Mjc0YzEwODVlNTg0OWFhNTJjOWMwYWRkODBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDE0OjAxOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jXG5pbmRleCBmMDg3NjVhZGUwMTRjZS4uOWY0MjA0ODUzYWZkNjIgMTAwNjQ0XG4tLS0gYS9tbS9jb21wYWN0aW9uLmNcbisrKyBiL21tL2NvbXBhY3Rpb24uY1xuQEAgLTY0NCw3ICs2NDQsNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYyxcbiBcdFx0aXNvbGF0ZWQgPSBfX2lzb2xhdGVfZnJlZV9wYWdlKHBhZ2UsIG9yZGVyKTtcbiBcdFx0aWYgKCFpc29sYXRlZClcbiBcdFx0XHRicmVhaztcbi1cdFx0c2V0X3BhZ2VfcHJpdmF0ZShwYWdlLCBvcmRlcik7XG4gXG4gXHRcdG5yX3NjYW5uZWQgKz0gaXNvbGF0ZWQgLSAxO1xuIFx0XHR0b3RhbF9pc29sYXRlZCArPSBpc29sYXRlZDtcbkBAIC0xNjE3LDcgKzE2MTYsNiBAQCBzdGF0aWMgdm9pZCBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxuIFx0XHQvKiBJc29sYXRlIHRoZSBwYWdlIGlmIGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAocGFnZSkge1xuIFx0XHRcdGlmIChfX2lzb2xhdGVfZnJlZV9wYWdlKHBhZ2UsIG9yZGVyKSkge1xuLVx0XHRcdFx0c2V0X3BhZ2VfcHJpdmF0ZShwYWdlLCBvcmRlcik7XG4gXHRcdFx0XHRucl9pc29sYXRlZCA9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0XHRcdFx0bnJfc2Nhbm5lZCArPSBucl9pc29sYXRlZCAtIDE7XG4gXHRcdFx0XHR0b3RhbF9pc29sYXRlZCArPSBucl9pc29sYXRlZDtcbkBAIC0xODQ2LDcgKzE4NDQsNiBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICpjb21wYWN0aW9uX2FsbG9jX25vcHJvZihzdHJ1Y3QgZm9saW8gKnNyYywgdW5zaWduZWQgbG9uZyBkYVxuIFx0XHRzaXplIFx1MDAzZVx1MDAzZT0gMTtcbiBcbiBcdFx0bGlzdF9hZGQoXHUwMDI2ZnJlZXBhZ2Vbc2l6ZV0ubHJ1LCBcdTAwMjZjYy1cdTAwM2VmcmVlcGFnZXNbc3RhcnRfb3JkZXJdKTtcbi1cdFx0c2V0X3BhZ2VfcHJpdmF0ZShcdTAwMjZmcmVlcGFnZVtzaXplXSwgc3RhcnRfb3JkZXIpO1xuIFx0fVxuIFx0ZHN0ID0gKHN0cnVjdCBmb2xpbyAqKWZyZWVwYWdlO1xuIFxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXG5pbmRleCBiZGQ4NjM1OTIyZjk2ZC4uMDZkMDY3MWNmZjg5OTAgMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4rKysgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtMzU5MSw2ICszNTkxLDEzIEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbiBcdFx0bmV3X2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0XHRuZXdfZm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleCArIGk7XG4gXG4rXHRcdC8qXG4rXHRcdCAqIHBhZ2UtXHUwMDNlcHJpdmF0ZSBzaG91bGQgbm90IGJlIHNldCBpbiB0YWlsIHBhZ2VzLiBXYXJuIG9uY2VcbitcdFx0ICogaWYgcHJpdmF0ZSBpcyB1bmV4cGVjdGVkbHkgc2V0LiBEbyBpdCBiZWZvcmUgc3dhcC52YWwgYXNzaWdubWVudFxuK1x0XHQgKiBzaW5jZSBwcml2YXRlIG92ZXJsYXBzIHdpdGggc3dhcC52YWwuXG4rXHRcdCAqL1xuK1x0XHRWTV9XQVJOX09OX09OQ0VfUEFHRShuZXdfZm9saW8tXHUwMDNlcHJpdmF0ZSwgbmV3X2hlYWQpO1xuK1xuIFx0XHRpZiAoZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKVxuIFx0XHRcdG5ld19mb2xpby1cdTAwM2Vzd2FwLnZhbCA9IGZvbGlvLVx1MDAzZXN3YXAudmFsICsgaTtcbiBcbmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaFxuaW5kZXggZmE0ZmI2OTQ0NGVjZGMuLmZiZDlmYjg0MzQxYmM3IDEwMDY0NFxuLS0tIGEvbW0vaW50ZXJuYWwuaFxuKysrIGIvbW0vaW50ZXJuYWwuaFxuQEAgLTkwMiw3ICs5MDIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJlcF9jb21wb3VuZF90YWlsKHN0cnVjdCBwYWdlICp0YWlsLFxuIHtcbiBcdHRhaWwtXHUwMDNlbWFwcGluZyA9IFRBSUxfTUFQUElORztcbiBcdHNldF9jb21wb3VuZF9oZWFkKHRhaWwsIGhlYWQsIG9yZGVyKTtcbi1cdHNldF9wYWdlX3ByaXZhdGUodGFpbCwgMCk7XG4rXHRWTV9XQVJOX09OX09OQ0UodGFpbC1cdTAwM2Vwcml2YXRlKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGluaXRfY29tcG91bmRfdGFpbChzdHJ1Y3QgcGFnZSAqdGFpbCxcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcbmluZGV4IDc2MmQ5YjZiYzc5MmYxLi43MjNhNTJkZmM4MGY2ZCAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xuKysrIGIvbW0vcGFnZV9hbGxvYy5jXG5AQCAtMTM3NiwxNSArMTM3NiwyMiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gI2VuZGlmXG4gXHRcdH1cbiBcdFx0Zm9yIChpID0gMTsgaSBcdTAwM2MgKDEgXHUwMDNjXHUwMDNjIG9yZGVyKTsgaSsrKSB7XG4rXHRcdFx0c3RydWN0IHBhZ2UgKnRhaWxfcGFnZSA9IHBhZ2UgKyBpO1xuK1xuIFx0XHRcdGlmIChjb21wb3VuZClcbi1cdFx0XHRcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHBhZ2UgKyBpKTtcbitcdFx0XHRcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XG4gXHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xuLVx0XHRcdFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSArIGkpKSB7XG4rXHRcdFx0XHRpZiAoZnJlZV9wYWdlX2lzX2JhZCh0YWlsX3BhZ2UpKSB7XG4gXHRcdFx0XHRcdGJhZCsrO1xuIFx0XHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRcdH1cbiBcdFx0XHR9XG4tXHRcdFx0KHBhZ2UgKyBpKS1cdTAwM2VmbGFncy5mIFx1MDAyNj0gflBBR0VfRkxBR1NfQ0hFQ0tfQVRfUFJFUDtcbitcdFx0XHR0YWlsX3BhZ2UtXHUwMDNlZmxhZ3MuZiBcdTAwMjY9IH5QQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVA7XG4rXHRcdFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSBcdTAwMjZcdTAwMjYgdGFpbF9wYWdlLVx1MDAzZXByaXZhdGUpIHtcbitcdFx0XHRcdGJhZF9wYWdlKHRhaWxfcGFnZSwgXCJub256ZXJvIHByaXZhdGVcIik7XG4rXHRcdFx0XHRiYWQrKztcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1x0XHRcdH1cbiBcdFx0fVxuIFx0fVxuIFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHtcbmRpZmYgLS1naXQgYS9tbS9wZXJjcHUta20uYyBiL21tL3BlcmNwdS1rbS5jXG5pbmRleCA0ZWZhNzRhNDk1Y2I2Yi4uN2ZmZTg0YWRhZGI5ZDkgMTAwNjQ0XG4tLS0gYS9tbS9wZXJjcHUta20uY1xuKysrIGIvbW0vcGVyY3B1LWttLmNcbkBAIC05NCw4ICs5NCwxNSBAQCBzdGF0aWMgdm9pZCBwY3B1X2Rlc3Ryb3lfY2h1bmsoc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rKVxuIFx0cGNwdV9zdGF0c19jaHVua19kZWFsbG9jKCk7XG4gXHR0cmFjZV9wZXJjcHVfZGVzdHJveV9jaHVuayhjaHVuay1cdTAwM2ViYXNlX2FkZHIpO1xuIFxuLVx0aWYgKGNodW5rLVx1MDAzZWRhdGEpXG4rXHRpZiAoY2h1bmstXHUwMDNlZGF0YSkge1xuK1x0XHRzdHJ1Y3QgcGFnZSAqcGFnZXMgPSAoc3RydWN0IHBhZ2UgKiljaHVuay1cdTAwM2VkYXRhO1xuK1x0XHRpbnQgaTtcbitcbitcdFx0LyogY2xlYXIgY2h1bmsgaW5mbyBmcm9tIGVhY2ggcGFnZSBiZWZvcmUgZnJlZSB0aGVtICovXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpKyspXG4rXHRcdFx0cGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlcyArIGksIE5VTEwpO1xuIFx0XHRfX2ZyZWVfcGFnZXMoY2h1bmstXHUwMDNlZGF0YSwgb3JkZXJfYmFzZV8yKG5yX3BhZ2VzKSk7XG4rXHR9XG4gXHRwY3B1X2ZyZWVfY2h1bmsoY2h1bmspO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAxOjQ2LjU1MjQxMjM2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NDc3NDkwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBjbGVhcmx5IG1lc3Npbmcgd2l0aCBzb21lIGNyaXRpY2FsIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUuIEl0IHRvdWNoZXMgc2V2ZXJhbCBrZXkgZmlsZXM6IGBtbS9jb21wYWN0aW9uLmNgLCBgbW0vaHVnZV9tZW1vcnkuY2AsIGBtbS9pbnRlcm5hbC5oYCwgYG1tL3BhZ2VfYWxsb2MuY2AsIGFuZCBgbW0vcGVyY3B1LWttLmNgLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBob3cgbWVtb3J5IGlzIGFsbG9jYXRlZCwgZnJlZWQsIGFuZCBtYW5hZ2VkIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEkgc2VlIHRoZXkndmUgcmVtb3ZlZCBgc2V0X3BhZ2VfcHJpdmF0ZShwYWdlLCBvcmRlcilgIGluIGBtbS9jb21wYWN0aW9uLmNgLCBhZGRlZCBhIGBWTV9XQVJOX09OX09OQ0VfUEFHRWAgY2hlY2sgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgLCBhbmQgcmVwbGFjZWQgc29tZSBgc2V0X3BhZ2VfcHJpdmF0ZWAgY2FsbHMgd2l0aCBgVk1fV0FSTl9PTl9PTkNFYCBhc3NlcnRpb25zIGluIGBtbS9pbnRlcm5hbC5oYC4gVGhlcmUncyBhbHNvIGEgbmV3IGB0YWlsX3BhZ2UtXHUwMDNlcHJpdmF0ZWAgY2hlY2sgaW4gYG1tL3BhZ2VfYWxsb2MuY2AgYW5kIHRoZXkncmUgZXhwbGljaXRseSBjbGVhcmluZyBjaHVuayBpbmZvcm1hdGlvbiBiZWZvcmUgZnJlZWluZyBwYWdlcyBpbiBgbW0vcGVyY3B1LWttLmNgLlxuXG5HaXZlbiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgbXkgZ3V0IHNheXMgdGhpcyBkZWZpbml0ZWx5IG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBJIG5lZWQgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyB0aGF0IHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhhdCBJIGNvdWxkIHRhcmdldC4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdGhhdCBmdW5jdGlvbnMgbGlrZSBgX19zcGxpdF9mb2xpb190b19vcmRlcmAsIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAsIGBwY3B1X2Rlc3Ryb3lfY2h1bmtgLCBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgLCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AsIGFuZCBgY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZgIGFyZSBwcm9iYWJseSBnb29kIGNhbmRpZGF0ZXMgdG8gZm9jdXMgb24uIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgdHJpZ2dlcmluZyBpbnRlcmVzdGluZyBtZW1vcnkgbWFuYWdlbWVudCBzY2VuYXJpb3MuXG5cbkknbSBhbHNvIGdvaW5nIHRvIGNoZWNrIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSB0aGVzZSBzZWN0aW9ucyBvZiBjb2RlLiBTbywgYG1tL2NvbXBhY3Rpb24uY2AgaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0NPTVBBQ1RJT05gLCBgbW0vaHVnZV9tZW1vcnkuY2AgZGVwZW5kcyBvbiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYW5kIGBtbS9wZXJjcHUta20uY2AgbmVlZHMgYENPTkZJR19ORUVEX1BFUl9DUFVfS01gLiBJJ2xsIGFsc28gbmVlZCB0byBkaXZlIGludG8gdGhlIHVzYWdlIG9mIGBtbS9wZXJjcHUta20uY2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEzMiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAxOjUzLjEwMDE2NDU2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODI5MTY2NjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORUVEX1BFUl9DUFVfS01cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL3Rlc3Rfdm1hbGxvYy5jPTMxNj1wY3B1X2FsbG9jX3Rlc3Qodm9pZClcXG4tLVxcbmxpYi90ZXN0X3ZtYWxsb2MuYy0zMTgtXFx0aW50IHJ2ID0gMDtcXG5saWIvdGVzdF92bWFsbG9jLmM6MzE5OiNpZm5kZWYgQ09ORklHX05FRURfUEVSX0NQVV9LTVxcbmxpYi90ZXN0X3ZtYWxsb2MuYy0zMjAtXFx0dm9pZCBfX3BlcmNwdSAqKnBjcHU7XFxuLS1cXG5tbS9wZXJjcHUta20uYy0xMi0gKlxcbm1tL3BlcmNwdS1rbS5jOjEzOiAqIC0gZGVmaW5lIENPTkZJR19ORUVEX1BFUl9DUFVfS00gZnJvbSB0aGUgYXJjaCBLY29uZmlnLlxcbm1tL3BlcmNwdS1rbS5jLTE0LSAqXFxuLS1cXG5tbS9wZXJjcHUuYz0xNTc2PXN0YXRpYyBpbnQgX19pbml0IHBjcHVfdmVyaWZ5X2FsbG9jX2luZm8oY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWkpO1xcbm1tL3BlcmNwdS5jLTE1NzctXFxubW0vcGVyY3B1LmM6MTU3ODojaWZkZWYgQ09ORklHX05FRURfUEVSX0NQVV9LTVxcbm1tL3BlcmNwdS5jLTE1NzktI2luY2x1ZGUgXFxcInBlcmNwdS1rbS5jXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMjowMC45MjkzNDA3MDVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUwNDkxMDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgYENPTkZJR19ORUVEX1BFUl9DUFVfS01gIGFuZCBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIGBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNYCBpcyBhbiBhcmNoIGNvbmZpZywgbm90IHNvbWV0aGluZyBJIHNlZSBhbGwgdGhlIHRpbWUsIGJ1dCBJIGtub3cgaXQncyB1c3VhbGx5IHNwZWNpZmljIHRvIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlcy4gVGhpbmsgbTY4aywgbWljcm9ibGF6ZSwgbmlvczIsIHRoYXQgc29ydCBvZiB0aGluZy4uLiBvciBzeXN0ZW1zIHdpdGhvdXQgZnVsbCBtZW1vcnkgbWFuYWdlbWVudCB1bml0cyAobm9tbXUpLiBJdCdzIGdvdCBtZSBjdXJpb3VzLCB0aG91Z2guXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRpdmUgaW50byBob3cgdGhpcyBpbXBhY3RzIHRoZSBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQuIENvbXBhY3Rpb24gaXMgd2hlcmUgSSdkIHN0YXJ0LiBBbmQgaHVnZXBhZ2VzISBgbW0vY29tcGFjdGlvbi5jYCBhbmQgYG1tL2h1Z2VfbWVtb3J5LmNgIHNlZW0gbGlrZSB0aGUgbGlrZWx5IHBsYWNlcyB0aGlzIGNvbmZpZyB3b3VsZCBoYXZlIGFuIGltcGFjdC4gTGV0IG1lIGNoZWNrIHRoZSBjb2RlIHRoZXJlLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgcGVyLUNQVSBrbWFsbG9jIHN0dWZmIGlzIGhvb2tlZCBpbi4uLiBhbmQgaG93IHRoZSBhcmNoaXRlY3R1cmVzIHRoYXQgKm5lZWQqIHRoaXMgc2V0dGluZyBpbnRlcmFjdCB3aXRoIGNvbXBhY3Rpb24gYW5kIGh1Z2UgcGFnZSBhbGxvY2F0aW9uLiBTb3VuZHMgbGlrZSBhIGZ1biBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjU2LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6MDQuNTc5ODM0NDAyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzA3MzgyMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0NPTVBBQ1RJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0PTExND1jb21wYWN0X21lbW9yeVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0LTExNi1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3Q6MTE3OkF2YWlsYWJsZSBvbmx5IHdoZW4gQ09ORklHX0NPTVBBQ1RJT04gaXMgc2V0LiBXaGVuIDEgaXMgd3JpdHRlbiB0byB0aGUgZmlsZSxcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3QtMTE4LWFsbCB6b25lcyBhcmUgY29tcGFjdGVkIHN1Y2ggdGhhdCBmcmVlIG1lbW9yeSBpcyBhdmFpbGFibGUgaW4gY29udGlndW91c1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0PTE0NT1jb21wYWN0X3VuZXZpY3RhYmxlX2FsbG93ZWRcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdC0xNDctXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0OjE0ODpBdmFpbGFibGUgb25seSB3aGVuIENPTkZJR19DT01QQUNUSU9OIGlzIHNldC4gV2hlbiBzZXQgdG8gMSwgY29tcGFjdGlvbiBpc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdC0xNDktYWxsb3dlZCB0byBleGFtaW5lIHRoZSB1bmV2aWN0YWJsZSBscnUgKG1sb2NrZWQgcGFnZXMpIGZvciBwYWdlcyB0byBjb21wYWN0Llxcbi0tXFxuYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9Mjc0PWV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTtcXG5hcmNoL2FscGhhL2luY2x1ZGUvYXNtL3BndGFibGUuaC0yNzUtXFxuYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6Mjc2OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbmFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3Ny0jZGVmaW5lIF9fSEFWRV9BUkNIX1BURVBfR0VUX0FORF9DTEVBUlxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDFfZGVmY29uZmlnPTI3PUNPTkZJR19QUkVFTVBUPXlcXG5hcmNoL2FyYy9jb25maWdzL2F4czEwMV9kZWZjb25maWc6Mjg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDFfZGVmY29uZmlnLTI5LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnPTI2PUNPTkZJR19QUkVFTVBUPXlcXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19kZWZjb25maWc6Mjc6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnLTI4LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZz0yNj1DT05GSUdfUFJFRU1QVD15XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZzoyNzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnLTI4LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZz0xOD1DT05GSUdfTU9EVUxFUz15XFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZy0xOS0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX2RlZmNvbmZpZzoyMDojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfZGVmY29uZmlnLTIxLUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9oYXBzX2hzX3NtcF9kZWZjb25maWc9MjE9Q09ORklHX01PRFVMRVM9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvaGFwc19oc19zbXBfZGVmY29uZmlnLTIyLSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZzoyMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2hhcHNfaHNfc21wX2RlZmNvbmZpZy0yNC1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc9MjQ9Q09ORklHX1BSRUVNUFQ9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc6MjU6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9oc2RrX2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbV83MDBfZGVmY29uZmlnPTIyPUNPTkZJR19NT0RVTEVTPXlcXG5hcmNoL2FyYy9jb25maWdzL25zaW1fNzAwX2RlZmNvbmZpZy0yMy0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWc6MjQ6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9uc2ltXzcwMF9kZWZjb25maWctMjUtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2RlZmNvbmZpZz0yMj1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cXFwibnNpbW9zY2lcXFwiXFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9kZWZjb25maWc6MjM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9kZWZjb25maWctMjQtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX2RlZmNvbmZpZz0yMj1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cXFwibnNpbW9zY2lfaHNcXFwiXFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19kZWZjb25maWc6MjM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19kZWZjb25maWctMjQtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWc9MjA9Q09ORklHX1BSRUVNUFQ9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbW9zY2lfaHNfc21wX2RlZmNvbmZpZzoyMTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWctMjItQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL3RiMTB4X2RlZmNvbmZpZz0zMD1DT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvdGIxMHhfZGVmY29uZmlnOjMxOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvYXJjL2NvbmZpZ3MvdGIxMHhfZGVmY29uZmlnLTMyLUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnPTM2PUNPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEPXlcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjM4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy0zOS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZz00Mz1DT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRD15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTQ0LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo0NTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctNDYtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y3X2RlZmNvbmZpZz0yNT1DT05GSUdfTU9EVUxFX1VOTE9BRD15XFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92N19kZWZjb25maWc6MjY6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92N19kZWZjb25maWctMjctQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc9NDc9Q09ORklHX1NMVUJfVElOWT15XFxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnOjQ4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy00OS1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTdfZGVmY29uZmlnPTM5PUNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctNDItIyBDT05GSUdfU1dBUCBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWc6NDM6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctNDQtQ09ORklHX0NNQT15XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc9NDQ9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6NDU6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTQ2LUNPTkZJR19ETUFQT09MX1RFU1Q9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz00MD1DT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc6NDE6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZy00Mi1DT05GSUdfRE1BUE9PTF9URVNUPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz00Nz1DT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo0ODojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNDktQ09ORklHX0RNQVBPT0xfVEVTVD1tXFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWc9Mzc9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTM5LUNPTkZJR19ETUFQT09MX1RFU1Q9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTM5PUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnOjQwOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZy00MS1DT05GSUdfRE1BUE9PTF9URVNUPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9Mzg9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnOjM5OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctNDAtQ09ORklHX0RNQVBPT0xfVEVTVD1tXFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9NTg9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6NTk6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTYwLUNPTkZJR19ETUFQT09MX1RFU1Q9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc9MzY9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZzozNzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZy0zOC1DT05GSUdfRE1BUE9PTF9URVNUPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTM3PUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc6Mzg6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctMzktQ09ORklHX0RNQVBPT0xfVEVTVD1tXFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnPTM4PUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZzozOTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTQwLUNPTkZJR19ETUFQT09MX1RFU1Q9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc9MzQ9Q09ORklHX0JJTkZNVF9NSVNDPW1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzozNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZy0zNi1DT05GSUdfVVNFUkZBVUxURkQ9eVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnPTM0PUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnOjM1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZy0zNi1DT05GSUdfRE1BUE9PTF9URVNUPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2F0aDI1X2RlZmNvbmZpZz0yMz1DT05GSUdfTU9EVUxFX1VOTE9BRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnLTI0LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWc6MjU6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnLTI2LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWc9Mjg9Q09ORklHX01PRFVMRVM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWctMzAtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWc6MzE6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvY2kyMF9kZWZjb25maWctMzItQ09ORklHX0NNQT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9jdTEwMDAtbmVvX2RlZmNvbmZpZz0yNz1DT05GSUdfTU9EVUxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxMDAwLW5lb19kZWZjb25maWctMjgtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnOjI5OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTAwMC1uZW9fZGVmY29uZmlnLTMwLUNPTkZJR19DTUE9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY3UxODMwLW5lb19kZWZjb25maWc9Mjc9Q09ORklHX01PRFVMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2N1MTgzMC1uZW9fZGVmY29uZmlnLTI4LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9jdTE4MzAtbmVvX2RlZmNvbmZpZzoyOTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9jdTE4MzAtbmVvX2RlZmNvbmZpZy0zMC1DT05GSUdfQ01BPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnPTMwPUNPTkZJR19NSVBTX0NNRExJTkVfRlJPTV9CT09UTE9BREVSPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL29tZWdhMnBfZGVmY29uZmlnLTMyLSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZzozMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9vbWVnYTJwX2RlZmNvbmZpZy0zNC1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3J0MzA1eF9kZWZjb25maWc9MjM9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZy0yNC0jIENPTkZJR19DT1JFRFVNUCBpcyBub3Qgc2V0XFxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZzoyNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnLTI2LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWc9MzA9Q09ORklHX01JUFNfQ01ETElORV9GUk9NX0JPT1RMT0FERVI9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvdm9jb3JlMl9kZWZjb25maWctMzItIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL3ZvY29yZTJfZGVmY29uZmlnOjMzOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL3ZvY29yZTJfZGVmY29uZmlnLTM0LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MveHdheV9kZWZjb25maWc9MjU9Q09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MveHdheV9kZWZjb25maWctMjYtIyBDT05GSUdfQ09SRURVTVAgaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnOjI3OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnLTI4LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0zNj1DT05GSUdfQklORk1UX01JU0M9bVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWctMzctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzozODojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTM5LUNPTkZJR19NRU1PUllfRkFJTFVSRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy80NHgvYWtlYm9ub19kZWZjb25maWc9MTk9Q09ORklHX0lSUV9BTExfQ1BVUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNDR4L2FrZWJvbm9fZGVmY29uZmlnOjIwOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzQ0eC9ha2Vib25vX2RlZmNvbmZpZy0yMS0jIENPTkZJR19TVVNQRU5EIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21pY3Jvd2F0dF9kZWZjb25maWc9MzA9Q09ORklHX1BQQ180S19QQUdFUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9taWNyb3dhdHRfZGVmY29uZmlnLTMzLSMgQ09ORklHX0NPUkVEVU1QIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9taWNyb3dhdHRfZGVmY29uZmlnOjM0OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21pY3Jvd2F0dF9kZWZjb25maWctMzUtIyBDT05GSUdfTUlHUkFUSU9OIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZz0yMz1DT05GSUdfQ01ETElORT1cXFwiY29uc29sZT10dHlTMCw5NjAwIGlwPWRoY3Agcm9vdD0vZGV2L25mc1xcXCJcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjQtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZzoyNTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tdm1lNTEwMF9kZWZjb25maWctMjYtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnPTM1PUNPTkZJR19CSU5GTVRfTUlTQz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTM3LSMgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnOjM4OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWctMzktQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZz01Nj1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTU4LSMgQ09ORklHX01RX0lPU0NIRURfS1lCRVIgaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnOjU5OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTYwLSMgQ09ORklHX01JR1JBVElPTiBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6MTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWctMi1DT05GSUdfQklORk1UX01JU0M9bVxcbi0tXFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6MTojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3VtL2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZy0yLUNPTkZJR19CSU5GTVRfTUlTQz1tXFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZz0zMz1DT05GSUdfQlVJTFRJTl9EVEJfTkFNRT1cXFwia2M3MDVcXFwiXFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWc6MzQ6IyBDT05GSUdfQ09NUEFDVElPTiBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWctMzUtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9jYWRlbmNlX2NzcF9kZWZjb25maWc9Mzc9Q09ORklHX0JVSUxUSU5fRFRCX05BTUU9XFxcImNzcFxcXCJcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZzozODojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZy0zOS1DT05GSUdfWFRGUEdBX0xDRD15XFxuLS1cXG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnPTMyPUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVxcXCJrYzcwNVxcXCJcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnOjMzOiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWctMzQtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnPTM2PUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVxcXCJseDIwMG14XFxcIlxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZzozNzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctMzgtIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZz0zMT1DT05GSUdfTU9EVUxFX1VOTE9BRD15XFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZy0zMi0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy92aXJ0X2RlZmNvbmZpZzozMzojIENPTkZJR19DT01QQUNUSU9OIGlzIG5vdCBzZXRcXG5hcmNoL3h0ZW5zYS9jb25maWdzL3ZpcnRfZGVmY29uZmlnLTM0LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnPTMyPUNPTkZJR19CVUlMVElOX0RUQl9OQU1FPVxcXCJrYzcwNVxcXCJcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZy0zNC0jIENPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZfSEVBREVSUyBpcyBub3Qgc2V0XFxuYXJjaC94dGVuc2EvY29uZmlncy94aXBfa2M3MDVfZGVmY29uZmlnOjM1OiMgQ09ORklHX0NPTVBBQ1RJT04gaXMgbm90IHNldFxcbmFyY2gveHRlbnNhL2NvbmZpZ3MveGlwX2tjNzA1X2RlZmNvbmZpZy0zNi1DT05GSUdfTkVUPXlcXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTgzPXN0YXRpYyBpbmxpbmUgaW50IGN1cnJlbnRfaXNfa2NvbXBhY3RkKHZvaWQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC04Ny1cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaDo4ODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC04OS1cXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTEyOT1zdGF0aWMgaW5saW5lIHZvaWQgd2FrZXVwX2tjb21wYWN0ZChwZ19kYXRhX3QgKnBnZGF0LFxcbi0tXFxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTMzLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oOjEzNDojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xMzUtXFxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmg9MTM2PXN0cnVjdCBub2RlO1xcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oOjEzNzojaWYgZGVmaW5lZChDT05GSUdfQ09NUEFDVElPTikgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfU1lTRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXFxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTM4LWV4dGVybiBpbnQgY29tcGFjdGlvbl9yZWdpc3Rlcl9ub2RlKHN0cnVjdCBub2RlICpub2RlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oPTE0OD1zdGF0aWMgaW5saW5lIHZvaWQgY29tcGFjdGlvbl91bnJlZ2lzdGVyX25vZGUoc3RydWN0IG5vZGUgKm5vZGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaC0xNTAtfVxcbmluY2x1ZGUvbGludXgvY29tcGFjdGlvbi5oOjE1MTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gXFx1MDAyNlxcdTAwMjYgQ09ORklHX1NZU0ZTIFxcdTAwMjZcXHUwMDI2IENPTkZJR19OVU1BICovXFxuaW5jbHVkZS9saW51eC9jb21wYWN0aW9uLmgtMTUyLVxcbi0tXFxuaW5jbHVkZS9saW51eC9nZnAuaD00MzQ9c3RhdGljIGlubGluZSBib29sIGdmcF9jb21wYWN0aW9uX2FsbG93ZWQoZ2ZwX3QgZ2ZwX21hc2spXFxuaW5jbHVkZS9saW51eC9nZnAuaC00MzUte1xcbmluY2x1ZGUvbGludXgvZ2ZwLmg6NDM2OlxcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19DT01QQUNUSU9OKSBcXHUwMDI2XFx1MDAyNiAoZ2ZwX21hc2sgXFx1MDAyNiBfX0dGUF9JTyk7XFxuaW5jbHVkZS9saW51eC9nZnAuaC00MzctfVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaD05Njg9c3RydWN0IHpvbmUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTE2LVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTExNzojaWYgZGVmaW5lZCBDT05GSUdfQ09NUEFDVElPTiB8fCBkZWZpbmVkIENPTkZJR19DTUFcXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTExMTgtXFx0LyogcGZuIHdoZXJlIGNvbXBhY3Rpb24gZnJlZSBzY2FubmVyIHNob3VsZCBzdGFydCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTI1LVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTEyNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTExMjctXFx0LypcXG4tLVxcbmluY2x1ZGUvbGludXgvbW16b25lLmgtMTEzNy1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oOjExMzg6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xMTM5LVxcdC8qIFNldCB0byB0cnVlIHdoZW4gdGhlIFBHX21pZ3JhdGVfc2tpcCBiaXRzIHNob3VsZCBiZSBjbGVhcmVkICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oPTE0Njc9dHlwZWRlZiBzdHJ1Y3QgcGdsaXN0X2RhdGEge1xcbi0tXFxuaW5jbHVkZS9saW51eC9tbXpvbmUuaC0xNTI2LVxcbmluY2x1ZGUvbGludXgvbW16b25lLmg6MTUyNzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L21tem9uZS5oLTE1MjgtXFx0aW50IGtjb21wYWN0ZF9tYXhfb3JkZXI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oPTkwPXZvaWQgY2xlYXJfcGZuYmxvY2tfYml0KGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHBmbixcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgtOTMtLyogRGVjbGFyYXRpb25zIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIGZsYWdzLiBTZWUgbW0vcGFnZV9hbGxvYy5jICovXFxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaDo5NDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oLTk1LSNkZWZpbmUgZ2V0X3BhZ2VibG9ja19za2lwKHBhZ2UpIFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmg9MTA5PXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZWJsb2NrX3NraXAoc3RydWN0IHBhZ2UgKnBhZ2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oLTExMS19XFxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaDoxMTI6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXFxuaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaC0xMTMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODI2PXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTMxMi1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTMxMzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTMxNC1cXHRzdHJ1Y3QgY2FwdHVyZV9jb250cm9sXFx0XFx0KmNhcHR1cmVfY29udHJvbDtcXG4tLVxcbmluY2x1ZGUvbGludXgvdm1fZXZlbnRfaXRlbS5oPTM0PWVudW0gdm1fZXZlbnRfaXRlbSB7IFBHUEdJTiwgUEdQR09VVCwgUFNXUElOLCBQU1dQT1VULFxcbi0tXFxuaW5jbHVkZS9saW51eC92bV9ldmVudF9pdGVtLmgtNjQtI2VuZGlmXFxuaW5jbHVkZS9saW51eC92bV9ldmVudF9pdGVtLmg6NjU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxuaW5jbHVkZS9saW51eC92bV9ldmVudF9pdGVtLmgtNjYtXFx0XFx0Q09NUEFDVE1JR1JBVEVfU0NBTk5FRCwgQ09NUEFDVEZSRUVfU0NBTk5FRCxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaD02Nz1ERUZJTkVfRVZFTlQobW1fY29tcGFjdGlvbl9pc29sYXRlX3RlbXBsYXRlLCBtbV9jb21wYWN0aW9uX2Zhc3RfaXNvbGF0ZV9mcmVlcGFnZXMsXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmgtNzctXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvY29tcGFjdGlvbi5oOjc4OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2NvbXBhY3Rpb24uaC03OS1UUkFDRV9FVkVOVChtbV9jb21wYWN0aW9uX21pZ3JhdGVwYWdlcyxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21tZmxhZ3MuaD0yMzY9SUZfSEFWRV9WTV9EUk9QUEFCTEUoVk1fRFJPUFBBQkxFLFxcdFxcXCJkcm9wcGFibGVcXFwiXFx0KVxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21tZmxhZ3MuaC0yNDMtXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbW1mbGFncy5oOjI0NDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tbWZsYWdzLmgtMjQ1LSNkZWZpbmUgQ09NUEFDVElPTl9TVEFUVVNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaD0xNjY9VFJBQ0VfRVZFTlQoc2tpcF90YXNrX3JlYXBpbmcsXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaC0xODEtXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmg6MTgyOiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTE4My1UUkFDRV9FVkVOVChjb21wYWN0X3JldHJ5LFxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmgtMjE4LSk7XFxuaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmg6MjE5OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oLTIyMC0jZW5kaWZcXG4tLVxcbmtlcm5lbC9zY2hlZC9jb3JlLmM9NDU2Mz1zdGF0aWMgdm9pZCBfX3NjaGVkX2ZvcmsodTY0IGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jLTQ2MDgtXFxua2VybmVsL3NjaGVkL2NvcmUuYzo0NjA5OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbmtlcm5lbC9zY2hlZC9jb3JlLmMtNDYxMC1cXHRwLVxcdTAwM2VjYXB0dXJlX2NvbnRyb2wgPSBOVUxMO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jLTI4LVxcbm1tL2NvbXBhY3Rpb24uYzoyOTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9jb21wYWN0aW9uLmMtMzAtLypcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz01OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdmlhX2NvbXBhY3RfbWVtb3J5KGludCBvcmRlcikgeyByZXR1cm4gZmFsc2U7IH1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy02MS1cXG5tbS9jb21wYWN0aW9uLmM6NjI6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXFxubW0vY29tcGFjdGlvbi5jLTYzLVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTkxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHJlbGVhc2VfZnJlZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVwYWdlcylcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xMTUtXFxubW0vY29tcGFjdGlvbi5jOjExNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9jb21wYWN0aW9uLmMtMTE3LVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTQ5MD1zdGF0aWMgYm9vbCB0ZXN0X2FuZF9zZXRfc2tpcChzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgc3RydWN0IHBhZ2UgKnBhZ2UpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNDkzLX1cXG5tbS9jb21wYWN0aW9uLmM6NDk0OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xcbm1tL2NvbXBhY3Rpb24uYy00OTUtXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MTMzNj1pc29sYXRlX21pZ3JhdGVwYWdlc19yYW5nZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTM3MS1cXG5tbS9jb21wYWN0aW9uLmM6MTM3MjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xcbm1tL2NvbXBhY3Rpb24uYzoxMzczOiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL2NvbXBhY3Rpb24uYy0xMzc0LVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTMzNTA9c3Vic3lzX2luaXRjYWxsKGtjb21wYWN0ZF9pbml0KVxcbm1tL2NvbXBhY3Rpb24uYy0zMzUxLVxcbm1tL2NvbXBhY3Rpb24uYzozMzUyOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xcbi0tXFxubW0vaW50ZXJuYWwuaD0xMDA2PXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdF9zdWJzZWN0aW9uX21hcCh2b2lkKVxcbi0tXFxubW0vaW50ZXJuYWwuaC0xMDEwLVxcbm1tL2ludGVybmFsLmg6MTAxMTojaWYgZGVmaW5lZCBDT05GSUdfQ09NUEFDVElPTiB8fCBkZWZpbmVkIENPTkZJR19DTUFcXG5tbS9pbnRlcm5hbC5oLTEwMTItXFxuLS1cXG5tbS9pbnRlcm5hbC5oPTEwODA9dm9pZCBpbml0X2NtYV9yZXNlcnZlZF9wYWdlYmxvY2soc3RydWN0IHBhZ2UgKnBhZ2UpO1xcbm1tL2ludGVybmFsLmgtMTA4MS1cXG5tbS9pbnRlcm5hbC5oOjEwODI6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OIHx8IENPTkZJR19DTUEgKi9cXG5tbS9pbnRlcm5hbC5oLTEwODMtXFxuLS1cXG5tbS9tbV9pbml0LmM9MTMyNz1zdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX25vZGVfdG90YWxwYWdlcyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxcbi0tXFxubW0vbW1faW5pdC5jLTEzNjktXFxubW0vbW1faW5pdC5jOjEzNzA6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vbW1faW5pdC5jLTEzNzEtc3RhdGljIHZvaWQgcGdkYXRfaW5pdF9rY29tcGFjdGQoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcXG4tLVxcbm1tL29vbV9raWxsLmM9NDU2PXN0YXRpYyB2b2lkIGR1bXBfaGVhZGVyKHN0cnVjdCBvb21fY29udHJvbCAqb2MpXFxuLS1cXG5tbS9vb21fa2lsbC5jLTQ2MC1cXHRcXHRcXHRjdXJyZW50LVxcdTAwM2VzaWduYWwtXFx1MDAzZW9vbV9zY29yZV9hZGopO1xcbm1tL29vbV9raWxsLmM6NDYxOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikgXFx1MDAyNlxcdTAwMjYgb2MtXFx1MDAzZW9yZGVyKVxcbm1tL29vbV9raWxsLmMtNDYyLVxcdFxcdHByX3dhcm4oXFxcIkNPTVBBQ1RJT04gaXMgZGlzYWJsZWQhISFcXFxcblxcXCIpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTcxMj1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2J1ZGR5X29yZGVyKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNzE3LVxcbm1tL3BhZ2VfYWxsb2MuYzo3MTg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vcGFnZV9hbGxvYy5jLTcxOS1zdGF0aWMgaW5saW5lIHN0cnVjdCBjYXB0dXJlX2NvbnRyb2wgKnRhc2tfY2FwYyhzdHJ1Y3Qgem9uZSAqem9uZSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz03Njc9Y29tcGFjdGlvbl9jYXB0dXJlKHN0cnVjdCBjYXB0dXJlX2NvbnRyb2wgKmNhcGMsIHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTc3MS19XFxubW0vcGFnZV9hbGxvYy5jOjc3MjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS9wYWdlX2FsbG9jLmMtNzczLVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQwNTQ9X19hbGxvY19wYWdlc19tYXlfb29tKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNDE0NS1cXG5tbS9wYWdlX2FsbG9jLmM6NDE0NjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9wYWdlX2FsbG9jLmMtNDE0Ny0vKiBUcnkgbWVtb3J5IGNvbXBhY3Rpb24gZm9yIGhpZ2gtb3JkZXIgYWxsb2NhdGlvbnMgYmVmb3JlIHJlY2xhaW0gKi9cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz00Mjg2PXNob3VsZF9jb21wYWN0X3JldHJ5KGdmcF90IGdmcF9tYXNrLCBzdHJ1Y3QgYWxsb2NfY29udGV4dCAqYWMsIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy00MzExLX1cXG5tbS9wYWdlX2FsbG9jLmM6NDMxMjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS9wYWdlX2FsbG9jLmMtNDMxMy1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTYzMjM9c3RhdGljIHZvaWQgc2hyaW5rX3pvbmVzKHN0cnVjdCB6b25lbGlzdCAqem9uZWxpc3QsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNjM2My1cXHRcXHRcXHQgKi9cXG5tbS92bXNjYW4uYzo2MzY0OlxcdFxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19DT01QQUNUSU9OKSBcXHUwMDI2XFx1MDAyNlxcbm1tL3Ztc2Nhbi5jLTYzNjUtXFx0XFx0XFx0ICAgIHNjLVxcdTAwM2VvcmRlciBcXHUwMDNlIFBBR0VfQUxMT0NfQ09TVExZX09SREVSIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5tbS92bXN0YXQuYz0xMDQyPXZvaWQgbWVtbWFwX3BhZ2VzX2FkZChsb25nIGRlbHRhKVxcbi0tXFxubW0vdm1zdGF0LmMtMTA0Ni1cXG5tbS92bXN0YXQuYzoxMDQ3OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3Ztc3RhdC5jLTEwNDgtXFxuLS1cXG5tbS92bXN0YXQuYz0xMTg3PWNvbnN0IGNoYXIgKiBjb25zdCB2bXN0YXRfdGV4dFtdID0ge1xcbi0tXFxubW0vdm1zdGF0LmMtMTM3MC0jZW5kaWZcXG5tbS92bXN0YXQuYzoxMzcxOiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3Ztc3RhdC5jLTEzNzItXFx0W0koQ09NUEFDVE1JR1JBVEVfU0NBTk5FRCldXFx0XFx0PSBcXFwiY29tcGFjdF9taWdyYXRlX3NjYW5uZWRcXFwiLFxcbi0tXFxubW0vdm1zdGF0LmMtMTQ5Ni1cXG5tbS92bXN0YXQuYzoxNDk3OiNpZiAoZGVmaW5lZChDT05GSUdfREVCVUdfRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pKSB8fCBcXFxcXFxubW0vdm1zdGF0LmMtMTQ5OC0gICAgIGRlZmluZWQoQ09ORklHX1BST0NfRlMpXFxuLS1cXG5tbS92bXN0YXQuYz0yMjY4PXZvaWQgX19pbml0IGluaXRfbW1faW50ZXJuYWxzKHZvaWQpXFxuLS1cXG5tbS92bXN0YXQuYy0yMzAxLVxcbm1tL3Ztc3RhdC5jOjIzMDI6I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19DT01QQUNUSU9OKVxcbm1tL3Ztc3RhdC5jLTIzMDMtXFxuLS1cXG5tbS96c21hbGxvYy5jPTI3MD1zdHJ1Y3QgenNfcG9vbCB7XFxuLS1cXG5tbS96c21hbGxvYy5jLTI4NC0jZW5kaWZcXG5tbS96c21hbGxvYy5jOjI4NTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTI4Ni1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrO1xcbi0tXFxubW0venNtYWxsb2MuYz00MzE9c3RhdGljIGJvb2wgWnNIdWdlUGFnZShzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXFxuLS1cXG5tbS96c21hbGxvYy5jLTQzNS1cXG5tbS96c21hbGxvYy5jOjQzNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTQzNy1zdGF0aWMgdm9pZCBraWNrX2RlZmVycmVkX2ZyZWUoc3RydWN0IHpzX3Bvb2wgKnBvb2wpO1xcbi0tXFxubW0venNtYWxsb2MuYz0xMDI3PXN0YXRpYyBzdHJ1Y3QgenNwYWdlICphbGxvY196c3BhZ2Uoc3RydWN0IHpzX3Bvb2wgKnBvb2wsXFxuLS1cXG5tbS96c21hbGxvYy5jLTEwMzctXFxubW0venNtYWxsb2MuYzoxMDM4OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikpXFxubW0venNtYWxsb2MuYy0xMDM5LVxcdFxcdGdmcCBcXHUwMDI2PSB+X19HRlBfTU9WQUJMRTtcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MTQ1MT1zdGF0aWMgdm9pZCBvYmpfZnJlZShpbnQgY2xhc3Nfc2l6ZSwgdW5zaWduZWQgbG9uZyBvYmopXFxuLS1cXG5tbS96c21hbGxvYy5jLTE0NzgtXFxubW0venNtYWxsb2MuYzoxNDc5OiNpZiAoWlNfT0JKX0NMQVNTX0JJVFMgXFx1MDAzZSAwKSB8fCBkZWZpbmVkKENPTkZJR19DT01QQUNUSU9OKVxcbm1tL3pzbWFsbG9jLmMtMTQ4MC0vKiBGb2xkcyB0byAwIHdoZW4gWlNfT0JKX0NMQVNTX0JJVFMgPT0gMDsgbm8gaWZkZWYgbmVlZGVkIGF0IGNhbGxlcnMuICovXFxuLS1cXG5tbS96c21hbGxvYy5jPTE3NTA9c3RhdGljIGludCBwdXRiYWNrX3pzcGFnZShzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3MsIHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTc1OS1cXG5tbS96c21hbGxvYy5jOjE3NjA6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0xNzYxLS8qXFxuLS1cXG5tbS96c21hbGxvYy5jPTIzOTE9c3RhdGljIGludCBfX2luaXQgenNfaW5pdCh2b2lkKVxcbi0tXFxubW0venNtYWxsb2MuYy0yMzk4LVxcbm1tL3pzbWFsbG9jLmM6MjM5OTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTI0MDAtXFx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXFx1MDAyNnpzbWFsbG9jX21vcHMsIFBHVFlfenNtYWxsb2MpO1xcbi0tXFxubW0venNtYWxsb2MuYz0yNDEwPXN0YXRpYyB2b2lkIF9fZXhpdCB6c19leGl0KHZvaWQpXFxubW0venNtYWxsb2MuYy0yNDExLXtcXG5tbS96c21hbGxvYy5jOjI0MTI6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0yNDEzLVxcdHNldF9tb3ZhYmxlX29wcyhOVUxMLCBQR1RZX3pzbWFsbG9jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6MDkuMDUwNTgyMjA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMzI4NTQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQXNzZXNzaW5nIFBvdGVudGlhbCBTeXN0ZW0gSW1wYWN0cyoqXG5cblJpZ2h0LCBgQ09ORklHX0NPTVBBQ1RJT05gIGlzIGJhc2ljYWxseSBldmVyeXdoZXJlIHRoZXNlIGRheXMsIHNvIHRoYXQncyBhIGdpdmVuLiBOb3csIGxldCdzIHBpdm90IGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgaW50ZXJwbGF5IHdpdGggYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgdGhlc2UgdHdvIGludGVyYWN0IGluIHRoZSBvdmVyYWxsIG1lbW9yeSBtYW5hZ2VtZW50IHNjaGVtZS4gSSdtIHRoaW5raW5nIGFib3V0IHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgZnJhZ21lbnRhdGlvbiBpc3N1ZXMsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIga2VybmVsIHN1YnN5c3RlbXMuIEkgbmVlZCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGdvdGNoYXMgb3Igb3B0aW1pemF0aW9ucyB0aGF0IGltbWVkaWF0ZWx5IGp1bXAgb3V0LiBMZXQncyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgbXkgb3duIHByaW9yIGV4cGVyaWVuY2Ugc3VnZ2VzdHMgYWJvdXQgaG93IHRoZXNlIHR3byB3b3JrIHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzU5NiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAyOjEyLjE3Mzg3MTU3M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQwMjM4MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5MjYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdD0xNDI2PVRoZSBmb2xsb3dpbmcgbmVzdGVkIGtleXMgYXJlIGRlZmluZWQuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3QtMTc0My1cXHRcXHROdW1iZXIgb2YgdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIHdoaWNoIHdlcmUgYWxsb2NhdGVkIHRvIHNhdGlzZnlcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3Q6MTc0NDpcXHRcXHRhIHBhZ2UgZmF1bHQuIFRoaXMgY291bnRlciBpcyBub3QgcHJlc2VudCB3aGVuIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdC0xNzQ1LSAgICAgICAgICAgICAgICBpcyBub3Qgc2V0Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjIucnN0LTE3NDktXFx0XFx0Y29sbGFwc2luZyBhbiBleGlzdGluZyByYW5nZSBvZiBwYWdlcy4gVGhpcyBjb3VudGVyIGlzIG5vdFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLnJzdDoxNzUwOlxcdFxcdHByZXNlbnQgd2hlbiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgaXMgbm90IHNldC5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5yc3QtMTc1MS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJzdD0zOTk9QWRkaXRpb25hbGx5LCBLY29uZmlnIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB0byBzZXQgdGhlIGRlZmF1bHQgaHVnZXBhZ2VcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3RyYW5zaHVnZS5yc3Q6NDAwOnBvbGljaWVzIGZvciBzaG1lbSAoYGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV8qYGApIGFuZCB0bXBmc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJzdDo0MDE6KGBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfKmBgKSBhdCBidWlsZCB0aW1lLiBSZWZlciB0byB0aGVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3RyYW5zaHVnZS5yc3QtNDAyLUtjb25maWcgaGVscCBmb3IgbW9yZSBkZXRhaWxzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy90bXBmcy5yc3Q9MTExPXRtcGZzIGFsc28gc3VwcG9ydHMgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyB3aGljaCByZXF1aXJlcyBhIGtlcm5lbFxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdG1wZnMucnN0OjExMjpjb25maWd1cmVkIHdpdGggQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFIGFuZCB3aXRoIGh1Z2Ugc3VwcG9ydGVkIGZvclxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdG1wZnMucnN0LTExMy15b3VyIHN5c3RlbSAoaGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKCksIHdoaWNoIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYykuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0PTE2Mj1zaG1lbSBtb3VudHBvaW50IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgb25lICgnc2htX21udCcpLiBGb3IgYnVpbGRzXFxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdDoxNjM6d2l0aCBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgZW5hYmxlZCwgZnVydGhlciBjYWxscyB0b1xcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QtMTY0LWRybV9nZW1fb2JqZWN0X2luaXQoKSB3aWxsIGxldCBzaG1lbSBhbGxvY2F0ZSBodWdlIHBhZ2VzIHdoZW5cXG4tLVxcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3Q9MzA4PUluIG9yZGVyIHRvIHJlZHVjZSBwYWdlIHRhYmxlIG92ZXJoZWFkLCBpZiB0aGUgaW50ZXJuYWwgc2htZW0gbW91bnRwb2ludFxcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QtMzA5LVxcXCJzaG1fbW50XFxcIiBpcyBjb25maWd1cmVkIHRvIHVzZSB0cmFuc3BhcmVudCBodWdlIHBhZ2VzIChmb3IgYnVpbGRzIHdpdGhcXG5Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0OjMxMDpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgZW5hYmxlZCkgYW5kIGlmIHRoZSBzaG1lbSBiYWNraW5nIHN0b3JlXFxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdC0zMTEtbWFuYWdlZCB0byBhbGxvY2F0ZSBhIGh1Z2UgcGFnZSBmb3IgYSBmYXVsdHkgYWRkcmVzcywgdGhlIGZhdWx0IGhhbmRsZXJcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0yMTA9R2VuZXJhbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI2NS1gYGRlZmVycmVkX3NwbGl0X3F1ZXVlYGBcXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjY2OiAgUGVyLW5vZGUgcXVldWUgb2YgaHVnZSBwYWdlcyB0aGF0IHRoZWlyIHNwbGl0IHdhcyBkZWZlcnJlZC4gRGVmaW5lZCBvbmx5IHdoZW4gYGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgYCBpcyBlbmFibGVkLlxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNjctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIwNT1ub2RlX3pvbmVsaXN0c+W8leeUqOOAglxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTEtYGBkZWZlcnJlZF9zcGxpdF9xdWV1ZWBgXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNTI65q+P5Liq6IqC54K555qE5aSn6aG16Zif5YiX77yM6L+Z5Lqb5aSn6aG155qE5ouG5YiG6KKr5o6o6L+f5LqG44CC5LuF5Zyo5byA5ZCv5LqGIGBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYGBcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI1My3phY3nva7pgInpobnml7blrprkuYnjgIJcXG4tLVxcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3BndGFibGUtYml0cy1hcmN2Mi5oPTEzOT1QVEVfQklUX0ZVTkMoc3dwX2NsZWFyX2V4Y2x1c2l2ZSwgXFx1MDAyNj0gfihfUEFHRV9TV1BfRVhDTFVTSVZFKSk7XFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmgtMTQwLVxcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3BndGFibGUtYml0cy1hcmN2Mi5oOjE0MTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vcGd0YWJsZS1iaXRzLWFyY3YyLmgtMTQyLSNpbmNsdWRlIFxcdTAwM2Nhc20vaHVnZXBhZ2UuaFxcdTAwM2VcXG4tLVxcbmFyY2gvYXJjL2luY2x1ZGUvYXNtL3RsYmZsdXNoLmg9MTU9dm9pZCBsb2NhbF9mbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0xNi1cXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaDoxNzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0xOC12b2lkIGxvY2FsX2ZsdXNoX3BtZF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTI3LSNkZWZpbmUgZmx1c2hfdGxiX21tKG1tKVxcdFxcdGxvY2FsX2ZsdXNoX3RsYl9tbShtbSlcXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oOjI4OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTI5LSNkZWZpbmUgZmx1c2hfcG1kX3RsYl9yYW5nZSh2bWEsIHMsIGUpXFx0bG9jYWxfZmx1c2hfcG1kX3RsYl9yYW5nZSh2bWEsIHMsIGUpXFxuLS1cXG5hcmNoL2FyYy9pbmNsdWRlL2FzbS90bGJmbHVzaC5oPTM3PWV4dGVybiB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7XFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaDozODojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcmMvaW5jbHVkZS9hc20vdGxiZmx1c2guaC0zOS1leHRlcm4gdm9pZCBmbHVzaF9wbWRfdGxiX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYz0xMzQ9bm9pbmxpbmUgdm9pZCBsb2NhbF9mbHVzaF90bGJfYWxsKHZvaWQpXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYy0xNTYtXFxuYXJjaC9hcmMvbW0vdGxiLmM6MTU3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpIHtcXG5hcmNoL2FyYy9tbS90bGIuYy0xNTgtXFx0XFx0Y29uc3QgaW50IHN0bGJfaWR4ID0gMHg4MDA7XFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYz0zMTA9c3RhdGljIGlubGluZSB2b2lkIGlwaV9mbHVzaF90bGJfcmFuZ2Uodm9pZCAqYXJnKVxcbi0tXFxuYXJjaC9hcmMvbW0vdGxiLmMtMzE2LVxcbmFyY2gvYXJjL21tL3RsYi5jOjMxNzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcmMvbW0vdGxiLmMtMzE4LXN0YXRpYyBpbmxpbmUgdm9pZCBpcGlfZmx1c2hfcG1kX3RsYl9yYW5nZSh2b2lkICphcmcpXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYz0zNTQ9dm9pZCBmbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYy0zNjUtXFxuYXJjaC9hcmMvbW0vdGxiLmM6MzY2OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FyYy9tbS90bGIuYy0zNjctdm9pZCBmbHVzaF9wbWRfdGxiX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9hcmMvbW0vdGxiLmM9NDcyPXZvaWQgdXBkYXRlX21tdV9jYWNoZV9yYW5nZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYy01MDYtXFxuYXJjaC9hcmMvbW0vdGxiLmM6NTA3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FyYy9tbS90bGIuYy01MDgtXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYz01NjM9aW50IGFyY19tbXVfbXVtYm9qdW1ibyhpbnQgYywgY2hhciAqYnVmLCBpbnQgbGVuKVxcbi0tXFxuYXJjaC9hcmMvbW0vdGxiLmMtNTk3LVxcdFxcdFxcdCAgbW11LVxcdTAwM2VzX3BnX3N6X20sXFxuYXJjaC9hcmMvbW0vdGxiLmM6NTk4OlxcdFxcdFxcdCAgSVNfRU5BQkxFRChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpID8gXFxcIiAoVEhQIGVuYWJsZWQpXFxcIjpcXFwiXFxcIik7XFxuYXJjaC9hcmMvbW0vdGxiLmMtNTk5LVxcbi0tXFxuYXJjaC9hcmMvbW0vdGxiLmM9NjE2PXZvaWQgYXJjX21tdV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FyYy9tbS90bGIuYy02NDgtXFxuYXJjaC9hcmMvbW0vdGxiLmM6NjQ5OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL2FyYy9tbS90bGIuYy02NTAtXFx0ICAgIG1tdS1cXHUwMDNlc19wZ19zel9tICE9IFRPX01CKEhQQUdFX1BNRF9TSVpFKSlcXG4tLVxcbmFyY2gvYXJjL21tL3RsYmV4LlM9Nzk9ZXhfc2F2ZWRfcmVnMTpcXG4tLVxcbmFyY2gvYXJjL21tL3RsYmV4LlMtMTkzLVxcbmFyY2gvYXJjL21tL3RsYmV4LlM6MTk0OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FyYy9tbS90bGJleC5TLTE5NS1cXHRhbmQuZlxcdDAsIHIzLCBfUEFHRV9IV19TWlxcdDsgSXMgdGhpcyBIdWdlIFBNRCAodGhwKVxcbi0tXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vcGd0YWJsZS0zbGV2ZWwuaD0xODM9c3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtzcGVjaWFsKHB0ZV90IHB0ZSlcXG4tLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3BndGFibGUtM2xldmVsLmgtMTkzLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3BndGFibGUtM2xldmVsLmg6MTk0OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxlLTNsZXZlbC5oLTE5NS0jZGVmaW5lIHBtZF90cmFuc19odWdlKHBtZClcXHQocG1kX3ZhbChwbWQpIFxcdTAwMjZcXHUwMDI2ICFwbWRfdGFibGUocG1kKSlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MTM2PUNPTkZJR19NRU1PUllfRkFJTFVSRT15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzoxMzc6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzOC1DT05GSUdfTkVUPXlcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTgyPXN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2xlYXZlX2xhenlfbW11X21vZGUodm9pZClcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTg2LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjg3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC04OC0jZGVmaW5lIF9fSEFWRV9BUkNIX0ZMVVNIX1BNRF9UTEJfUkFOR0VcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTk0LVxcdF9fZmx1c2hfdGxiX3JhbmdlKHZtYSwgYWRkciwgZW5kLCBQVURfU0laRSwgMSwgVExCRl9OT05FKVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjk1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC05Ni1cXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTc4Mz1zdGF0aWMgaW5saW5lIGJvb2wgcG1kX2xlYWYocG1kX3QgcG1kKVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzkyLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjc5MzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzk0LXN0YXRpYyBpbmxpbmUgaW50IHBtZF90cmFuc19odWdlKHBtZF90IHBtZClcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTgwMS19XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6ODAyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC04MDMtXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMjU5PXN0YXRpYyBpbmxpbmUgaW50IF9fcHRlcF9zZXRfYWNjZXNzX2ZsYWdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTI2Ni1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMjY3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMjY4LSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9TRVRfQUNDRVNTX0ZMQUdTXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMzIxPXN0YXRpYyBpbmxpbmUgYm9vbCBfX3B0ZXBfY2xlYXJfZmx1c2hfeW91bmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzQwLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjEzNDE6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSB8fCBkZWZpbmVkKENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORylcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzQyLSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9URVNUX0FORF9DTEVBUl9ZT1VOR1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTEzNDM9c3RhdGljIGlubGluZSBib29sIHBtZHBfdGVzdF9hbmRfY2xlYXJfeW91bmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzQ5LX1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMzUwOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgfHwgQ09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5HICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTM1MS1cXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTEzOTY9c3RhdGljIGlubGluZSBwdGVfdCBfX2dldF9hbmRfY2xlYXJfZnVsbF9wdGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQxNC1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNDE1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDE2LSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9IVUdFX0dFVF9BTkRfQ0xFQVJcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaD0xNDE3PXN0YXRpYyBpbmxpbmUgcG1kX3QgcG1kcF9odWdlX2dldF9hbmRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDIxLX1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNDIyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDIzLVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTQ3Nj1zdGF0aWMgaW5saW5lIHZvaWQgX19jbGVhcl95b3VuZ19kaXJ0eV9wdGVzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQ5Ni1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNDk3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDk4LSNkZWZpbmUgX19IQVZFX0FSQ0hfUE1EUF9TRVRfV1JQUk9URUNUXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEyMD1DT05GSUdfS1NNPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjEyMTpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTIyLUNPTkZJR19DTUE9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTI2ND1zdGF0aWMgaW5saW5lIHZvaWQgcG1kX2NsZWFyKHBtZF90ICpwbWRwKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3MC1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MjcxOiNpZm5kZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3Mi0jZGVmaW5lIHBtZF9wYWdlKHBtZClcXHRcXHQocGZuX3RvX3BhZ2UocG1kX3BoeXMocG1kKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSlcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MjczOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgICovXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTI3NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3BndGFibGUuaD01MDA9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHBtZF9wZm4ocG1kX3QgcG1kKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTUwNC1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6NTA1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNTA2LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTYxND1zdGF0aWMgaW5saW5lIHBtZF90IHBtZHBfaHVnZV9nZXRfYW5kX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTYyMy1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6NjI0OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNjI1LVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc9MjQ9Q09ORklHX01PRFVMRV9VTkxPQUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnLTI1LSMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZzoyNjpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnLTI3LUNPTkZJR19ORVQ9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc9MjM9Q09ORklHX09TRl9QQVJUSVRJT049eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTI0LSMgQ09ORklHX0VGSV9QQVJUSVRJT04gaXMgbm90IHNldFxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnOjI1OkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWctMjYtQ09ORklHX05FVD15XFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTYwNz11bnNpZ25lZCBsb25nIGlvX3JlbWFwX3Bmbl9yYW5nZV9wZm4odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgc2l6ZSk7XFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTYxMi1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjYxMzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaC02MTQtXFxuLS1cXG5hcmNoL21pcHMvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTczND1zdGF0aWMgaW5saW5lIHBtZF90IHBtZHBfaHVnZV9nZXRfYW5kX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaC03NDMtXFxuYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUuaDo3NDQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbmFyY2gvbWlwcy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtNzQ1LVxcbi0tXFxuYXJjaC9taXBzL21tL3BndGFibGUtMzIuYz0xNj12b2lkIHBnZF9pbml0KHZvaWQgKmFkZHIpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jLTMyLVxcbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTMyLmM6MzM6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKVxcbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTMyLmMtMzQtdm9pZCBzZXRfcG1kX2F0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jLTM4LX1cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jOjM5OiNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgKi9cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS0zMi5jLTQwLVxcbi0tXFxuYXJjaC9taXBzL21tL3BndGFibGUtNjQuYz03MD12b2lkIHB1ZF9pbml0KHZvaWQgKmFkZHIpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGd0YWJsZS02NC5jLTkxLVxcbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTY0LmM6OTI6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvbWlwcy9tbS9wZ3RhYmxlLTY0LmMtOTMtdm9pZCBzZXRfcG1kX2F0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiLXI0ay5jPTM5MT12b2lkIGFkZF93aXJlZF9lbnRyeSh1bnNpZ25lZCBsb25nIGVudHJ5bG8wLCB1bnNpZ25lZCBsb25nIGVudHJ5bG8xLFxcbi0tXFxuYXJjaC9taXBzL21tL3RsYi1yNGsuYy00MzQtXFxuYXJjaC9taXBzL21tL3RsYi1yNGsuYzo0MzU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvbWlwcy9tbS90bGItcjRrLmMtNDM2LVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYi1yNGsuYz00NTM9RVhQT1JUX1NZTUJPTChoYXNfdHJhbnNwYXJlbnRfaHVnZXBhZ2UpO1xcbmFyY2gvbWlwcy9tbS90bGItcjRrLmMtNDU0LVxcbmFyY2gvbWlwcy9tbS90bGItcjRrLmM6NDU1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgICovXFxuYXJjaC9taXBzL21tL3RsYi1yNGsuYy00NTYtXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz02Mj1DT05GSUdfSFdQT0lTT05fSU5KRUNUPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo2MzpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTY0LUNPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz05MD1DT05GSUdfS1NNPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6OTE6Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTItQ09ORklHX01FTV9TT0ZUX0RJUlRZPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC00ay5oPTExMj1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRlX3NldF9oaWR4KHB0ZV90ICpwdGVwLCByZWFsX3B0ZV90IHJwdGUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNGsuaC0xMTktXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTRrLmg6MTIwOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNGsuaC0xMjEtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtNzQtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjc1OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC03Ni0jZGVmaW5lIEhfUE1EX0ZSQUdfU0laRV9TSElGVCAgKEhfUE1EX0lOREVYX1NJWkUgKyAzICsgMSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaD0xNzU9c3RhdGljIGlubGluZSBpbnQgaGFzaF9fcmVtYXBfNGtfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg2LSNkZWZpbmUgSF9QVEVfVEFCTEVfU0laRVxcdFBURV9GUkFHX1NJWkVcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg6MTg3OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZCAoQ09ORklHX0hVR0VUTEJfUEFHRSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg4LSNkZWZpbmUgSF9QTURfVEFCTEVfU0laRVxcdCgoc2l6ZW9mKHBtZF90KSBcXHUwMDNjXFx1MDAzYyBQTURfSU5ERVhfU0laRSkgKyBcXFxcXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjAwLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoyMDE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC0yMDItc3RhdGljIGlubGluZSBjaGFyICpnZXRfaHB0ZV9zbG90X2FycmF5KHBtZF90ICpwbWRwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oPTIzOD1zdGF0aWMgaW5saW5lIHZvaWQgbWFya19ocHRlX3Nsb3RfdmFsaWQodW5zaWduZWQgY2hhciAqaHB0ZV9zbG90X2FycmF5LFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTI1MS0gKiBwbWRfdHJhbnNfaHVnZSgpIGlzIGRlZmluZWQgYXMgZmFsc2UgYXQgYnVpbGQgdGltZSBpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoyNTI6ICogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFPW4gdG8gb3B0aW1pemUgYXdheSBjb2RlIGJsb2NrcyBhdCBidWlsZFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC0yNTMtICogdGltZSBpbiBzdWNoIGNhc2UuXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg9MjgxPWV4dGVybiBpbnQgaGFzaF9faGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKHZvaWQpO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoyODI6I2VuZGlmIC8qICBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMjgzLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmg9MjY0PXN0YXRpYyBpbmxpbmUgdm9pZCBoYXNoX19zZXRfcHRlX2F0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC0yNzMtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmg6Mjc0OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC0yNzUtZXh0ZXJuIHZvaWQgaHB0ZV9kb19odWdlcGFnZV9mbHVzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmg9Mjc4PXN0YXRpYyBpbmxpbmUgdm9pZCBocHRlX2RvX2h1Z2VwYWdlX2ZsdXNoKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLmgtMjgzLX1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaDoyODQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTI4NS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaD00NzQ9aW50IF9faGFzaF9wYWdlX2h1Z2UodW5zaWduZWQgbG9uZyBlYSwgdW5zaWduZWQgbG9uZyBhY2Nlc3MsIHVuc2lnbmVkIGxvbmcgdnNpZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaC00NzYtXFx0XFx0ICAgICBpbnQgc3NpemUsIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50IG1tdV9wc2l6ZSk7XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oOjQ3NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oLTQ3OC1leHRlcm4gaW50IF9faGFzaF9wYWdlX3RocCh1bnNpZ25lZCBsb25nIGVhLCB1bnNpZ25lZCBsb25nIGFjY2VzcyxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oPTEwOTk9c3RhdGljIGlubGluZSBib29sIHBtZF91c2VyX2FjY2Vzc2libGVfcGFnZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLCBwbWRfdCBwbWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMTAzLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oOjExMDQ6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oLTExMDUtZXh0ZXJuIHBtZF90IHBmbl9wbWQodW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaD0xNDM1PXN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX25lZWRzX3BndGFibGVfZGVwb3NpdCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmgtMTQ0MS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaDoxNDQyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xNDQzLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oPTI1OD1zdGF0aWMgaW5saW5lIGludCByYWRpeF9fcDRkX2JhZChwNGRfdCBwNGQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMjYyLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaDoyNjM6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0yNjQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaD0xMD1zdGF0aWMgaW5saW5lIHB0ZV90ICpmaW5kX2xpbnV4X3B0ZShwZ2RfdCAqcGdkaXIsIHVuc2lnbmVkIGxvbmcgZWEsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0xOC0jaWYgZGVmaW5lZChDT05GSUdfREVCVUdfVk0pIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtd2Fsay5oOjE5OlxcdCEoZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSB8fCBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS13YWxrLmgtMjAtXFx0LypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19QUENfNjRLX1BBR0VTKVxcdCs9IGhhc2hfNjRrLm9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSArPSBoYXNoX2h1Z2VwYWdlLm9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGUtMTEtb2JqLSQoQ09ORklHX1BQQ19TVUJQQUdFX1BST1QpXFx0Kz0gc3VicGFnZV9wcm90Lm9cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX25hdGl2ZS5jPTU1MT1zdGF0aWMgdm9pZCBuYXRpdmVfaHB0ZV9pbnZhbGlkYXRlKHVuc2lnbmVkIGxvbmcgc2xvdCwgdW5zaWduZWQgbG9uZyB2cG4sXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9uYXRpdmUuYy01ODktXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfbmF0aXZlLmM6NTkwOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9uYXRpdmUuYy01OTEtc3RhdGljIHZvaWQgbmF0aXZlX2h1Z2VwYWdlX2ludmFsaWRhdGUodW5zaWduZWQgbG9uZyB2c2lkLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jPTE0OD1pbnQgaGFzaF9fbWFwX2tlcm5lbF9wYWdlKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgcGEsIHBncHJvdF90IHByb3QpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMTg4LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYzoxODk6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xOTAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM9NDIzPUVYUE9SVF9TWU1CT0xfR1BMKGhhc2hfX2hhc190cmFuc3BhcmVudF9odWdlcGFnZSk7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTQyNC1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6NDI1OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtNDI2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0yMTk4PXZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGxvbmcgdnBuLCByZWFsX3B0ZV90IHB0ZSwgaW50IHBzaXplLCBpbnQgc3NpemUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTIyMTgtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoyMjE5OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTIyMjAtdm9pZCBmbHVzaF9oYXNoX2h1Z2VwYWdlKHVuc2lnbmVkIGxvbmcgdnNpZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0yMjc0LX1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjIyNzU6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMjI3Ni1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9NDg9ZWFybHlfcGFyYW0oXFxcImtmZW5jZS5zYW1wbGVfaW50ZXJ2YWxcXFwiLCBwYXJzZV9rZmVuY2VfZWFybHlfaW5pdCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTUwLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6NTE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtNTItLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9MjY0PXB1ZF90IHB1ZF9tb2RpZnkocHVkX3QgcHVkLCBwZ3Byb3RfdCBuZXdwcm90KVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0yNzEtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6MjcyOiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTI3My1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9NTMyPXZvaWQgcHRlcF9tb2RpZnlfcHJvdF9jb21taXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtNTQwLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6NTQxOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTU0Mi0vKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz0xNDE1PXZvaWQgX19yZWYgcmFkaXhfX3ZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQyMi1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjE0MjM6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQyNC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9MTUzNj1wdWRfdCByYWRpeF9fcHVkcF9odWdlX2dldF9hbmRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE1NDYtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzoxNTQ3OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE1NDgtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9MTAxMj1zdGF0aWMgaW5saW5lIHZvaWQgX19yYWRpeF9fZmx1c2hfdGxiX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEwNTAtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEwNTE6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSlcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTA1Mi1cXHRcXHRcXHRwZ19zaXplcyB8PSBwc2l6ZV90b19ycHRpX3Bnc2l6ZShNTVVfUEFHRV8yTSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTA3Ni1cXHRcXHRoZW5kID0gZW5kIFxcdTAwMjYgUE1EX01BU0s7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEwNzc6XFx0XFx0aGZsdXNoID0gSVNfRU5BQkxFRChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpIFxcdTAwMjZcXHUwMDI2IGhzdGFydCBcXHUwMDNjIGhlbmQ7XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEwNzgtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9MTMwMz12b2lkIHJhZGl4X19mbHVzaF90bGJfcHdjX3JhbmdlX3BzaXplKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTEzMDgtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEzMDk6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMzEwLXZvaWQgcmFkaXhfX2ZsdXNoX3RsYl9jb2xsYXBzZWRfcG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtMTM1My19XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjEzNTQ6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMzU1LVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3N1YnBhZ2VfcHJvdC5jPTkwPXN0YXRpYyB2b2lkIHN1YnBhZ2VfcHJvdF9jbGVhcih1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3N1YnBhZ2VfcHJvdC5jLTEzNi1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc3VicGFnZV9wcm90LmM6MTM3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc3VicGFnZV9wcm90LmMtMTM4LXN0YXRpYyBpbnQgc3VicGFnZV93YWxrX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvdHJhY2UuYy00LSAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC90cmFjZS5jOjU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC90cmFjZS5jLTYtI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy90aHAuaFxcdTAwM2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYz0xMTc9dm9pZCBwdGVfZnJhZ21lbnRfZnJlZSh1bnNpZ25lZCBsb25nICp0YWJsZSwgaW50IGtlcm5lbClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYy0xMzItXFxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jOjEzMzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUtZnJhZy5jLTEzNC12b2lkIHB0ZV9mcmVlX2RlZmVyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ3RhYmxlX3QgcGd0YWJsZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYy0xNDEtfVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWZyYWcuYzoxNDI6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2xwYXIuYz0xMDg5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGNhbGxfYmxvY2tfcmVtb3ZlKHVuc2lnbmVkIGxvbmcgaWR4LCB1bnNpZ25lZCBsb25nICpwYXJhbSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9scGFyLmMtMTE0MC1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvbHBhci5jOjExNDE6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9scGFyLmMtMTE0Mi0vKlxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0Lmg9Mzk5PXA0ZF90ICpwNGRfb2Zmc2V0KHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0LmgtNDAwLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS02NC5oOjQwMTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLTY0LmgtNDAyLXN0YXRpYyBpbmxpbmUgcHRlX3QgcG1kX3B0ZShwbWRfdCBwbWQpO1xcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MjA0PWV4dGVybiBwZ2RfdCBlYXJseV9wZ19kaXJbXTtcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0yMDUtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MjA2OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaC0yMDctc3RhdGljIGlubGluZSBpbnQgcG1kX3ByZXNlbnQocG1kX3QgcG1kKVxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9OTkyPXN0YXRpYyBpbmxpbmUgYm9vbCBwdWRfdXNlcl9hY2Nlc3NpYmxlX3BhZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwgcHVkX3QgcHVkKVxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtOTk3LVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjk5ODojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtOTk5LXN0YXRpYyBpbmxpbmUgaW50IHBtZF90cmFuc19odWdlKHBtZF90IHBtZClcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTExNTg9c3RhdGljIGlubGluZSBwdWRfdCBwdWRfbW9kaWZ5KHB1ZF90IHB1ZCwgcGdwcm90X3QgbmV3cHJvdClcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExNjItXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTE2MzojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTE2NC1cXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGxiZmx1c2guaD01ND12b2lkIGxvY2FsX2ZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpO1xcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGxiZmx1c2guaDo1NTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90bGJmbHVzaC5oLTU2LSNkZWZpbmUgX19IQVZFX0FSQ0hfRkxVU0hfUE1EX1RMQl9SQU5HRVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9wZ3RhYmxlLmM9MTI1PWludCBwbWRfZnJlZV9wdGVfcGFnZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xMzYtI2VuZGlmIC8qIENPTkZJR19IQVZFX0FSQ0hfSFVHRV9WTUFQICovXFxuYXJjaC9yaXNjdi9tbS9wZ3RhYmxlLmM6MTM3OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xMzgtcG1kX3QgcG1kcF9jb2xsYXBzZV9mbHVzaChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jPTE1Nz1wdWRfdCBwdWRwX2ludmFsaWRhdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcXG4tLVxcbmFyY2gvcmlzY3YvbW0vcGd0YWJsZS5jLTE2NS19XFxuYXJjaC9yaXNjdi9tbS9wZ3RhYmxlLmM6MTY2OiNlbmRpZiAvKiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi9cXG5hcmNoL3Jpc2N2L21tL3BndGFibGUuYy0xNjctXFxuLS1cXG5hcmNoL3Jpc2N2L21tL3RsYmZsdXNoLmM9MjAzPXZvaWQgZmx1c2hfdGxiX2tlcm5lbF9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vdGxiZmx1c2guYy0yMDgtXFxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jOjIwOTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuYXJjaC9yaXNjdi9tbS90bGJmbHVzaC5jLTIxMC12b2lkIGZsdXNoX3BtZF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTA4PUNPTkZJR19QRVJTSVNURU5UX0hVR0VfWkVST19GT0xJTz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwOTpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMTAtQ09ORklHX0NNQV9ERUJVR0ZTPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMDE9Q09ORklHX1BFUlNJU1RFTlRfSFVHRV9aRVJPX0ZPTElPPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTAyOkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEwMy1DT05GSUdfQ01BX1NZU0ZTPXlcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTU2MD1zdGF0aWMgaW5saW5lIHB1ZF90IHB1ZF9ta2RpcnR5KHB1ZF90IHB1ZClcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTU2Ny1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE1Njg6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSB8fCBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0UpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNTY5LXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYXNzYWdlX3BncHJvdF9wbWQocGdwcm90X3QgcGdwcm90KVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xNjE4PXN0YXRpYyBpbmxpbmUgcG1kX3QgbWtfcG1kX3BoeXModW5zaWduZWQgbG9uZyBwaHlzcGFnZSwgcGdwcm90X3QgcGdwcm90KVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjIyLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTYyMzojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFIHx8IENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2MjQtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE2OTM9cHVkX3QgcHVkcF94Y2hnX2RpcmVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIHB1ZF90ICosIHB1ZF90KTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2OTQtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNjk1OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2OTYtXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE4MzA9c3RhdGljIGlubGluZSBpbnQgaGFzX3RyYW5zcGFyZW50X2h1Z2VwYWdlKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE4MzMtfVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTgzNDojZW5kaWYgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xODM1LVxcbi0tXFxuYXJjaC9zMzkwL21tL3BnYWxsb2MuYz0xMzk9dm9pZCBwYWdlX3RhYmxlX2ZyZWUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgKnRhYmxlKVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAyOjE3LjgxNDExNzA2MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNzQyNzYwOTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBSZWNlbnQgQ2hhbmdlcyBSZWxhdGVkIHRvIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyB3aWRlbHkgZGVwbG95ZWQsIG1lYW5pbmcgYW55IGlzc3VlcyBhcm91bmQgaXQgbmVlZCB0byBiZSBhZGRyZXNzZWQgbWV0aWN1bG91c2x5LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIHJlY2VudCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBgbW0vcGFnZV9hbGxvYy5jYCwgYG1tL2ludGVybmFsLmhgLCBgbW0vaHVnZV9tZW1vcnkuY2AsIGBtbS9jb21wYWN0aW9uLmNgLCBhbmQgYG1tL3BlcmNwdS1rbS5jYC4gVGhlIHBhdHRlcm4gaGVyZSBzdWdnZXN0cyBhIHNpZ25pZmljYW50IGNvbmNlcm4gYXJvdW5kIHRoZSBgcGFnZS1cdTAwM2Vwcml2YXRlYCBmaWVsZCBhbmQgaXRzIHByb3BlciBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IG9uIHRhaWwgcGFnZXMgb2YgY29tcG91bmQgcGFnZXMuXG5cbkxvb2tpbmcgYXQgYG1tL3BhZ2VfYWxsb2MuY2AsIHRoZSBjaGFuZ2VzIGluIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgYXJlIG5vdGljZWFibGUuIFRoZSBjb2RlIG5vdyBpdGVyYXRlcyB0aHJvdWdoIHRhaWwgcGFnZXMsIHdoaWNoIGlzIGV4cGVjdGVkLiBDcml0aWNhbGx5LCB3ZSBzZWUgYWRkaXRpb25hbCBjaGVja3MgYW5kIGNsZWFyZXIgY2xlYXJpbmcgb2YgdGhlIGBQQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVBgIGZsYWcgYW5kIGFuIGFkZGVkIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgcHJpdmF0ZSBmaWVsZCBvbiB0YWlsIHBhZ2VzIGlzIGNsZWFyZWQuIFRoZXJlJ3MgYWxzbyBhIGBWTV9XQVJOX09OX09OQ0VgIG5vdyBpZiBgdGFpbC1cdTAwM2Vwcml2YXRlYCBpcyB1bmV4cGVjdGVkbHkgbm9uLXplcm8uIFRoaXMgc3Ryb25nbHkgaW1wbGllcyB0aGF0IHRoZXJlIHdlcmUgc2NlbmFyaW9zIHdoZXJlIHRhaWwgcGFnZXMgd2VyZW4ndCBoYXZpbmcgdGhlaXIgcHJpdmF0ZSBpbmZvcm1hdGlvbiBwcm9wZXJseSBjbGVhcmVkIGR1cmluZyB0aGUgZnJlZSBwcm9jZXNzLCBsZWFkaW5nIHRvIHBvdGVudGlhbCBjb3JydXB0aW9uIG9yIGluY29ycmVjdCBzdGF0ZS5cblxuSW4gYG1tL2ludGVybmFsLmhgLCBgcHJlcF9jb21wb3VuZF90YWlsYCBub3cgaGFzIGEgYFZNX1dBUk5fT05fT05DRWAgaWYgYHRhaWwtXHUwMDNlcHJpdmF0ZWAgaXMgc2V0LCBjb25maXJtaW5nIHRoZSBhYm92ZSwgd2hlcmUgdGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHRoZSBwcml2YXRlIGZpZWxkIG9uIHRhaWwgcGFnZXMuXG5cblRoZW4sIHRoZSBhZGRpdGlvbnMgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgIGFyZSBhbHNvIGludGVyZXN0aW5nLiBUaGUgY29kZSB0aGF0J3MgcmVzcG9uc2libGUgZm9yIHNwbGl0dGluZyBodWdlIHBhZ2VzLCBub3cgY29udGFpbnMgYSBgVk1fV0FSTl9PTl9PTkNFX1BBR0VgIGNoZWNrIHRvIGVuc3VyZSB0aGUgYHByaXZhdGVgIGZpZWxkIGlzbid0IHNldCBvbiB0aGUgbmV3bHkgY3JlYXRlZCB0YWlsIGZvbGlvLCBiZWZvcmUgdGhlIGFzc2lnbm1lbnQgdG8gYHN3YXAudmFsYC4gVGhpcyBzaG93cyB0aGF0IHRoZSBvcmlnaW5hbCBwcm9ibGVtIHdhcyBldmVuIHdvcnNlLCBhZmZlY3RpbmcgaG93IGBzd2FwLnZhbGAgaXMgc2V0LCBhcyB0aGUgY29kZSB1c2VzIGBzd2FwLnZhbGAgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uIGFzIGBwcml2YXRlYC4gQWdhaW4sIHRoaXMgcmVpbmZvcmNlcyB0aGF0IHRoZSBgcGFnZS1cdTAwM2Vwcml2YXRlYCBmaWVsZCBpcyBhIGNyaXRpY2FsIHBvaW50IG9mIGNvbmNlcm4gaW4gdGhlIGhhbmRsaW5nIG9mIGNvbXBvdW5kIHBhZ2VzIGFuZCBlc3BlY2lhbGx5IGh1Z2VwYWdlcy5cblxuVGhlIGBtbS9jb21wYWN0aW9uLmNgIGNoYW5nZXMgc3VnZ2VzdCBhIHJlbGF0ZWQgcHJvYmxlbSB3aXRoIHBhZ2UgaXNvbGF0aW9uIGR1cmluZyBjb21wYWN0aW9uLiBUaGUgcmVtb3ZhbCBvZiBgc2V0X3BhZ2VfcHJpdmF0ZWAgaW4gdmFyaW91cyBsb2NhdGlvbnMgd2l0aGluIGBfX2lzb2xhdGVfZnJlZV9wYWdlYCBpbXBsaWVzIHRoYXQgd2Ugd2VyZSBwb3RlbnRpYWxseSBpbmNvcnJlY3RseSB1c2luZyBgcGFnZS1cdTAwM2Vwcml2YXRlYCBmb3IgY29tcGFjdGlvbi1yZWxhdGVkIG1ldGFkYXRhLCBvciB0aGF0IHRoaXMgd2FzIGNhdXNpbmcgaXNzdWVzLiBBbHNvLCB3aXRoaW4gdGhpcyBmaWxlIHRoZXJlJ3MgY29kZSB0aGF0IGZyZWVzIGEgcGFnZSBpbiBgZnJlZXBhZ2VgLCB3aGljaCBwcmV2aW91c2x5IHVzZWQgYHNldF9wYWdlX3ByaXZhdGVgLlxuXG5GaW5hbGx5LCB0aGUgYG1tL3BlcmNwdS1rbS5jYCBjaGFuZ2VzIGFyZSBjcnVjaWFsLiBIZXJlLCBiZWZvcmUgZnJlZWluZyBwYWdlcyBhbGxvY2F0ZWQgZm9yIHBlci1DUFUga21lbSBjYWNoZXMsIHRoZSBjb2RlIGV4cGxpY2l0bHkgaXRlcmF0ZXMgdGhyb3VnaCBlYWNoIHBhZ2UsIGNsZWFyaW5nIHBlci1DUFUgY2h1bmsgaW5mb3JtYXRpb24uIFRoaXMgaW5jbHVkZXMgY2FsbGluZyBgcGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlcyArIGksIE5VTEwpYC4gVGhlIGNvbW1lbnQgaGlnaGxpZ2h0cyB0aGF0IHRoZSBzeXN0ZW0gKmNsZWFycyBjaHVuayBpbmZvKiAqZnJvbSBlYWNoIHBhZ2UqIGJlZm9yZSB0aGUgcGFnZXMgYXJlIGZyZWVkLiBUaGlzIGNsZWFycyB0aGUgbWV0YWRhdGEgZnJvbSB0aGUgcGFnZXMgYmVmb3JlIGJlaW5nIGRlYWxsb2NhdGVkLCBiZWNhdXNlIGBwY3B1X3NldF9wYWdlX2NodW5rYCBsaWtlbHkgdXRpbGl6ZXMsIGF0IHNvbWUgcG9pbnQsIHRoZSBgcGFnZS1cdTAwM2VpbmRleGAgZmllbGQuIFRoaXMgaGludHMgdGhhdCBgcGFnZS1cdTAwM2VpbmRleGAgY2FuIGJlIHVzZWQgdG8gc2V0IGNodW5rIGluZm9ybWF0aW9uLCBhbmQgdGhhdCB0aGlzIGluZm9ybWF0aW9uIG11c3QgYmUgcmVtb3ZlZC5cblxuSW4gc2hvcnQsIHRoaXMgZW50aXJlIHNldCBvZiBjaGFuZ2VzIGlzIGRlZGljYXRlZCB0byBjbGVhbmluZyB1cCBhbmQgZW5zdXJpbmcgdGhlIGBwYWdlLVx1MDAzZXByaXZhdGVgIGZpZWxkLCBhbmQgcmVsYXRlZCBtZW1vcnkgbG9jYXRpb25zLCBhcmUgcHJvcGVybHkgbWFuYWdlZCwgZXNwZWNpYWxseSBvbiB0YWlsIHBhZ2VzLCBkdXJpbmcgcGFnZSBmcmVlaW5nLCBpc29sYXRpb24sIGFuZCBodWdlIHBhZ2Ugb3BlcmF0aW9ucy4gVGhlIGtleSBwcm9ibGVtIGhlcmUgc2VlbXMgdG8gaGF2ZSBiZWVuIHRoYXQgYHBhZ2UtXHUwMDNlcHJpdmF0ZWAgd2FzIG5vdCBiZWluZyBjbGVhcmVkIGNvbnNpc3RlbnRseSwgd2hpY2ggd2FzIGxlYWRpbmcgdG8gcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGluY29ycmVjdCBzdGF0ZSBhZnRlciBmcmVlIGFuZC9vciByZWFsbG9jYXRpb24uIFRoZSBgbW0vcGVyY3B1LWttLmNgIGNoYW5nZXMgZnVydGhlciBoaWdobGlnaHQgaG93IHRoZXNlIGlzc3VlcyBpbXBhY3RlZCBvdGhlciBhcmVhcy4gVGhpcyBpcyBhIHRhcmdldGVkIHBhdGNoc2V0IHRoYXQgYWRkcmVzc2VzIHRoZSByb290IGNhdXNlIG9mIGFuIGlzc3VlIHdoZXJlIHByaXZhdGUgbWV0YWRhdGEgaXNuJ3QgcHJvcGVybHkgY2xlYXJlZCwgYW5kIGFkZGluZyBjaGVja3MgdG8gZW5zdXJlIHRoZSBtZXRhZGF0YSBpc24ndCBzZXQgd2hlbiBpdCBzaG91bGRuJ3QgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjYyLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMjozMC41NTY4ODQyMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MzkyODM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3B1X3NldF9wYWdlX2NodW5rXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BlcmNwdS1rbS5jPTUzPXN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdV9jcmVhdGVfY2h1bmsoZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0vcGVyY3B1LWttLmMtNzEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3BhZ2VzOyBpKyspXFxubW0vcGVyY3B1LWttLmM6NzI6XFx0XFx0cGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlcyArIGksIGNodW5rKTtcXG5tbS9wZXJjcHUta20uYy03My1cXG4tLVxcbm1tL3BlcmNwdS1rbS5jPTg3PXN0YXRpYyB2b2lkIHBjcHVfZGVzdHJveV9jaHVuayhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmspXFxuLS1cXG5tbS9wZXJjcHUta20uYy0xMDItXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3BhZ2VzOyBpKyspXFxubW0vcGVyY3B1LWttLmM6MTAzOlxcdFxcdFxcdHBjcHVfc2V0X3BhZ2VfY2h1bmsocGFnZXMgKyBpLCBOVUxMKTtcXG5tbS9wZXJjcHUta20uYy0xMDQtXFx0XFx0X19mcmVlX3BhZ2VzKGNodW5rLVxcdTAwM2VkYXRhLCBvcmRlcl9iYXNlXzIobnJfcGFnZXMpKTtcXG4tLVxcbm1tL3BlcmNwdS12bS5jPTIzND1zdGF0aWMgaW50IHBjcHVfbWFwX3BhZ2VzKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaywgc3RydWN0IHBhZ2UgKipwYWdlcyxcXG4tLVxcbm1tL3BlcmNwdS12bS5jLTI0Ny1cXHRcXHRmb3IgKGkgPSBwYWdlX3N0YXJ0OyBpIFxcdTAwM2MgcGFnZV9lbmQ7IGkrKylcXG5tbS9wZXJjcHUtdm0uYzoyNDg6XFx0XFx0XFx0cGNwdV9zZXRfcGFnZV9jaHVuayhwYWdlc1twY3B1X3BhZ2VfaWR4KGNwdSwgaSldLFxcbm1tL3BlcmNwdS12bS5jLTI0OS1cXHRcXHRcXHRcXHRcXHQgICAgY2h1bmspO1xcbi0tXFxubW0vcGVyY3B1LmM9MjQyPXN0YXRpYyBpbnQgcGNwdV9jaHVua19zbG90KGNvbnN0IHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcXG4tLVxcbm1tL3BlcmNwdS5jLTI1My0vKiBzZXQgdGhlIHBvaW50ZXIgdG8gYSBjaHVuayBpbiBhIHBhZ2Ugc3RydWN0ICovXFxubW0vcGVyY3B1LmM6MjU0OnN0YXRpYyB2b2lkIHBjcHVfc2V0X3BhZ2VfY2h1bmsoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1KVxcbm1tL3BlcmNwdS5jLTI1NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAyOjM1Ljg1MDgxOTgyNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTUyNjU5ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBwY3B1X3NldF9wYWdlX2NodW5rYCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgcGNwdV9zZXRfcGFnZV9jaHVua2AuIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGludG8gYG1tL3BlcmNwdS5jYCB0byBzZWUgaG93IGl0J3MgaW1wbGVtZW50ZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gY29udHJpYnV0ZXMgdG8gcGVyLUNQVSBtZW1vcnkgbWFuYWdlbWVudC4gSSBzdXNwZWN0IGl0J3MgcmVzcG9uc2libGUgZm9yIG1hcHBpbmcgb3IgaW5pdGlhbGl6aW5nIGEgY2h1bmsgb2YgbWVtb3J5IHRoYXQgd2lsbCBiZSB1c2VkIGZvciBwZXItQ1BVIHZhcmlhYmxlcyBvciBkYXRhIHN0cnVjdHVyZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgcGVyLUNQVSBtZW1vcnkgYWxsb2NhdGlvbiBzY2hlbWUuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHBlci1DUFUgYWxsb2NhdG9yIGl0c2VsZi4gRG9lcyBpdCB1c2UgdGhlIGV4aXN0aW5nIHBhZ2UgYWxsb2NhdG9yLCBvciBkb2VzIGl0IGhhdmUgc29tZSBzcGVjaWFsaXplZCBhbGxvY2F0aW9uIHN0cmF0ZWd5PyBBbHNvLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9uIE5VTUEgc3lzdGVtcyBhbmQgbWVtb3J5IGFmZmluaXR5PyBJcyBhbnkgcGFnZS1jb2xvcmluZyBiZWluZyBkb25lIGhlcmU/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDg5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6NDAuNDAzNDgyNjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ3MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL3BlcmNwdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1MzpcXHQvKiBzZXQgdGhlIHBvaW50ZXIgdG8gYSBjaHVuayBpbiBhIHBhZ2Ugc3RydWN0ICovXFxuIDI1NDpcXHRzdGF0aWMgdm9pZCBwY3B1X3NldF9wYWdlX2NodW5rKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdSlcXG4gMjU1OlxcdHtcXG4gMjU2OlxcdFxcdHBhZ2UtXFx1MDAzZXByaXZhdGUgPSAodW5zaWduZWQgbG9uZylwY3B1O1xcbiAyNTc6XFx0fVxcbiAyNTg6XFx0XFxuIDI1OTpcXHQvKiBvYnRhaW4gcG9pbnRlciB0byBhIGNodW5rIGZyb20gYSBwYWdlIHN0cnVjdCAqL1xcbiAyNjA6XFx0c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2dldF9wYWdlX2NodW5rKHN0cnVjdCBwYWdlICpwYWdlKVxcbiAyNjE6XFx0e1xcbiAyNjI6XFx0XFx0cmV0dXJuIChzdHJ1Y3QgcGNwdV9jaHVuayAqKXBhZ2UtXFx1MDAzZXByaXZhdGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAyOjQwLjQwMzgzMzAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTM0NDg4NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQZXItQ1BVIEtNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBgcGNwdV9zZXRfcGFnZV9jaHVua2AgaXMgc2V0dGluZyBgcGFnZS1cdTAwM2Vwcml2YXRlYC4gVGhlIGZpeCBpbiBgbW0vcGVyY3B1LWttLmNgIGlzIHNwZWNpZmljYWxseSBhYm91dCBjbGVhcmluZyB0aGF0IGBwYWdlLVx1MDAzZXByaXZhdGVgIGZpZWxkIGJlZm9yZSB0aGUgcGFnZXMgYXJlIGZyZWVkLiBJdCBsb29rcyBsaWtlIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgaGFzIGJlZW4gdXBkYXRlZCB0byBjaGVjayBpZiBgdGFpbF9wYWdlLVx1MDAzZXByaXZhdGVgIGlzIG5vbi16ZXJvLCBhbmQgaXTigJlzIG5vdyB0aHJvd2luZyBhbiBlcnJvciBpZiBpdCBpcy4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBzb3VuZHMgbGlrZSBhIGxlZ2l0aW1hdGUgYnVnIGZpeCB3aXRoIGFkZGVkIGNoZWNrcywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgdG8gc2VlLlxuXG5JJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhlIGtleSBzeW1ib2xzIGludm9sdmVkIGhlcmUg4oCTIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYF9fZnJlZV9wYWdlc19wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AsIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAg4oCTIHRob3NlIHdpbGwgYmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZXhhY3QgbWVjaGFuaWNzIG9mIHRoZSBjaGFuZ2UuXG5cbkZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBJIHNlZSBgQ09NUEFDVElPTmAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGFuZCBgTkVFRF9QRVJfQ1BVX0tNYCBtZW50aW9uZWQuIEhhbmcgb24sIGlzbid0IGBORUVEX1BFUl9DUFVfS01gIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQ/IEl0J3Mgbm90IHNvbWV0aGluZyB0aGUgdXNlciB1c3VhbGx5IGVuYWJsZXMgZGlyZWN0bHkuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzIGFueSB3YXkgdG8gZXhwbGljaXRseSBlbmFibGUgdGhpcy4gSXQgbWlnaHQgZ2l2ZSBtZSBtb3JlIGluc2lnaHQgdG8gdGVzdCBpZiB0aGlzIG5ldyBjb2RlIGFmZmVjdHMgYSBzcGVjaWZpYyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTI2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6NDUuMDU3Mjg2MDU3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUwMjE5MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORUVEX1BFUl9DUFVfS01cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMDQ0PWNvbmZpZyBBUkNIX01PRFVMRV9ORUVEU19XRUFLX1BFUl9DUFVcXG4tLVxcbm1tL0tjb25maWctMTA0OS0jXFxubW0vS2NvbmZpZzoxMDUwOmNvbmZpZyBORUVEX1BFUl9DUFVfS01cXG5tbS9LY29uZmlnLTEwNTEtXFx0ZGVwZW5kcyBvbiAhU01QIHx8ICFNTVVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6NDkuODA3NTEzOTE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzQ2MjQ1MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29udW5kcnVtcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0J3MgbG9va2luZyBsaWtlIGBORUVEX1BFUl9DUFVfS01gIGlzIGNvbmRpdGlvbmFsLiBJdCdzIHRpZWQgdG8gYCFTTVAgfHwgIU1NVWAuIFRoYXQncyBhIHJlZCBmbGFnLiBXZSBjYW4ndCBqdXN0IHNsYXAgdGhpcyBvbiBhIHN0YW5kYXJkIFNNUCBrZXJuZWwgYW5kIGV4cGVjdCBpdCB0byB3b3JrIHdpdGhvdXQgYnJlYWtpbmcgdGhpbmdzLiBIbW0uIFNvLCBiYXNlZCBvbiB0aGlzLCBpdCdzIG5vdCBkaXJlY3RseSBzZWxlY3RhYmxlLCBvciBtaWdodCBjb25mbGljdCBpZiBlbmFibGVkLiBUaGVyZWZvcmUsIGl0J3MgYSB0ZXJyaWJsZSBpZGVhIHRvIGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLlxuXG5PbiB0aGUgcG9zaXRpdmUgc2lkZSwgYENPTVBBQ1RJT05gIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIHNlZW0gbGlrZSBzb2xpZCBvcHRpb25zIHRvIGluY2x1ZGUuIFRob3NlIGFyZSB1c3VhbGx5IGJlbmVmaWNpYWwuIE5vdywgbGV0J3MgZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgYENPTVBBQ1RJT05gIGFuZCBzZWUgd2hhdCdzIHdoYXQuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBtbS9LY29uZmlnYCB0byBiZSBzdXJlIHRoZXJlIGFyZSBubyBzdXJwcmlzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTYyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDI6NTUuMjgyMTQ0Mzg4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM2NDUzNTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDT01QQUNUSU9OXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy02NTMtIyBzdXBwb3J0IGZvciBtZW1vcnkgY29tcGFjdGlvblxcbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXFxubW0vS2NvbmZpZy02NTUtXFx0Ym9vbCBcXFwiQWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMzowMC40MTg2MDQ1NTZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzMTMzMTQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGVja2luZyB0aGUgQm9vbGVhbioqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYSBib29sZWFuIHZhbHVlIGhlcmUuIFJpZ2h0LCBhIHNpbXBsZSB0cnVlL2ZhbHNlLCBvbi9vZmYgc2l0dWF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoZSBkZWZpbml0aW9uP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBMZXQncyBzZWUuLi4gSSdtIHRoaW5raW5nLCBcIkxldCdzIGRpZyBpbnRvIGBtbS9LY29uZmlnYC5cIiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGZvciBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIGtub3cgdGhhdCdzIHRoZSBrZXkgdmFyaWFibGUgdG8gY2hlY2ssIHRvIHVuZGVyc3RhbmQgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGlzIGJvb2xlYW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXRzIGNvbmZpZ3VyYXRpb24gbWVhbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTQ5LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MDQuNjQ5OTQwMjU3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzM2OTE1MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTg0Mz1jb25maWcgTU1fSURcXG4tLVxcbm1tL0tjb25maWctODQ1LVxcbm1tL0tjb25maWc6ODQ2Om1lbnVjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9LY29uZmlnLTg0Ny1cXHRib29sIFxcXCJUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0XFxcIlxcbi0tXFxubW0vS2NvbmZpZz04NjQ9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTg2OS1cXG5tbS9LY29uZmlnOjg3MDpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTXFxubW0vS2NvbmZpZy04NzEtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04NzYtXFxubW0vS2NvbmZpZzo4Nzc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX01BRFZJU0VcXG5tbS9LY29uZmlnLTg3OC1cXHRcXHRib29sIFxcXCJtYWR2aXNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04ODUtXFxubW0vS2NvbmZpZzo4ODY6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX05FVkVSXFxubW0vS2NvbmZpZy04ODctXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTg5Mz1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctOTAyLVxcbm1tL0tjb25maWc6OTAzOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXFxubW0vS2NvbmZpZy05MDQtXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkxMi1cXG5tbS9LY29uZmlnOjkxMzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTkxNC1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkyMC1cXG5tbS9LY29uZmlnOjkyMTpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxcbm1tL0tjb25maWctOTIyLVxcdFxcdGJvb2wgXFxcIndpdGhpbl9zaXplXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MjgtXFxubW0vS2NvbmZpZzo5Mjk6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXFxubW0vS2NvbmZpZy05MzAtXFx0XFx0Ym9vbCBcXFwiYWR2aXNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZz05Mzg9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTk0Ny1cXG5tbS9LY29uZmlnOjk0ODpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTQ5LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NTYtXFxubW0vS2NvbmZpZzo5NTc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05NTgtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NjQtXFxubW0vS2NvbmZpZzo5NjU6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTk2Ni1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTcyLVxcbm1tL0tjb25maWc6OTczOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTc0LVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MTAuMzg2ODY0NzY3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4NTEwNjYxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBIdWdlcGFnZSBUcmFuc3BhcmVuY3kgYW5kIEFsbG9jYXRpb24gQ2hlY2tzKipcblxuUmlnaHQsIHNvIHdlJ3JlIHNlZWluZyB0aGF0IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgYmVpbmcgZmxhZ2dlZCBhcyBhIHBvc2l0aXZlLiBHb29kLCBnb29kLiBUaGF0J3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTm93LCBob2xkIG9uIGEgc2Vjb25kLi4uIG15IGludGVybmFsIHJhZGFyIGlzIHBpbmdpbmcgYSBkZXRhaWwgaW4gYG1tL3BhZ2VfYWxsb2MuY2AgdGhhdCBJIG5lZWQgdG8gY2hlY2suIFNwZWNpZmljYWxseSwgdGhlcmUncyBgaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpYCBpbiB0aGVyZS4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgY2hlY2tzIGl0J3MgcnVubmluZy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVidWdnaW5nIGNoZWNrcz8gUG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdHMgZHVyaW5nIGFsbG9jYXRpb24/IEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgc2NoZW1lIG9mIHRoaW5ncyBiZWZvcmUgSSBjYW4gY29uZmlkZW50bHkgYXNzZXNzIHRoZSBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDMzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MTYuMjM3OTM1MTc4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI3OTU5ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX2NoZWNrX3BhZ2VzX2VuYWJsZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9hbGxvYy5jPTEwNzQ9c3RhdGljIGlubGluZSBib29sIGZyZWVfcGFnZV9pc19iYWQoc3RydWN0IHBhZ2UgKnBhZ2UpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTA4My1cXG5tbS9wYWdlX2FsbG9jLmM6MTA4NDpzdGF0aWMgaW5saW5lIGJvb2wgaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCh2b2lkKVxcbm1tL3BhZ2VfYWxsb2MuYy0xMDg1LXtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMDg5PXN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMDk5LVxcbm1tL3BhZ2VfYWxsb2MuYzoxMTAwOlxcdGlmICghaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTExMDEtXFx0XFx0cmV0ID0gMDtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMzE0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMzgyLVxcdFxcdFxcdFxcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XFxubW0vcGFnZV9hbGxvYy5jOjEzODM6XFx0XFx0XFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xcbm1tL3BhZ2VfYWxsb2MuYy0xMzg0LVxcdFxcdFxcdFxcdGlmIChmcmVlX3BhZ2VfaXNfYmFkKHRhaWxfcGFnZSkpIHtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMzg5LVxcdFxcdFxcdHRhaWxfcGFnZS1cXHUwMDNlZmxhZ3MuZiBcXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xcbm1tL3BhZ2VfYWxsb2MuYzoxMzkwOlxcdFxcdFxcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYgdGFpbF9wYWdlLVxcdTAwM2Vwcml2YXRlKSB7XFxubW0vcGFnZV9hbGxvYy5jLTEzOTEtXFx0XFx0XFx0XFx0YmFkX3BhZ2UodGFpbF9wYWdlLCBcXFwibm9uemVybyBwcml2YXRlXFxcIik7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTQwNC1cXG5tbS9wYWdlX2FsbG9jLmM6MTQwNTpcXHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTE0MDYtXFx0XFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSkpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MTc3Nj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfbmV3X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxubW0vcGFnZV9hbGxvYy5jLTE3Nzcte1xcbm1tL3BhZ2VfYWxsb2MuYzoxNzc4OlxcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcXG5tbS9wYWdlX2FsbG9jLmMtMTc3OS1cXHRcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjICgxIFxcdTAwM2NcXHUwMDNjIG9yZGVyKTsgaSsrKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAzOjIxLjA2NTkwMjU3MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI1NzMyNjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOlxuXG4qKkFuYWx5emluZyBgaXNfY2hlY2tfcGFnZXNfZW5hYmxlZGAgaW4gYG1tL3BhZ2VfYWxsb2MuY2AqKlxuXG5BbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIHplcm9pbmcgaW4gb24gYGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWRgIHdpdGhpbiB0aGUgYG1tL3BhZ2VfYWxsb2MuY2AgZmlsZS4gSSdtIGltbWVkaWF0ZWx5IHJlY29nbml6aW5nIHRoYXQgdGhpcyBmdW5jdGlvbiBvciB2YXJpYWJsZSBpcyBwYXJ0IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgcGFnZSBhbGxvY2F0aW9uIGFzcGVjdC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGFscmVhZHkgaGF2ZSBhIHByZXR0eSBzdHJvbmcgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgcGFnZSBhbGxvY2F0b3Igd29ya3MsIHNvIEknbSBleHBlY3RpbmcgdGhpcyB0byByZWxhdGUgdG8gc29tZSBraW5kIG9mIGRlYnVnZ2luZywgZXJyb3IgY2hlY2tpbmcsIG9yIHBlcmhhcHMgZXZlbiBhIGZlYXR1cmUgZmxhZyBjb250cm9sbGluZyBjZXJ0YWluIGFsbG9jYXRpb24gYmVoYXZpb3JzLiBVbmRlcnN0YW5kaW5nIHRoaXMgbWlnaHQgZ2l2ZSBtZSBjcnVjaWFsIGluc2lnaHRzIGludG8gaG93IHBhZ2UgYWxsb2NhdGlvbnMgYXJlIHZhbGlkYXRlZCwgb3IgaG93IHdlIG1pZ2h0IGJlIGNvbnRyb2xsaW5nIHRoYXQgYmVoYXZpb3VyIGF0IHJ1biB0aW1lLiBUaGUgZmFjdCB0aGF0IGl0J3MgbG9jYXRlZCB3aXRoaW4gYHBhZ2VfYWxsb2MuY2AgaXMgaGlnaGx5IHN1Z2dlc3RpdmUuIEkga25vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgdGhpcyBwaWVjZSBjb250cm9scywgYW5kIGl0cyBwdXJwb3NlIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjc1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MjUuMDkxNjQxNDM4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9wYWdlX2FsbG9jLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA4MCxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA4MDpcXHRcXHRiYWRfcGFnZShwYWdlLCBwYWdlX2JhZF9yZWFzb24ocGFnZSwgUEFHRV9GTEFHU19DSEVDS19BVF9GUkVFKSk7XFxuMTA4MTpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4xMDgyOlxcdH1cXG4xMDgzOlxcdFxcbjEwODQ6XFx0c3RhdGljIGlubGluZSBib29sIGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQodm9pZClcXG4xMDg1OlxcdHtcXG4xMDg2OlxcdFxcdHJldHVybiBzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFxcdTAwMjZjaGVja19wYWdlc19lbmFibGVkKTtcXG4xMDg3OlxcdH1cXG4xMDg4OlxcdFxcbjEwODk6XFx0c3RhdGljIGludCBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHN0cnVjdCBwYWdlICpoZWFkX3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKVxcbjEwOTA6XFx0e1xcbjEwOTE6XFx0XFx0c3RydWN0IGZvbGlvICpmb2xpbyA9IChzdHJ1Y3QgZm9saW8gKiloZWFkX3BhZ2U7XFxuMTA5MjpcXHRcXHRpbnQgcmV0ID0gMTtcXG4xMDkzOlxcdFxcbjEwOTQ6XFx0XFx0LypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MjUuMDkyMTMzNzY4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzMyMTIyNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgU291cmNlIG9mIGBjaGVja19wYWdlc19lbmFibGVkYCoqXG5cbk9rYXksIHNvIGBjaGVja19wYWdlc19lbmFibGVkYCBpcyBhIHN0YXRpYyBrZXksIG1lYW5pbmcgaXQncyBsaWtlbHkgZGVmaW5lZCBzb21ld2hlcmUgYW5kIHByb2JhYmx5IHVzZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB0cmFjayBkb3duIHdoZXJlIGl0J3MgYWN0dWFsbHkgZ2V0dGluZyBzZXQuIFVuZGVyc3RhbmRpbmcgaXRzIGluaXRpYWwgdmFsdWUgYW5kIHdoZXJlIGl0J3MgYmVpbmcgbW9kaWZpZWQgaXMgY3J1Y2lhbCB0byBmaWd1cmluZyBvdXQgaXRzIGltcGFjdC4gSSdsbCBuZWVkIHRvIHVzZSBhIGNvZGUgc2VhcmNoLCBvciBqdW1wIHRvIGRlZmluaXRpb24sIHRvIGZpbmQgaXRzIGRlY2xhcmF0aW9uIGFuZCBhbnkgYXNzaWdubWVudHMuIEtub3dpbmcgdGhlIHNjb3BlIGFuZCBjb250ZXh0IG9mIGl0cyBzZXR0aW5nIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IG9wZXJhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTc2OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MjguNDI1MzQ5MjkxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg4OTkwOTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX3BhZ2VzX2VuYWJsZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaW50ZXJuYWwuaD02NTA9ZXh0ZXJuIGNoYXIgKiBjb25zdCB6b25lX25hbWVzW01BWF9OUl9aT05FU107XFxuLS1cXG5tbS9pbnRlcm5hbC5oLTY1Mi0vKiBwZXJmb3JtIHNhbml0eSBjaGVja3Mgb24gc3RydWN0IHBhZ2VzIGJlaW5nIGFsbG9jYXRlZCBvciBmcmVlZCAqL1xcbm1tL2ludGVybmFsLmg6NjUzOkRFQ0xBUkVfU1RBVElDX0tFWV9NQVlCRShDT05GSUdfREVCVUdfVk0sIGNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xcbm1tL2ludGVybmFsLmgtNjU0LVxcbi0tXFxubW0vbW1faW5pdC5jPTI1MDQ9ZWFybHlfcGFyYW0oXFxcImluaXRfb25fZnJlZVxcXCIsIGVhcmx5X2luaXRfb25fZnJlZSk7XFxubW0vbW1faW5pdC5jLTI1MDUtXFxubW0vbW1faW5pdC5jOjI1MDY6REVGSU5FX1NUQVRJQ19LRVlfTUFZQkUoQ09ORklHX0RFQlVHX1ZNLCBjaGVja19wYWdlc19lbmFibGVkKTtcXG5tbS9tbV9pbml0LmMtMjUwNy1cXG5tbS9tbV9pbml0LmM6MjUwODpzdGF0aWMgYm9vbCBjaGVja19wYWdlc19lbmFibGVkX2Vhcmx5IF9faW5pdGRhdGE7XFxubW0vbW1faW5pdC5jLTI1MDktXFxubW0vbW1faW5pdC5jPTI1MTA9c3RhdGljIGludCBfX2luaXQgZWFybHlfY2hlY2tfcGFnZXMoY2hhciAqYnVmKVxcbm1tL21tX2luaXQuYy0yNTExLXtcXG5tbS9tbV9pbml0LmM6MjUxMjpcXHRyZXR1cm4ga3N0cnRvYm9vbChidWYsIFxcdTAwMjZjaGVja19wYWdlc19lbmFibGVkX2Vhcmx5KTtcXG5tbS9tbV9pbml0LmMtMjUxMy19XFxuLS1cXG5tbS9tbV9pbml0LmM9MjUyMj1zdGF0aWMgdm9pZCBfX2luaXQgbWVtX2RlYnVnZ2luZ19hbmRfaGFyZGVuaW5nX2luaXQodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0yNTI0LVxcdGJvb2wgcGFnZV9wb2lzb25pbmdfcmVxdWVzdGVkID0gZmFsc2U7XFxubW0vbW1faW5pdC5jOjI1MjU6XFx0Ym9vbCB3YW50X2NoZWNrX3BhZ2VzID0gY2hlY2tfcGFnZXNfZW5hYmxlZF9lYXJseTtcXG5tbS9tbV9pbml0LmMtMjUyNi1cXG4tLVxcbm1tL21tX2luaXQuYy0yNTgyLVxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfREVCVUdfVk0pIFxcdTAwMjZcXHUwMDI2IHdhbnRfY2hlY2tfcGFnZXMpXFxubW0vbW1faW5pdC5jOjI1ODM6XFx0XFx0c3RhdGljX2JyYW5jaF9lbmFibGUoXFx1MDAyNmNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xcbm1tL21tX2luaXQuYy0yNTg0LX1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMDc0PXN0YXRpYyBpbmxpbmUgYm9vbCBmcmVlX3BhZ2VfaXNfYmFkKHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTEwODMtXFxubW0vcGFnZV9hbGxvYy5jOjEwODQ6c3RhdGljIGlubGluZSBib29sIGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQodm9pZClcXG5tbS9wYWdlX2FsbG9jLmMtMTA4NS17XFxubW0vcGFnZV9hbGxvYy5jOjEwODY6XFx0cmV0dXJuIHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNmNoZWNrX3BhZ2VzX2VuYWJsZWQpO1xcbm1tL3BhZ2VfYWxsb2MuYy0xMDg3LX1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMDg5PXN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMDk5LVxcbm1tL3BhZ2VfYWxsb2MuYzoxMTAwOlxcdGlmICghaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTExMDEtXFx0XFx0cmV0ID0gMDtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMzE0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMzgyLVxcdFxcdFxcdFxcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XFxubW0vcGFnZV9hbGxvYy5jOjEzODM6XFx0XFx0XFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xcbm1tL3BhZ2VfYWxsb2MuYy0xMzg0LVxcdFxcdFxcdFxcdGlmIChmcmVlX3BhZ2VfaXNfYmFkKHRhaWxfcGFnZSkpIHtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xMzg5LVxcdFxcdFxcdHRhaWxfcGFnZS1cXHUwMDNlZmxhZ3MuZiBcXHUwMDI2PSB+UEFHRV9GTEFHU19DSEVDS19BVF9QUkVQO1xcbm1tL3BhZ2VfYWxsb2MuYzoxMzkwOlxcdFxcdFxcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYgdGFpbF9wYWdlLVxcdTAwM2Vwcml2YXRlKSB7XFxubW0vcGFnZV9hbGxvYy5jLTEzOTEtXFx0XFx0XFx0XFx0YmFkX3BhZ2UodGFpbF9wYWdlLCBcXFwibm9uemVybyBwcml2YXRlXFxcIik7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTQwNC1cXG5tbS9wYWdlX2FsbG9jLmM6MTQwNTpcXHRpZiAoaXNfY2hlY2tfcGFnZXNfZW5hYmxlZCgpKSB7XFxubW0vcGFnZV9hbGxvYy5jLTE0MDYtXFx0XFx0aWYgKGZyZWVfcGFnZV9pc19iYWQocGFnZSkpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MTc3Nj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfbmV3X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxubW0vcGFnZV9hbGxvYy5jLTE3Nzcte1xcbm1tL3BhZ2VfYWxsb2MuYzoxNzc4OlxcdGlmIChpc19jaGVja19wYWdlc19lbmFibGVkKCkpIHtcXG5tbS9wYWdlX2FsbG9jLmMtMTc3OS1cXHRcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjICgxIFxcdTAwM2NcXHUwMDNjIG9yZGVyKTsgaSsrKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAzOjMzLjgxNDM1MDA2OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM5MTI0NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBWaXJ0dWFsIE1lbW9yeTogRW5zdXJpbmcgQWN0aXZlIENoZWNrcyoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQgc2VlbXMgbGlrZSBgQ09ORklHX0RFQlVHX1ZNYCBlaXRoZXIgZW5hYmxlcyBkZWJ1Z2dpbmcgZmVhdHVyZXMgYnkgZGVmYXVsdCwgb3IgaXQncyBwb3RlbnRpYWxseSBhIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbi4gVG8gbWFrZSBzdXJlIHRoZSB2aXJ0dWFsIG1lbW9yeSBkZWJ1Z2dpbmcgY2hlY2tzIGFyZSBkZWZpbml0ZWx5IHJ1bm5pbmcgYXMgZXhwZWN0ZWQsIGl0J3MgYmVzdCB0byBleHBsaWNpdGx5IGluY2x1ZGUgYERFQlVHX1ZNYCB3aXRoaW4gYEVuYWJsZUNvbmZpZ3NgLiBUaGlzIHdpbGwgcmVtb3ZlIGFueSBhbWJpZ3VpdHkgYW5kIGVuc3VyZSB0aGF0IHRob3NlIGRlYnVnZ2luZyBjaGVja3MgYXJlIGFjdGl2ZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgYENPTkZJR19ERUJVR19WTWAgc2V0dGluZyB0byBjb25maXJtLCBvZiBjb3Vyc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDczLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDM6MzcuMTUzNDc4MzExWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDQ0MzQ2NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBERUJVR19WTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz04NjA9Y29uZmlnIERFQlVHX1ZGU1xcbi0tXFxubGliL0tjb25maWcuZGVidWctODY4LVxcbmxpYi9LY29uZmlnLmRlYnVnOjg2OTpjb25maWcgREVCVUdfVk1fSVJRU09GRlxcbmxpYi9LY29uZmlnLmRlYnVnLTg3MC1cXHRkZWZfYm9vbCBERUJVR19WTSBcXHUwMDI2XFx1MDAyNiAhUFJFRU1QVF9SVFxcbmxpYi9LY29uZmlnLmRlYnVnLTg3MS1cXG5saWIvS2NvbmZpZy5kZWJ1Zzo4NzI6Y29uZmlnIERFQlVHX1ZNXFxubGliL0tjb25maWcuZGVidWctODczLVxcdGJvb2wgXFxcIkRlYnVnIFZNXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctODgwLVxcbmxpYi9LY29uZmlnLmRlYnVnOjg4MTpjb25maWcgREVCVUdfVk1fU0hPT1RfTEFaSUVTXFxubGliL0tjb25maWcuZGVidWctODgyLVxcdGJvb2wgXFxcIkRlYnVnIE1NVV9MQVpZX1RMQl9TSE9PVERPV04gaW1wbGVtZW50YXRpb25cXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy04OTAtXFxubGliL0tjb25maWcuZGVidWc6ODkxOmNvbmZpZyBERUJVR19WTV9NQVBMRV9UUkVFXFxubGliL0tjb25maWcuZGVidWctODkyLVxcdGJvb2wgXFxcIkRlYnVnIFZNIG1hcGxlIHRyZWVzXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctODk5LVxcbmxpYi9LY29uZmlnLmRlYnVnOjkwMDpjb25maWcgREVCVUdfVk1fUkJcXG5saWIvS2NvbmZpZy5kZWJ1Zy05MDEtXFx0Ym9vbCBcXFwiRGVidWcgVk0gcmVkLWJsYWNrIHRyZWVzXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctOTA3LVxcbmxpYi9LY29uZmlnLmRlYnVnOjkwODpjb25maWcgREVCVUdfVk1fUEdGTEFHU1xcbmxpYi9LY29uZmlnLmRlYnVnLTkwOS1cXHRib29sIFxcXCJEZWJ1ZyBwYWdlLWZsYWdzIG9wZXJhdGlvbnNcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy05MTUtXFxubGliL0tjb25maWcuZGVidWc6OTE2OmNvbmZpZyBERUJVR19WTV9QR1RBQkxFXFxubGliL0tjb25maWcuZGVidWctOTE3LVxcdGJvb2wgXFxcIkRlYnVnIGFyY2ggcGFnZSB0YWJsZSBmb3Igc2VtYW50aWNzIGNvbXBsaWFuY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjAzOjQyLjU5NzgzMTI1NVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQzODIxMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVGFyZ2V0IEZ1bmN0aW9ucyoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgaW5jbHVkaW5nIGBERUJVR19WTWAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5pdGVseSBhIHNvbGlkIGNob2ljZS4gTm93LCBsZXQncyBsb29rIGF0IHRob3NlIGZvY3VzIHN5bWJvbHMuXG5cbkFscmlnaHQsIHRoZSBsaXN0IGluY2x1ZGVzIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYF9fZnJlZV9wYWdlc19wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AsIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIEhvbGQgb24gYSBtaW51dGUuLi4gYF9fZnJlZV9wYWdlc19wcmVwYXJlYD8gVGhhdCdzIGEgaG90IHBhdGgsIGlzbid0IGl0PyBJdCdzIGNhbGxlZCBmb3IgKmV2ZXJ5KiBwYWdlIGZyZWUuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBrZWVwIHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbiBmcm9tIGJlaW5nIHNrZXdlZC4gU28sIG5vLCBkZWZpbml0ZWx5IG5vdCBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgLlxuXG5Ib3cgYWJvdXQgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgPyBUaGF0J3MgY2FsbGVkIGR1cmluZyBodWdlIHBhZ2Ugc3BsaXR0aW5nLCB3aGljaCBpcyBhIHNwZWNpZmljIG9wZXJhdGlvbiwgbm90IGEgZ2VuZXJpYyBvbmUuIFRoYXQgY291bGQgYmUgZ29vZC4gYHBjcHVfZGVzdHJveV9jaHVua2Agc2VlbXMgb2theSB0b287IGRlc3Ryb3lpbmcgcGVyY3B1IGNodW5rcyBpcyB0YXJnZXRlZC4gQXMgZm9yIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AsIGBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzYCwgYW5kIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAsIHRoZXkncmUgYWxsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG1lbW9yeSBjb21wYWN0aW9uLiBBZ2FpbiwgdGhleSdyZSBub3QgZ2VuZXJpYyBob3QgcGF0aHMsIGJ1dCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgbWVtb3J5IG1hbmFnZW1lbnQgcHJvY2Vzcy4gVGhhdCBsb29rcyBwcm9taXNpbmcuIE5vdywgdG8gZG91YmxlLWNoZWNrIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzY3OSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMzo0OC41NDE2NTk5MjhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzY4NDYzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2xlYWZvcHMuaD0zODY9c3RhdGljIGlubGluZSB2b2lkIHNvZnRsZWFmX21pZ3JhdGlvbl9zeW5jKHNvZnRsZWFmX3QgZW50cnksXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xlYWZvcHMuaC0zOTEtXFx0ICogZm9saW9zIGFuZCB0aHVzIHJlc3VsdCBpbiBvYnNlcnZpbmcgYW4gdW5sb2NrZWQgZm9saW8uXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmg6MzkyOlxcdCAqIFRoaXMgbWF0Y2hlcyB0aGUgd3JpdGUgYmFycmllciBpbiBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkuXFxuaW5jbHVkZS9saW51eC9sZWFmb3BzLmgtMzkzLVxcdCAqL1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zNTE2PXN0YXRpYyBib29sIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQoc3RydWN0IHBhZ2UgKnBhZ2UsIGxvbmcgbnJfcGFnZXMpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM1MjctICovXFxubW0vaHVnZV9tZW1vcnkuYzozNTI4OnN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG5tbS9odWdlX21lbW9yeS5jLTM1MjktXFx0XFx0aW50IG5ld19vcmRlcilcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY2OC0gKiAxLiB1bmlmb3JtIHNwbGl0OiBAeGFzIGlzIHNwbGl0IHdpdGggbm8gZXhwZWN0YXRpb24gb2YgZmFpbHVyZSBhbmQgYSBzaW5nbGVcXG5tbS9odWdlX21lbW9yeS5jOjM2Njk6ICogICAgX19zcGxpdF9mb2xpb190b19vcmRlcigpIGlzIGNhbGxlZCB0byBzcGxpdCB0aGUgQGZvbGlvIGludG8gQG5ld19vcmRlclxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY3MC0gKiAgICBhbG9uZyB3aXRoIHN0YXRzIHVwZGF0ZS5cXG5tbS9odWdlX21lbW9yeS5jLTM2NzEtICogMi4gbm9uLXVuaWZvcm0gc3BsaXQ6IGZvbGlvX29yZGVyIC0gQG5ld19vcmRlciBjYWxscyB0b1xcbm1tL2h1Z2VfbWVtb3J5LmM6MzY3MjogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgYXJlIGV4cGVjdGVkIHRvIGJlIG1hZGUgaW4gYSBmb3IgbG9vcCB0byBzcGxpdFxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY3My0gKiAgICB0aGUgQGZvbGlvIHRvIG9uZSBsb3dlciBvcmRlciBhdCBhIHRpbWUuIFRoZSBmb2xpbyBjb250YWluaW5nIEBzcGxpdF9hdFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zNjg1PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zNzMwLVxcdFxcdHBnYWxsb2NfdGFnX3NwbGl0KGZvbGlvLCBvbGRfb3JkZXIsIHNwbGl0X29yZGVyKTtcXG5tbS9odWdlX21lbW9yeS5jOjM3MzE6XFx0XFx0X19zcGxpdF9mb2xpb190b19vcmRlcihmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XFxubW0vaHVnZV9tZW1vcnkuYy0zNzMyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMzo1NS4yMTg1MTc4MzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMjMxNjg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlc2UgZnVuY3Rpb25zLCByZWZsZWN0aW5nIG9uIHRoZSBzdHJlbmd0aHMgSSBzZWUgd2l0aGluIHRoZW06XG5cbioqQXNzZXNzbWVudCBvZiBNZW1vcnkgTWFuYWdlbWVudCBSb3V0aW5lcyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIOKAkyB5ZWFoLCB0aGF0J3Mgc29saWQuIEdvb2QgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHRoZSBmb2xpbyBzcGxpdHRpbmcuIFRoZW4gd2UgaGF2ZSBgcGNwdV9kZXN0cm95X2NodW5rYCAtIGVmZmVjdGl2ZSBmb3IgY2xlYW5pbmcgdXAgc3BlY2lmaWMgY2h1bmtzLiBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgIGFuZCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2Agc2VlbSBsaWtlIGVmZmljaWVudCBtZXRob2RzIGZvciBpc29sYXRpbmcgZnJlZSBwYWdlcy4gUmVhbGx5LCBhbGwgb2YgdGhvc2UgYXJlIHdlbGwgZG9uZS5cblxuSG1tLCBub3cgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIEl0J3MgZXNzZW50aWFsIHdlIGNoZWNrIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgY29tcGFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4MTgsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowMzo1OC42MzA4MzgyMTlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzE1MjI4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vY29tcGFjdGlvbi5jPTE2OTI9c3RhdGljIHZvaWQgaXNvbGF0ZV9mcmVlcGFnZXMoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTgxMS0gKi9cXG5tbS9jb21wYWN0aW9uLmM6MTgxMjpzdGF0aWMgc3RydWN0IGZvbGlvICpjb21wYWN0aW9uX2FsbG9jX25vcHJvZihzdHJ1Y3QgZm9saW8gKnNyYywgdW5zaWduZWQgbG9uZyBkYXRhKVxcbm1tL2NvbXBhY3Rpb24uYy0xODEzLXtcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz0xODU5PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmNvbXBhY3Rpb25fYWxsb2Moc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGF0YSlcXG5tbS9jb21wYWN0aW9uLmMtMTg2MC17XFxubW0vY29tcGFjdGlvbi5jOjE4NjE6XFx0cmV0dXJuIGFsbG9jX2hvb2tzKGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mKHNyYywgZGF0YSkpO1xcbm1tL2NvbXBhY3Rpb24uYy0xODYyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDQ6MDQuMzAyMzcwNDM1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDMxNDgxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IENvbXBhY3Rpb24gQWxsb2NhdGlvbiBTdHJhdGVneSoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIHdpdGggdGhpcyBjb21wYWN0aW9uIHN0cmF0ZWd5LiBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgYm90aCBgY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZgIGFuZCBgY29tcGFjdGlvbl9hbGxvY2AuIFRoZSBudWFuY2VzIG9mIHdoZW4gYW5kIHdoZXJlIHRvIHVzZSBlYWNoIGFyZSBjcml0aWNhbCwgYnV0IGZvciBub3csIHRoZXkgYXJlIG15IGJhc2UgdG9vbHMuIFRoZSBkZXRhaWxzIGFyb3VuZCB0aGUgcHJvZmlsZXMsIG9yIGxhY2sgdGhlcmVvZiwgYXJlIGEgc2Vjb25kYXJ5IGNvbmNlcm4gYXQgdGhpcyBqdW5jdHVyZS5cblxuTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcgZnVydGhlciwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AuIFRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gdGhlIHVuZGVybHlpbmcgbWVjaGFuaWNzIG9mIGFsbCB0aGlzLCBhbmQgSSB3YW50IHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb25zIGlzIGNvbXBsZXRlbHkgaXJvbmVkIG91dC4gSXQgaXMgdGhlIGtleSBidWlsZGluZyBibG9jayBJIGNhbid0IGxpdmUgd2l0aG91dCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI2OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjA0OjA4LjQ0NTUyMjY1M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2NTg5MTQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc29sYXRlX2ZyZWVwYWdlc19ibG9ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9jb21wYWN0aW9uLmM9NTUxPXN0YXRpYyBib29sIGNvbXBhY3RfdW5sb2NrX3Nob3VsZF9hYm9ydChzcGlubG9ja190ICpsb2NrLFxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTU3My0gKi9cXG5tbS9jb21wYWN0aW9uLmM6NTc0OnN0YXRpYyB1bnNpZ25lZCBsb25nIGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLFxcbm1tL2NvbXBhY3Rpb24uYy01NzUtXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqc3RhcnRfcGZuLFxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTcxMj1pc29sYXRlX2ZyZWVwYWdlc19yYW5nZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYyxcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy03MjktXFx0XFx0XFx0XFx0YmxvY2tfZW5kX3BmbiArPSBwYWdlYmxvY2tfbnJfcGFnZXMpIHtcXG5tbS9jb21wYWN0aW9uLmM6NzMwOlxcdFxcdC8qIFByb3RlY3QgcGZuIGZyb20gY2hhbmdpbmcgYnkgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2sgKi9cXG5tbS9jb21wYWN0aW9uLmMtNzMxLVxcdFxcdHVuc2lnbmVkIGxvbmcgaXNvbGF0ZV9zdGFydF9wZm4gPSBwZm47XFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNzQ4LVxcbm1tL2NvbXBhY3Rpb24uYzo3NDk6XFx0XFx0aXNvbGF0ZWQgPSBpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhjYywgXFx1MDAyNmlzb2xhdGVfc3RhcnRfcGZuLFxcbm1tL2NvbXBhY3Rpb24uYy03NTAtXFx0XFx0XFx0XFx0XFx0YmxvY2tfZW5kX3BmbiwgY2MtXFx1MDAzZWZyZWVwYWdlcywgMCwgdHJ1ZSk7XFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNzUyLVxcdFxcdC8qXFxubW0vY29tcGFjdGlvbi5jOjc1MzpcXHRcXHQgKiBJbiBzdHJpY3QgbW9kZSwgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soKSByZXR1cm5zIDAgaWZcXG5tbS9jb21wYWN0aW9uLmMtNzU0LVxcdFxcdCAqIHRoZXJlIGFyZSBhbnkgaG9sZXMgaW4gdGhlIGJsb2NrIChpZS4gaW52YWxpZCBQRk5zIG9yXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MTQ3ND1mYXN0X2lzb2xhdGVfYXJvdW5kKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLCB1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xNDk0LVxcbm1tL2NvbXBhY3Rpb24uYzoxNDk1OlxcdGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrKGNjLCBcXHUwMDI2c3RhcnRfcGZuLCBlbmRfcGZuLCBjYy1cXHUwMDNlZnJlZXBhZ2VzLCAxLCBmYWxzZSk7XFxubW0vY29tcGFjdGlvbi5jLTE0OTYtXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MTY5Mj1zdGF0aWMgdm9pZCBpc29sYXRlX2ZyZWVwYWdlcyhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYylcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xNzYzLVxcdFxcdC8qIEZvdW5kIGEgYmxvY2sgc3VpdGFibGUgZm9yIGlzb2xhdGluZyBmcmVlIHBhZ2VzIGZyb20uICovXFxubW0vY29tcGFjdGlvbi5jOjE3NjQ6XFx0XFx0bnJfaXNvbGF0ZWQgPSBpc29sYXRlX2ZyZWVwYWdlc19ibG9jayhjYywgXFx1MDAyNmlzb2xhdGVfc3RhcnRfcGZuLFxcbm1tL2NvbXBhY3Rpb24uYy0xNzY1LVxcdFxcdFxcdFxcdFxcdGJsb2NrX2VuZF9wZm4sIGNjLVxcdTAwM2VmcmVlcGFnZXMsIHN0cmlkZSwgZmFsc2UpO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jLTE4MDEtXFx0ICogYnJva2UgZnJvbSB0aGUgbG9vcCBhbmQgc2V0IGlzb2xhdGVfc3RhcnRfcGZuIGJhc2VkIG9uIHRoZSBsYXN0XFxubW0vY29tcGFjdGlvbi5jOjE4MDI6XFx0ICogY2FsbCB0byBpc29sYXRlX2ZyZWVwYWdlc19ibG9jaygpLCBvciB3ZSBtZXQgdGhlIG1pZ3JhdGlvbiBzY2FubmVyXFxubW0vY29tcGFjdGlvbi5jLTE4MDMtXFx0ICogYW5kIHRoZSBsb29wIHRlcm1pbmF0ZWQgZHVlIHRvIGlzb2xhdGVfc3RhcnRfcGZuIFxcdTAwM2MgbG93X3BmblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowNDoxNC4xMTE0MjI4OThaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyNzk4MTUwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIE1lbW9yeSBNYW5hZ2VtZW50IFN0cmF0ZWdpZXMqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGhhbmRsZSB0aGlzIG1lbW9yeSBhbGxvY2F0aW9uIGlzc3VlLiBCYXNlZCBvbiBteSBwcmV2aW91cyBleHBlcmllbmNlIGFuZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgc3lzdGVtLCBJJ20gbGVhbmluZyB0b3dhcmQgdGhlIGBpc29sYXRlX2ZyZWVwYWdlc19ibG9ja2AgZnVuY3Rpb24sIGFuZCBpdHMgbW9yZSBwZXJmb3JtYW50IGNvdXNpbiwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLiBUaGUga2V5IGRpZmZlcmVuY2UgaW4gaW1wbGVtZW50YXRpb24gaXMgbGlrZWx5IHdoYXQgbWF0dGVycyBoZXJlLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMuIEkgcmVhbGx5IHNob3VsZCBjaGVjayB0aGUgY29kZSBmb3IgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLiBJIGtub3cgdGhlIHRoZW9yeSwgYnV0IEkgbmVlZCB0byBzZWUgaG93IGl0J3MgYWN0dWFsbHkgaW1wbGVtZW50ZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgdGhlIHJpZ2h0IGNob2ljZSBmb3IgdGhpcyBzcGVjaWZpYyBzY2VuYXJpbyBhbmQgaXRzIHRyYWRlLW9mZnMuIFRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIHBlcmZvcm1hbmNlIGlzIGdvaW5nIHRvIGJlIHNpZ25pZmljYW50LCBzbyBJIG5lZWQgdG8gY2hvb3NlIHRoZSBiZXN0IG9wdGlvbiBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MjEyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDQ6MjUuMzkxMjQyMzI0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDc2Mjk0MDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS90cmFjZS9ldmVudHMvY29tcGFjdGlvbi5oPTU2PURFRklORV9FVkVOVChtbV9jb21wYWN0aW9uX2lzb2xhdGVfdGVtcGxhdGUsIG1tX2NvbXBhY3Rpb25faXNvbGF0ZV9mcmVlcGFnZXMsXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmgtNjYtXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvY29tcGFjdGlvbi5oOjY3OkRFRklORV9FVkVOVChtbV9jb21wYWN0aW9uX2lzb2xhdGVfdGVtcGxhdGUsIG1tX2NvbXBhY3Rpb25fZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyxcXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb21wYWN0aW9uLmgtNjgtXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MTUwMz1zdGF0aWMgaW50IG5leHRfc2VhcmNoX29yZGVyKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLCBpbnQgb3JkZXIpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTUxOS1cXG5tbS9jb21wYWN0aW9uLmM6MTUyMDpzdGF0aWMgdm9pZCBmYXN0X2lzb2xhdGVfZnJlZXBhZ2VzKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKVxcbm1tL2NvbXBhY3Rpb24uYy0xNTIxLXtcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xNjQ1LVxcbm1tL2NvbXBhY3Rpb24uYzoxNjQ2OlxcdHRyYWNlX21tX2NvbXBhY3Rpb25fZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyhtaW5fcGZuLCBjYy1cXHUwMDNlZnJlZV9wZm4sXFxubW0vY29tcGFjdGlvbi5jLTE2NDctXFx0XFx0XFx0XFx0XFx0XFx0ICAgbnJfc2Nhbm5lZCwgdG90YWxfaXNvbGF0ZWQpO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jPTE2OTI9c3RhdGljIHZvaWQgaXNvbGF0ZV9mcmVlcGFnZXMoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTcwMi1cXHQvKiBUcnkgYSBzbWFsbCBzZWFyY2ggb2YgdGhlIGZyZWUgbGlzdHMgZm9yIGEgY2FuZGlkYXRlICovXFxubW0vY29tcGFjdGlvbi5jOjE3MDM6XFx0ZmFzdF9pc29sYXRlX2ZyZWVwYWdlcyhjYyk7XFxubW0vY29tcGFjdGlvbi5jLTE3MDQtXFx0aWYgKGNjLVxcdTAwM2Vucl9mcmVlcGFnZXMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjA0OjMwLjQ2NzU0NjM5N1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODI3Mjc0MDcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBc3Nlc3NtZW50IG9mIE1lbW9yeSBNYW5hZ2VtZW50IE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgIHNlZW1zIGxpa2UgYSBzb2xpZCBhcHByb2FjaC4gSXQncyBvbiB0aGUgcmlnaHQgdHJhY2sgZm9yIGVmZmljaWVudCBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24uIEknbSBzYXRpc2ZpZWQgdGhhdCBpdCdzIGhlYWRpbmcgaW4gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLlxuXG5Ob3csIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIHByb2Nlc3MuIEkgd2FudCB0byBxdWlja2x5IGV2YWx1YXRlIGhvdyB0aGlzIGZ1bmN0aW9uIGZhY3RvcnMgaW50byB0aGlzIHByb2Nlc3MsIHNwZWNpZmljYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBmcmVlaW5nIGFuZCBwb3RlbnRpYWxseSByZS11c2luZyBwYWdlcyBlZmZpY2llbnRseS4gSSBtdXN0IGVuc3VyZSB0aGlzIHBpZWNlIGRvdmV0YWlscyBuaWNlbHkgd2l0aCB0aGUgaXNvbGF0aW9uIHN0cmF0ZWd5IHdlIGp1c3QgY29uc2lkZXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIHByZXBhcmF0aW9uIHBoYXNlIGlzIG9wdGltaXplZCBvciBpZiBpdCBuZWVkcyBhbm90aGVyIGxvb2sgdG8gYmUgb3B0aW1hbGx5IHN0cmVhbWxpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjg1MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjA0OjQ4Ljc0MDI5MDc4MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3ODE3MDMzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmcmVlX3RhaWxfcGFnZV9wcmVwYXJlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfYWxsb2MuYz0xMDg0PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19jaGVja19wYWdlc19lbmFibGVkKHZvaWQpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTA4OC1cXG5tbS9wYWdlX2FsbG9jLmM6MTA4OTpzdGF0aWMgaW50IGZyZWVfdGFpbF9wYWdlX3ByZXBhcmUoc3RydWN0IHBhZ2UgKmhlYWRfcGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpXFxubW0vcGFnZV9hbGxvYy5jLTEwOTAte1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTEzMTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIF9fZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTEzODEtXFx0XFx0XFx0aWYgKGNvbXBvdW5kKVxcbm1tL3BhZ2VfYWxsb2MuYzoxMzgyOlxcdFxcdFxcdFxcdGJhZCArPSBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHBhZ2UsIHRhaWxfcGFnZSk7XFxubW0vcGFnZV9hbGxvYy5jLTEzODMtXFx0XFx0XFx0aWYgKGlzX2NoZWNrX3BhZ2VzX2VuYWJsZWQoKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowNDo1NC40MTg0Njk1NjZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0MzE5MzEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTWVtb3J5IE1hbmFnZW1lbnQ6IFRhcmdldGluZyBgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZWAgZm9yIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBtZW1vcnkgbWFuYWdlbWVudCBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHBhZ2UgZnJlZWluZy4gSSBzZWUgdGhhdCBgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZWAgaXMgY2FsbGVkIHdpdGhpbiBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgLiBOb3csIGBfX2ZyZWVfcGFnZXNfcHJlcGFyZWAgc2VlbXMgdG8gYmUgYSBwcmV0dHkgZnJlcXVlbnRseSBhY2Nlc3NlZCBwaWVjZSBvZiBjb2RlLCBhIGhvdCBwYXRoIGFzIHRoZXkgc2F5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvbXBvdW5kIHBhZ2VzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgICppdHNlbGYqIG1pZ2h0IGJlIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGRldGFpbGVkIGFuYWx5c2lzLCBhIHBvdGVudGlhbGx5IGZydWl0ZnVsIHN5bWJvbCB0byBmb2N1cyBvbiBzaW5jZSBpdOKAmXMgb25seSBpbnZvbHZlZCB3aGVuIHdlIGhhdmUgdGhlc2UgY29tcG91bmQgcGFnZXMuIEJ1dCBoYW5nIG9uLCBgX19mcmVlX3BhZ2VzX3ByZXBhcmVgIGhhbmRsZXMgKmFsbCogcGFnZSBmcmVlcywgd2hpbGUgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgIGlzIHRoZSBvbmUgc3BlY2lmaWNhbGx5IGZvciBjb21wb3VuZCBwYWdlcy4gQWxyaWdodCwgSSdsbCBhZGQgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgIHRvIG15IGxpc3Qgb2YgdGhpbmdzIHRvIGtlZXAgYW4gZXllIG9uLiBJIHRoaW5rIHRoYXQgaXMgdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byBrZWVwIGdvaW5nLlxuXG5OZXh0IHVwLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCBgcGNwdV9kZXN0cm95X2NodW5rYC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCdzIGFib3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI4OSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNDowNTowMC40NjE2NjY2NDJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTM3NDIwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNwdV9kZXN0cm95X2NodW5rXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BlcmNwdS1rbS5jPTUzPXN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqcGNwdV9jcmVhdGVfY2h1bmsoZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0vcGVyY3B1LWttLmMtODYtXFxubW0vcGVyY3B1LWttLmM6ODc6c3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaylcXG5tbS9wZXJjcHUta20uYy04OC17XFxuLS1cXG5tbS9wZXJjcHUtdm0uYz0zNTM9c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2NyZWF0ZV9jaHVuayhnZnBfdCBnZnApXFxuLS1cXG5tbS9wZXJjcHUtdm0uYy0zNzctXFxubW0vcGVyY3B1LXZtLmM6Mzc4OnN0YXRpYyB2b2lkIHBjcHVfZGVzdHJveV9jaHVuayhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmspXFxubW0vcGVyY3B1LXZtLmMtMzc5LXtcXG4tLVxcbm1tL3BlcmNwdS5jPTE1Mzc9c3RhdGljIHZvaWQgcGNwdV9jaHVua19kZXBvcHVsYXRlZChzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmssXFxuLS1cXG5tbS9wZXJjcHUuYy0xNTYyLSAqIHBjcHVfY3JlYXRlX2NodW5rXFx0XFx0LSBjcmVhdGUgYSBuZXcgY2h1bmtcXG5tbS9wZXJjcHUuYzoxNTYzOiAqIHBjcHVfZGVzdHJveV9jaHVua1xcdFxcdC0gZGVzdHJveSBhIGNodW5rLCBhbHdheXMgcHJlY2VkZWQgYnkgZnVsbCBkZXBvcFxcbm1tL3BlcmNwdS5jLTE1NjQtICogcGNwdV9hZGRyX3RvX3BhZ2VcXHRcXHQtIHRyYW5zbGF0ZSBhZGRyZXNzIHRvIHBoeXNpY2FsIGFkZHJlc3NcXG4tLVxcbm1tL3BlcmNwdS5jPTE1NzM9c3RhdGljIHN0cnVjdCBwY3B1X2NodW5rICpwY3B1X2NyZWF0ZV9jaHVuayhnZnBfdCBnZnApO1xcbm1tL3BlcmNwdS5jOjE1NzQ6c3RhdGljIHZvaWQgcGNwdV9kZXN0cm95X2NodW5rKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuayk7XFxubW0vcGVyY3B1LmMtMTU3NS1zdGF0aWMgc3RydWN0IHBhZ2UgKnBjcHVfYWRkcl90b19wYWdlKHZvaWQgKmFkZHIpO1xcbi0tXFxubW0vcGVyY3B1LmM9MTk1OT1zdGF0aWMgdm9pZCBwY3B1X2JhbGFuY2VfZnJlZShib29sIGVtcHR5X29ubHkpXFxuLS1cXG5tbS9wZXJjcHUuYy0xOTk0LVxcdFxcdH1cXG5tbS9wZXJjcHUuYzoxOTk1OlxcdFxcdHBjcHVfZGVzdHJveV9jaHVuayhjaHVuayk7XFxubW0vcGVyY3B1LmMtMTk5Ni1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDU6MDUuNjU1NDE1MTc2WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzOTY2MjI0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgcGNwdV9kZXN0cm95X2NodW5rYCBGdW5jdGlvbiBhbmQgUmVsYXRlZCBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIHNvIGBwY3B1X2Rlc3Ryb3lfY2h1bmtgIHNlZW1zIGxpa2UgYSBzb2xpZCBmdW5jdGlvbiwgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGxhcmdlciBwaWN0dXJlLiBJJ20gZm9jdXNpbmcgb24ga2V5IHN5bWJvbHMgbm93OiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAsIGBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlYCwgYHBjcHVfZGVzdHJveV9jaHVua2AgaXRzZWxmIChvZiBjb3Vyc2UpLCBgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tgLCBgZmFzdF9pc29sYXRlX2ZyZWVwYWdlc2AsIGFuZCBhbHNvIGBjb21wYWN0aW9uX2FsbG9jX25vcHJvZmAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUgY3J1Y2lhbCBwaWVjZXMgb2YgdGhpcyBwdXp6bGUuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGhhdmUgYENPTVBBQ1RJT05gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBhbmQgYERFQlVHX1ZNYCBpbiBwbGF5LiBCdXQgd2FpdCwgdGhlcmUncyBhIHByb2JsZW0sIGBORUVEX1BFUl9DUFVfS01gIGlzIG5vdCBkaXJlY3RseSBzZWxlY3RhYmxlLCB3aGljaCBpcyBvZGQuIFRoaXMgaXMgY29uY2VybmluZywgaXMgdGhlcmUgYW5vdGhlciBjb25maWcgb3B0aW9uIHRoYXQgdHJpZ2dlcnMgYHBjcHVfZGVzdHJveV9jaHVua2AncyBlbmFibGVtZW50P1xuXG5JIGtub3cgYHBjcHVfZGVzdHJveV9jaHVua2AgaXMgZGVmaW5lZCBpbiBib3RoIGBtbS9wZXJjcHUta20uY2AgYW5kIGBtbS9wZXJjcHUtdm0uY2AuIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBpcyBtb2RpZnlpbmcgYG1tL3BlcmNwdS1rbS5jYC4gVGhlIGNvcmUgaXNzdWUgdGhlbiBiZWNvbWVzLCBpZiBgTkVFRF9QRVJfQ1BVX0tNYCBpc24ndCBlbmFibGVkLCB0aGVuIGBtbS9wZXJjcHUta20uY2AgKndvbid0KiBiZSBjb21waWxlZCEgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBtbS9wZXJjcHUta20uY2AgKmlzKiBiZWluZyBjb21waWxlZCB1bmRlciB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY3JpdGljYWwgcHJlcmVxdWlzaXRlIHRvIGNvbnNpZGVyIGZvciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxODIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDU6MTIuMDUyMDQyNDUzWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDcwMjk4NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBlcmNwdS1rbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9wZXJjcHUta20uYy0yLS8qXFxubW0vcGVyY3B1LWttLmM6MzogKiBtbS9wZXJjcHUta20uYyAtIGtlcm5lbCBtZW1vcnkgYmFzZWQgY2h1bmsgYWxsb2NhdGlvblxcbm1tL3BlcmNwdS1rbS5jLTQtICpcXG4tLVxcbm1tL3BlcmNwdS1rbS5jLTEwLSAqXFxubW0vcGVyY3B1LWttLmM6MTE6ICogVG8gdXNlIHBlcmNwdS1rbSxcXG5tbS9wZXJjcHUta20uYy0xMi0gKlxcbi0tXFxubW0vcGVyY3B1LWttLmMtMjUtICogICBrZXJuZWwgbWVtb3J5IGJsb2NrIHVzaW5nIGFsbG9jX3BhZ2VzKCksIG1lbW9yeSB3aWxsIGJlIHdhc3RlZCBpZlxcbm1tL3BlcmNwdS1rbS5jOjI2OiAqICAgY2h1bmsgc2l6ZSBpcyBub3QgYWxpZ25lZC4gIHBlcmNwdS1rbSBjb2RlIHdpbGwgd2hpbmUgYWJvdXQgaXQuXFxubW0vcGVyY3B1LWttLmMtMjctICovXFxuLS1cXG5tbS9wZXJjcHUuYz0xNTc2PXN0YXRpYyBpbnQgX19pbml0IHBjcHVfdmVyaWZ5X2FsbG9jX2luZm8oY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWkpO1xcbi0tXFxubW0vcGVyY3B1LmMtMTU3OC0jaWZkZWYgQ09ORklHX05FRURfUEVSX0NQVV9LTVxcbm1tL3BlcmNwdS5jOjE1Nzk6I2luY2x1ZGUgXFxcInBlcmNwdS1rbS5jXFxcIlxcbm1tL3BlcmNwdS5jLTE1ODAtI2Vsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTQ6MDU6MTcuMTIyMzQ3OTI2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDE5MjQ5NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyB0byBhcHByb2FjaCBmdXp6aW5nIGl0LiBJIHNlZSB0aGF0IGBtbS9wZXJjcHUta20uY2AgaXMgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBpbiBgbW0vcGVyY3B1LmNgIGJhc2VkIG9uIGBDT05GSUdfTkVFRF9QRVJfQ1BVX0tNYC4gVGhlIGlzc3VlIGlzLCBJIGNhbid0IGVhc2lseSBlbmFibGUgdGhhdCBjb25maWd1cmF0aW9uIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBgIVNNUCB8fCAhTU1VYC4gU2luY2UgSSdtIHByb2JhYmx5IHRlc3Rpbmcgb24gYSBzdGFuZGFyZCBTTVAga2VybmVsLCB0aGF0IHBhcnQgb2YgdGhlIHBhdGNoIGlzIGVzc2VudGlhbGx5IHVudGVzdGFibGUgYXMgaXMuIEdvb2QgdG8ga25vdyAtIG5vIG5lZWQgdG8gYWdvbml6ZSBvdmVyIGVuYWJsaW5nIHRoYXQgY29uZmlnLiBXYWl0Li4uIEkgc2hvdWxkIHByb2JhYmx5IHJlbW92ZSBpdCBmcm9tIGNvbnNpZGVyYXRpb24sIHNpbmNlIGl0J3Mgbm90IHNlbGVjdGFibGUuXG5cbk5vdywgbGV0J3Mgem9vbSBvdXQuIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZml4aW5nIGlzc3VlcyB3aXRoIGBwYWdlLVx1MDAzZXByaXZhdGVgIG5vdCBiZWluZyBoYW5kbGVkIGNvcnJlY3RseSwgcGFydGljdWxhcmx5IG9uIHRhaWwgcGFnZXMuIEl0J3MgdG91Y2hpbmcgc29tZSBjcml0aWNhbCBtZW1vcnkgbWFuYWdlbWVudCBhcmVhczogcmVtb3ZpbmcgYHNldF9wYWdlX3ByaXZhdGVgIGluIGNvbXBhY3Rpb24sIGFkZGluZyB3YXJuaW5ncyBkdXJpbmcgaHVnZSBwYWdlIHNwbGl0dGluZywgc29tZSBpbnRlcm5hbCBwcmVwYXJhdGlvbiB3b3JrLCBhbmQgYWRkaW5nIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBQbHVzIGl0J3MgY2xlYXJpbmcgY2h1bmsgaW5mb3JtYXRpb24gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaG9zZSBhcmUgYWxsIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IG5lZWQgdG8gYmUgdGVzdGVkIHRob3JvdWdobHkuIEZ1enppbmcgaXMgdGhlIHJpZ2h0IGFwcHJvYWNoIGhlcmUgdG8gZW5zdXJlIHdlIGRvbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBtaXNzIGFueSBsYXRlbnQgYnVncy5cblxuSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzeW1ib2xzIGluIHBhcnRpY3VsYXI6IGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCwgYGZyZWVfdGFpbF9wYWdlX3ByZXBhcmVgLCBgcGNwdV9kZXN0cm95X2NodW5rYCwgYGlzb2xhdGVfZnJlZXBhZ2VzX2Jsb2NrYCwgYGZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNgLCBhbmQgYGNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mYC5cblxuQWhhLCBgcGNwdV9kZXN0cm95X2NodW5rYCBpbiBgbW0vcGVyY3B1LWttLmNgIGlzIHN0YXRpYyBhbmQgb25seSBjb21waWxlZCBpZiBgQ09ORklHX05FRURfUEVSX0NQVV9LTWAgaXMgc2V0LiBTbywgZXZlbiB0aG91Z2ggSSBjYW4ndCAqZW5hYmxlKiBpdCBkaXJlY3RseSwgaXQgKmNvdWxkKiBiZSBjb21waWxlZC4gSXQncyBzdGF0aWNhbGx5IGxpbmtlZC4gQmVzdCB0byBpbmNsdWRlIGl0LCBhbmQgdGhlIGZ1enplciB3aWxsIHNpbXBseSBpZ25vcmUgaXQgaWYgaXQncyBub3QgcHJlc2VudC5cblxuVGhlIGtleSBjb25maWdzIHRvIGNvbnNpZGVyIGZvciBmdXp6aW5nIHdvdWxkIGJlIGBDT01QQUNUSU9OYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYW5kIGBERUJVR19WTWAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBERUJVR19WTWAgaXMgYSBib29sZWFuLiBZZXMsIGl0IGlzLiBQZXJmZWN0LlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHRyaWdnZXIgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwNjgsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE0OjA1OjMwLjE0MTYwMTAxM1oiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjk0MTM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09NUEFDVElPTlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkRFQlVHX1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiZnJlZV90YWlsX3BhZ2VfcHJlcGFyZVwiLFxuICAgIFwicGNwdV9kZXN0cm95X2NodW5rXCIsXG4gICAgXCJpc29sYXRlX2ZyZWVwYWdlc19ibG9ja1wiLFxuICAgIFwiZmFzdF9pc29sYXRlX2ZyZWVwYWdlc1wiLFxuICAgIFwiY29tcGFjdGlvbl9hbGxvY19ub3Byb2ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRvIGZpeCBpc3N1ZXMgd2l0aCBgcGFnZS1cXHUwMDNlcHJpdmF0ZWAgbm90IGJlaW5nIHByb3Blcmx5IGNsZWFyZWQgb3IgY2hlY2tlZCBvbiB0YWlsIHBhZ2VzLiBJdCByZW1vdmVzIGBzZXRfcGFnZV9wcml2YXRlYCBpbiBjb21wYWN0aW9uLCBhZGRzIHdhcm5pbmdzIGluIGh1Z2UgbWVtb3J5IHNwbGl0dGluZyBhbmQgaW50ZXJuYWwgcHJlcCwgYW5kIGFkZHMgYSBjaGVjayBpbiBwYWdlIGFsbG9jYXRpb24uIEl0IGFsc28gY2xlYXJzIGNodW5rIGluZm8gYmVmb3JlIGZyZWVpbmcgcGFnZXMgaW4gcGVyY3B1LWttLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkb24ndCB0cmlnZ2VyIGZhbHNlIHBvc2l0aXZlcyBvciBtaXNzIGFjdHVhbCBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPTVBBQ1RJT05cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERUJVR19WTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3BsaXRfZm9saW9fdG9fb3JkZXJcIixcbiAgICBcImZyZWVfdGFpbF9wYWdlX3ByZXBhcmVcIixcbiAgICBcInBjcHVfZGVzdHJveV9jaHVua1wiLFxuICAgIFwiaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2tcIixcbiAgICBcImZhc3RfaXNvbGF0ZV9mcmVlcGFnZXNcIixcbiAgICBcImNvbXBhY3Rpb25fYWxsb2Nfbm9wcm9mXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0byBmaXggaXNzdWVzIHdpdGggYHBhZ2UtXFx1MDAzZXByaXZhdGVgIG5vdCBiZWluZyBwcm9wZXJseSBjbGVhcmVkIG9yIGNoZWNrZWQgb24gdGFpbCBwYWdlcy4gSXQgcmVtb3ZlcyBgc2V0X3BhZ2VfcHJpdmF0ZWAgaW4gY29tcGFjdGlvbiwgYWRkcyB3YXJuaW5ncyBpbiBodWdlIG1lbW9yeSBzcGxpdHRpbmcgYW5kIGludGVybmFsIHByZXAsIGFuZCBhZGRzIGEgY2hlY2sgaW4gcGFnZSBhbGxvY2F0aW9uLiBJdCBhbHNvIGNsZWFycyBjaHVuayBpbmZvIGJlZm9yZSBmcmVlaW5nIHBhZ2VzIGluIHBlcmNwdS1rbS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBtZW1vcnkgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG9uJ3QgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgb3IgbWlzcyBhY3R1YWwgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[1] Phase: Succeeded StartedAt: 2026-07-03 14:05:41 +0000 UTC FinishedAt: 2026-07-03 14:05:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 14:05:41 +0000 UTC FinishedAt: 2026-07-03 14:05:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2] Phase: Succeeded StartedAt: 2026-07-03 14:05:41 +0000 UTC FinishedAt: 2026-07-03 18:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-03 14:05:41 +0000 UTC FinishedAt: 2026-07-03 18:31:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-03 14:05:41 +0000 UTC FinishedAt: 2026-07-03 14:06:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-03 14:05:41 +0000 UTC FinishedAt: 2026-07-03 14:06:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow8xs8s/series-workflow8xs8s-convert-artifact-1469133508/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-03 14:06:19 +0000 UTC FinishedAt: 2026-07-03 14:35:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-03 14:06:19 +0000 UTC FinishedAt: 2026-07-03 14:35:51 +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:*4b0bcc0e-caeb-459a-b09c-d368930325a6,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-workflow8xs8s/series-workflow8xs8s-convert-artifact-1469133508/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": "97028e9f-ae85-403f-b754-cdd9f5f7042b", "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-workflow8xs8s/series-workflow8xs8s-build-action-1122465282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-03 14:06:19 +0000 UTC FinishedAt: 2026-07-03 14:35:41 +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:*4b0bcc0e-caeb-459a-b09c-d368930325a6,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-workflow8xs8s/series-workflow8xs8s-convert-artifact-1469133508/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": "97028e9f-ae85-403f-b754-cdd9f5f7042b", "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-workflow8xs8s/series-workflow8xs8s-build-action-1122465282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-03 14:35:51 +0000 UTC FinishedAt: 2026-07-03 14:35:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-03 14:35:51 +0000 UTC FinishedAt: 2026-07-03 14:35:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-03 14:35:51 +0000 UTC FinishedAt: 2026-07-03 14:36:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-03 14:35:51 +0000 UTC FinishedAt: 2026-07-03 14:36:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow8xs8s/series-workflow8xs8s-convert-artifact-2919350851/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-03 14:36:12 +0000 UTC FinishedAt: 2026-07-03 14:38:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-03 14:36:12 +0000 UTC FinishedAt: 2026-07-03 14:38:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*97028e9f-ae85-403f-b754-cdd9f5f7042b,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-workflow8xs8s/series-workflow8xs8s-build-action-1122465282/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-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-03 14:38:13 +0000 UTC FinishedAt: 2026-07-03 14:38:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-03 14:38:13 +0000 UTC FinishedAt: 2026-07-03 14:38:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-03 14:38:13 +0000 UTC FinishedAt: 2026-07-03 15:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-03 14:38:13 +0000 UTC FinishedAt: 2026-07-03 15:27:01 +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:*4b0bcc0e-caeb-459a-b09c-d368930325a6,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-workflow8xs8s/series-workflow8xs8s-convert-artifact-2919350851/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": "aaf90792-e704-4b47-b114-a1f43ba13eee", "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-workflow8xs8s/series-workflow8xs8s-build-action-4274072823/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-03 14:38:13 +0000 UTC FinishedAt: 2026-07-03 15:26:51 +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:*4b0bcc0e-caeb-459a-b09c-d368930325a6,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-workflow8xs8s/series-workflow8xs8s-convert-artifact-2919350851/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": "aaf90792-e704-4b47-b114-a1f43ba13eee", "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-workflow8xs8s/series-workflow8xs8s-build-action-4274072823/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-03 15:27:01 +0000 UTC FinishedAt: 2026-07-03 15:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-03 15:27:01 +0000 UTC FinishedAt: 2026-07-03 15:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-03 15:27:01 +0000 UTC FinishedAt: 2026-07-03 15:29:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-03 15:27:01 +0000 UTC FinishedAt: 2026-07-03 15:28:55 +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:*aaf90792-e704-4b47-b114-a1f43ba13eee,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-workflow8xs8s/series-workflow8xs8s-build-action-4274072823/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-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 15:29:04 +0000 UTC FinishedAt: 2026-07-03 18:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 15:29:04 +0000 UTC FinishedAt: 2026-07-03 18:31:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},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:*97028e9f-ae85-403f-b754-cdd9f5f7042b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aaf90792-e704-4b47-b114-a1f43ba13eee,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-workflow8xs8s/series-workflow8xs8s-build-action-1122465282/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-workflow8xs8s/series-workflow8xs8s-build-action-4274072823/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 15:29:04 +0000 UTC FinishedAt: 2026-07-03 15:29:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 15:29:04 +0000 UTC FinishedAt: 2026-07-03 15:29:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},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-workflow8xs8s/series-workflow8xs8s-convert-artifact-361584220/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 15:29:04 +0000 UTC FinishedAt: 2026-07-03 15:29:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 15:29:04 +0000 UTC FinishedAt: 2026-07-03 15:29:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 15:29:04 +0000 UTC FinishedAt: 2026-07-03 15:29:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 15:29:28 +0000 UTC FinishedAt: 2026-07-03 18:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8xs8s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","free_tail_page_prepare","pcpu_destroy_chunk","isolate_freepages_block","fast_isolate_freepages","compaction_alloc_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e031e55776cf9193b4720a253e92539ca536d224","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION","TRANSPARENT_HUGEPAGE","DEBUG_VM"],"series_id":"3ca04eb0-8886-4368-98a4-d961179c2d22","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 15:29:28 +0000 UTC FinishedAt: 2026-07-03 18:30:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*97028e9f-ae85-403f-b754-cdd9f5f7042b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aaf90792-e704-4b47-b114-a1f43ba13eee,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-workflow8xs8s/series-workflow8xs8s-build-action-1122465282/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-workflow8xs8s/series-workflow8xs8s-build-action-4274072823/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-workflow8xs8s/series-workflow8xs8s-convert-artifact-361584220/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,}