Name: series-workflowp5b4j Phase: Succeeded StartedAt: 2026-08-13 05:55:19 +0000 UTC FinishedAt: 2026-08-13 09:49:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[0] Phase: Succeeded StartedAt: 2026-08-13 05:55:19 +0000 UTC FinishedAt: 2026-08-13 06:00:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 05:55:19 +0000 UTC FinishedAt: 2026-08-13 06:00:02 +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": "9eba1ecd48e4d85eacdb2a351de4f8cc1527c395", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_LRU_SORT", "SAMPLES", "SAMPLE_DAMON_MTIER" ], "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": "9eba1ecd48e4d85eacdb2a351de4f8cc1527c395", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_LRU_SORT", "SAMPLES", "SAMPLE_DAMON_MTIER" ], "series_id": "7ca26948-a40a-48c4-b654-c2c6d6487f05" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damos_commit_quota_goals", "damon_commit_ctx" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRVMmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgZm9yIGB0YXJnZXRfdmFsdWVgIGluIGBkYW1vc19xdW90YV9nb2FsYCBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBJdCBjZW50cmFsaXplcyB0aGUgY2hlY2sgZm9yIHplcm8gYHRhcmdldF92YWx1ZWAgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCByZW1vdmVzIHJlZHVuZGFudCBjaGVja3MgZnJvbSBvdGhlciBwbGFjZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZmllbGRzIGludHJvZHVjZWQgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycywgbWVtb3J5IGxlYWtzLCBvciBjcmFzaGVzIChsaWtlIGRpdmlzaW9uIGJ5IHplcm8pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcsIEtBU0FOLCBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gYnVnIGluIGBkYW1vc19xdW90YV9zY29yZWAgYnkgcmV0dXJuaW5nIGAtRUlOVkFMYCBmcm9tIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgaWYgYHNyYy1cdTAwM2V0YXJnZXRfdmFsdWVgIGlzIDAuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgYXMgd2VsbCBhcyB0aHJvdWdoIHRoZSBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZXMuIFRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbCBhbmQgcHJldmVudHMgYSBrZXJuZWwgcGFuaWMsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YjNmMmM4OGY3OTM0M2EwYjk3ZGQ5ZDg4MjQ1ZmEzNjgyZGY0NWNlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDU6NTc6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA2NDRkYWY1YTE2NTYwLi5jMjA0ZjY5MDdjNTE1IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xMTM2LDE1ICYjNDM7MTEzNiwxOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4mIzQzO3N0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4gXHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG4ge1xuJiM0MztcdGlmICghc3JjLVx1MDAzZXRhcmdldF92YWx1ZSlcbiYjNDM7XHRcdHJldHVybiAgLUVJTlZBTDtcbiBcdGRzdC1cdTAwM2VtZXRyaWMgPSBzcmMtXHUwMDNlbWV0cmljO1xuIFx0ZHN0LVx1MDAzZXRhcmdldF92YWx1ZSA9IHNyYy1cdTAwM2V0YXJnZXRfdmFsdWU7XG4gXHRpZiAoZHN0LVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUKVxuIFx0XHRkc3QtXHUwMDNlY3VycmVudF92YWx1ZSA9IHNyYy1cdTAwM2VjdXJyZW50X3ZhbHVlO1xuIFx0Lyoga2VlcCBsYXN0X3BzaV90b3RhbCBhcyBpcywgc2luY2UgaXQgd2lsbCBiZSB1cGRhdGVkIGluIG5leHQgY3ljbGUgKi9cbiBcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKGRzdCwgc3JjKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gLyoqXG5AQCAtMTE2MiwxNCAmIzQzOzExNjUsMTcgQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4gaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4ge1xuIFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7XG4tXHRpbnQgaSA9IDAsIGogPSAwO1xuJiM0MztcdGludCBpID0gMCwgaiA9IDAsIGVycjtcbiBcbiBcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShkc3RfZ29hbCwgbmV4dCwgZHN0KSB7XG4gXHRcdHNyY19nb2FsID0gZGFtb3NfbnRoX3F1b3RhX2dvYWwoaSYjNDM7JiM0MzssIHNyYyk7XG4tXHRcdGlmIChzcmNfZ29hbClcbi1cdFx0XHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xuLVx0XHRlbHNlXG4mIzQzO1x0XHRpZiAoc3JjX2dvYWwpIHtcbiYjNDM7XHRcdFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fSBlbHNlIHtcbiBcdFx0XHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZHN0X2dvYWwpO1xuJiM0MztcdFx0fVxuIFx0fVxuIFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHtcbiBcdFx0aWYgKGomIzQzOyYjNDM7IFx1MDAzYyBpKVxuQEAgLTExNzgsNyAmIzQzOzExODQsMTEgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4gXHRcdFx0XHRzcmNfZ29hbC1cdTAwM2VtZXRyaWMsIHNyY19nb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG4gXHRcdGlmICghbmV3X2dvYWwpXG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG4mIzQzO1x0XHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChuZXdfZ29hbCwgc3JjX2dvYWwpO1xuJiM0MztcdFx0aWYgKGVycikge1xuJiM0MztcdFx0XHRkYW1vc19mcmVlX3F1b3RhX2dvYWwobmV3X2dvYWwpO1xuJiM0MztcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fVxuIFx0XHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcbiBcdH1cbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCBiZDg0NzgyOWE5OTA3Li43ZGY0NWY5YTBiM2FlIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuQEAgLTIzMyw4ICYjNDM7MjMzLDYgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxuIFxuIFx0aWYgKCFhY3RpdmVfbWVtX2JwKVxuIFx0XHRyZXR1cm4gMDtcbi1cdGlmICgxMDAwMCBcdTAwM2MgYWN0aXZlX21lbV9icClcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7XG4gXHRpZiAoIWdvYWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZDExMjNlYmJmYWI5MC4uYWM5YzI0YjkyZWFkOCAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5AQCAtMTU2LDkgJiM0MzsxNTYsNiBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRpZiAoIXNjaGVtZSlcbiBcdFx0Z290byBmcmVlX291dDtcbiBcdGRhbW9uX3NldF9zY2hlbWVzKGN0eCwgXHUwMDI2c2NoZW1lLCAxKTtcbi1cdC8qIHplcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKCkgKi9cbi1cdGlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKVxuLVx0XHRnb3RvIGZyZWVfb3V0O1xuIFx0cXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxuIFx0XHRcdHByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDpcbiBcdFx0XHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVTJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9zX2NvbW1pdF9xdW90YV9nb2FscyYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBidWcgaW4gYGRhbW9zX3F1b3RhX3Njb3JlYCBieSByZXR1cm5pbmcgYC1FSU5WQUxgIGZyb20gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpZiBgc3JjLVx1MDAzZXRhcmdldF92YWx1ZWAgaXMgMC4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBhcyB3ZWxsIGFzIHRocm91Z2ggdGhlIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlcy4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsIGFuZCBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYywgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhiM2YyYzg4Zjc5MzQzYTBiOTdkZDlkODgyNDVmYTM2ODJkZjQ1Y2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAwNTo1NzowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCA2NDRkYWY1YTE2NTYwLi5jMjA0ZjY5MDdjNTE1IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0xMTM2LDE1ICYjNDM7MTEzNiwxOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbigKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKAomIzQzO3N0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoCiAJCXN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpCiB7CiYjNDM7CWlmICghc3JjLSZndDt0YXJnZXRfdmFsdWUpCiYjNDM7CQlyZXR1cm4gIC1FSU5WQUw7CiAJZHN0LSZndDttZXRyaWMgPSBzcmMtJmd0O21ldHJpYzsKIAlkc3QtJmd0O3RhcmdldF92YWx1ZSA9IHNyYy0mZ3Q7dGFyZ2V0X3ZhbHVlOwogCWlmIChkc3QtJmd0O21ldHJpYyA9PSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUKQogCQlkc3QtJmd0O2N1cnJlbnRfdmFsdWUgPSBzcmMtJmd0O2N1cnJlbnRfdmFsdWU7CiAJLyoga2VlcCBsYXN0X3BzaV90b3RhbCBhcyBpcywgc2luY2UgaXQgd2lsbCBiZSB1cGRhdGVkIGluIG5leHQgY3ljbGUgKi8KIAlkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihkc3QsIHNyYyk7CiYjNDM7CXJldHVybiAwOwogfQogCiAvKioKQEAgLTExNjIsMTQgJiM0MzsxMTY1LDE3IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKAogaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpCiB7CiAJc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7Ci0JaW50IGkgPSAwLCBqID0gMDsKJiM0MzsJaW50IGkgPSAwLCBqID0gMCwgZXJyOwogCiAJZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGRzdF9nb2FsLCBuZXh0LCBkc3QpIHsKIAkJc3JjX2dvYWwgPSBkYW1vc19udGhfcXVvdGFfZ29hbChpJiM0MzsmIzQzOywgc3JjKTsKLQkJaWYgKHNyY19nb2FsKQotCQkJZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTsKLQkJZWxzZQomIzQzOwkJaWYgKHNyY19nb2FsKSB7CiYjNDM7CQkJZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwomIzQzOwkJfSBlbHNlIHsKIAkJCWRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChkc3RfZ29hbCk7CiYjNDM7CQl9CiAJfQogCWRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShzcmNfZ29hbCwgbmV4dCwgc3JjKSB7CiAJCWlmIChqJiM0MzsmIzQzOyAmbHQ7IGkpCkBAIC0xMTc4LDcgJiM0MzsxMTg0LDExIEBAIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKQogCQkJCXNyY19nb2FsLSZndDttZXRyaWMsIHNyY19nb2FsLSZndDt0YXJnZXRfdmFsdWUpOwogCQlpZiAoIW5ld19nb2FsKQogCQkJcmV0dXJuIC1FTk9NRU07Ci0JCWRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7CiYjNDM7CQllcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChuZXdfZ29hbCwgc3JjX2dvYWwpOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWRhbW9zX2ZyZWVfcXVvdGFfZ29hbChuZXdfZ29hbCk7CiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCX0KIAkJZGFtb3NfYWRkX3F1b3RhX2dvYWwoZHN0LCBuZXdfZ29hbCk7CiAJfQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmMKaW5kZXggYmQ4NDc4MjlhOTkwNy4uN2RmNDVmOWEwYjNhZSAxMDA2NDQKLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9scnVfc29ydC5jCkBAIC0yMzMsOCAmIzQzOzIzMyw2IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSwKIAogCWlmICghYWN0aXZlX21lbV9icCkKIAkJcmV0dXJuIDA7Ci0JaWYgKDEwMDAwICZsdDsgYWN0aXZlX21lbV9icCkKLQkJcmV0dXJuIC1FSU5WQUw7CiAJZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApOwogCWlmICghZ29hbCkKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmMKaW5kZXggZDExMjNlYmJmYWI5MC4uYWM5YzI0YjkyZWFkOCAxMDA2NDQKLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuYwpAQCAtMTU2LDkgJiM0MzsxNTYsNiBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpCiAJaWYgKCFzY2hlbWUpCiAJCWdvdG8gZnJlZV9vdXQ7CiAJZGFtb25fc2V0X3NjaGVtZXMoY3R4LCAmYW1wO3NjaGVtZSwgMSk7Ci0JLyogemVybyB0YXJnZXQgdmFsdWUgY2F1c2VzIGRpdmlzaW9uIGJ5IHplcm8gaW4gZGFtb3NfcXVvdGFfc3RvcmUoKSAqLwotCWlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKQotCQlnb3RvIGZyZWVfb3V0OwogCXF1b3RhX2dvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbCgKIAkJCXByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDoKIAkJCURBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSBhZmZlY3RpbmcgREFNT04mIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGhlIHF1b3RhIG1hbmFnZW1lbnQgYW5kIHNhbXBsaW5nIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYCwgdGhlIExSVSBzb3J0aW5nIGluIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYW5kIHRoZSBtdWx0aS10aWVyIHNhbXBsaW5nIGV4YW1wbGUgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIExvb2tzIGxpa2UgaXQmIzM5O3MgYSByZWxhdGl2ZWx5IGZvY3VzZWQgY2hhbmdlLCBhbmQgSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYWx0ZXJhdGlvbnMuCgpGaXJzdCwgdGhlIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgZnVuY3Rpb24gaXMgYmVpbmcgbW9kaWZpZWQgdG8gcmV0dXJuIGFuIGVycm9yIHdoZW4gYHNyYy0mZ3Q7dGFyZ2V0X3ZhbHVlYCBpcyB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlOyBhIHplcm8gdGFyZ2V0IHByZXN1bWFibHkgbWVhbnMgbm8gcXVvdGEsIGFuZCBleHBsaWNpdGx5IHJldHVybmluZyBhbiBlcnJvciBpcyBhIGNsZWFyZXIgd2F5IHRvIHNpZ25hbCB0aGF0IHRoaXMgc2hvdWxkbiYjMzk7dCBiZSBhbGxvd2VkLiBUaGF0IGVycm9yIHRoZW4gZ2V0cyBwcm9wYWdhdGVkIHVwIHRvIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLiBHb29kLCBtYWtlcyBmb3IgY2xlYW5lciBlcnJvciBoYW5kbGluZy4KCk5leHQsIHRoZSBwYXRjaCByZW1vdmVzIGEgc2VlbWluZ2x5IGFyYml0cmFyeSBjaGVjaywgYGlmICgxMDAwMCAmbHQ7IGFjdGl2ZV9tZW1fYnApYCwgd2l0aGluIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY2hlY2sgd2FzIGRvaW5nLiBXYXMgaXQgYSBzYWZlZ3VhcmQgYWdhaW5zdCBhbiBleHRyZW1lIHZhbHVlLCBhIHR1bmluZyBwYXJhbWV0ZXIsIG9yIGFuIG92ZXJzaWdodD8gTXkgZmlyc3Qgc3RlcCBpcyBnb2luZyB0byBiZSB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB3aHkgdGhpcyBjaGVjayB3YXMgZGVlbWVkIHVubmVjZXNzYXJ5LgoKRmluYWxseSwgdGhleSYjMzk7dmUgcmVtb3ZlZCBgaWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApYCB3aXRoaW4gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgLiBUaGlzIGlzIGFsc28gaW50cmlndWluZy4gVGhpcyBpbXBsaWVzIGEgcmVsYXhhdGlvbiBvZiBhIGNvbmRpdGlvbiB1c2VkIGluIHRoZSBNVGllciBzYW1wbGluZy4gSXMgdGhpcyBhIHNpbXBsaWZpY2F0aW9uLCBhIGJ1ZyBmaXgsIG9yIGEgY2hhbmdlIGluIGhvdyB0aGUgc2FtcGxpbmcgaXMgaW50ZW5kZWQgdG8gYmVoYXZlPyBJdCByZXF1aXJlcyBhIGNsb3NlciBsb29rIGF0IHRoZSBzYW1wbGluZyBsb2dpYyBhbmQgaG93IHRoaXMgY29uZGl0aW9uIHdhcyBvcmlnaW5hbGx5IHVzZWQuCgpVbHRpbWF0ZWx5LCBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY2FyZWZ1bGx5IGNvbnNpZGVyIHdoYXQgREFNT04gY29uZmlnIG9wdGlvbnMgZXhpc3QgdG8gZW5zdXJlIHRoYXQgdGhlc2UgY2hhbmdlcyBkb24mIzM5O3QgaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGFuZ2UgaXMgaW4gbGluZSB3aXRoIHRoZSBkZXNpZ24gb2YgREFNT04uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGVjb25zdHJ1Y3RpbmcgRGVwZW5kZW5jaWVzIG9mIGBEQU1PTl9MUlVfU09SVGAqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBgREFNT05fTFJVX1NPUlRgIHJlbGllcyBvbi4gVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludC4gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIGV2ZW4gY29uc2lkZXIgbW9kaWZ5aW5nIGl0LCBvcHRpbWl6aW5nIGl0LCBvciBpbnRlZ3JhdGluZyBpdCB3aXRoIHNvbWV0aGluZyBlbHNlLiBJdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCBpbiBhbnkgZGVidWdnaW5nIG9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgaWRlbnRpZmllciBhbmQgYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBpbnB1dCBhbmQgb3V0cHV0IGludGVyYWN0aW9ucy4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgZGVsdmluZyBpbnRvIHRoZSBjb2RlIGFuZCBleGFtaW5pbmcgaXRzIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMuIEtub3dpbmcgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBpdCBsZXZlcmFnZXMgaXMgcGFyYW1vdW50LiBQZXJoYXBzIGl0JiMzOTtzIGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUsIGEgcGFydGljdWxhciBoYXJkd2FyZSBjb21wb25lbnQgb3IgZXZlbiBhbm90aGVyIHBpZWNlIG9mIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTl9MUlVfU09SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz04OD1jb25maWcgREFNT05fUkVDTEFJTVxuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gREFNT05fTFJVX1NPUlQgRGVwZW5kZW5jaWVzKioKCk9rYXksIHRpbWUgdG8gZ2V0IHRoaXMgc29ydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEQU1PTl9MUlVfU09SVGAuIE15IGZpcnN0IG1vdmUgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlLCBzcGVjaWZpY2FsbHkgYG1tL2RhbW9uL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgZGVwZW5kZW5jeSBsb2dpYyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiBhcmUgZGVmaW5lZC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGBEQU1PTl9MUlVfU09SVGAgYW5kIG90aGVyIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBsYWlkIG91dCBjbGVhcmx5IGluIHRoYXQgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRocm91Z2ggaXQsIGxvb2tpbmcgZm9yIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMsIGBkZXBlbmRzIG9uYCBjbGF1c2VzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGluZm9ybWF0aW9uIHRoYXQgcmV2ZWFscyB3aGljaCBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGBEQU1PTl9MUlVfU09SVGAgdG8gZXZlbiBiZSBjb25zaWRlcmVkIGEgdmlhYmxlIG9wdGlvbi4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIGFuYWx5emluZyB0aGUgREFNT04gY29uZmlndXJhdGlvbiwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBoaWVyYXJjaHkuIFRoaXMgd2lsbCBndWlkZSBteSB1bmRlcnN0YW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAwOlx0Y29uZmlnIERBTU9OX0xSVV9TT1JUXG4gMTAxOlx0XHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbiAxMDI6XHRcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbiAxMDM6XHRcdGhlbHBcbiAxMDQ6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXG4gMTA1Olx0XHQgIHByb3RlY3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAoaG90KSBwYWdlcyB3aGlsZSByYXJlbHkgYWNjZXNzZWQgKGNvbGQpXG4gMTA2Olx0XHQgIHBhZ2VzIHJlY2xhaW1lZCBmaXJzdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuXG4gMTA3Olx0XG4gMTA4Olx0Y29uZmlnIERBTU9OX1NUQVRcbiAxMDk6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuIDExMDpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxuIDExMTpcdFx0aGVscFxuIDExMjpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdGlzdGljcyBzdWJzeXN0ZW0uXG4gMTEzOlx0XHQgIEl0IHJ1bnMgREFNT04gYW5kIGV4cG9zZSBhY2Nlc3MgbW9uaXRvcmluZyByZXN1bHRzIGluIHNpbXBsZSBzdGF0XG4gMTE0Olx0XHQgIG1ldHJpY3MuXG4gMTE1Olx0XG4gMTE2Olx0Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG4gMTE3Olx0XHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiAxMTg6XHRcdGRlcGVuZHMgb24gREFNT05fU1RBVFxuIDExOTpcdFx0ZGVmYXVsdCBEQU1PTl9TVEFUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMzNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgdGhlIEludGVyZGVwZW5kZW5jaWVzIGluIERBTU9OKioKCkFscmlnaHQsIHNvIHRoZSBgREFNT05fTFJVX1NPUlRgIGZ1bmN0aW9uLCBhcyBJIHN1c3BlY3RlZCwgaXMgcmVsaWFudCBvbiBgREFNT05fUEFERFJgLiBHaXZlbiBteSBleHBlcmllbmNlIHdpdGggREFNT04sIEkga25vdyBob3cgY3JpdGljYWwgdGhlc2UgbG93LWxldmVsIGFkZHJlc3Mgc3BhY2VzIGFyZS4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhhdCBkZXBlbmRlbmN5LiBUaGVyZWZvcmUsIEkgbmVlZCB0byBpbW1lZGlhdGVseSBzaGlmdCBteSBmb2N1cyB0byBkaXNzZWN0aW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERBTU9OX1BBRERSYCBpdHNlbGYuIFdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlPyBXaGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIHJlbHlpbmcgb24gKml0Kj8gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byBuYWlsIGRvd24gdG8gZW5zdXJlIHN0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeSB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbSwgc28gdW5kZXJzdGFuZGluZyB0aGUgZmxvdyBmcm9tIGBEQU1PTl9QQUREUmAgaXMgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBkZXBlbmRlbmN5IHRyZWUgY2xlYXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NzpcdGNvbmZpZyBEQU1PTl9QQUREUlxuICA0ODpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNTA6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA1MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDU0Olx0XHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQ2hlY2tpbmcgREFNT04mIzM5O3MgRm91bmRhdGlvbioqCgpSaWdodCwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgREFNT05gIGlzIHBsYXlpbmcgbmljZSB3aXRoIGV2ZXJ5dGhpbmcgaXQgbmVlZHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgYERBTU9OYCYjMzk7cyBkZXBlbmRlbmN5IGxhbmRzY2FwZSBsb29rIGxpa2UgcmlnaHQgbm93PyYjMzQ7IEkgY2FuJiMzOTt0IGJ1aWxkIGFueXRoaW5nIHN0YWJsZSwgb3IgZXZlbiB1bmRlcnN0YW5kIHByb2JsZW1zIHdoZW4gdGhleSBhcmlzZSwgaWYgSSBkb24mIzM5O3Qga25vdyB0aGUgdG9vbHMgYERBTU9OYCByZWxpZXMgb24uIFNvLCBhIHF1aWNrIGNoZWNrLXVwIG9uIHRob3NlIGRlcGVuZGVuY2llcyBpcyBpbiBvcmRlci4gSXTigJlzIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggZXZlcnl0aGluZyBlbHNlIHN0YW5kcy4gV2UgaGF2ZSB0byBtYWtlIHN1cmUgaXQmIzM5O3Mgc29saWQgYmVmb3JlIHByb2NlZWRpbmcuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhpbmdzIGFyZSBpbiBvcmRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA1Olx0Y29uZmlnIERBTU9OXG4gICA2Olx0XHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGJ1aWxkcyBhIGZyYW1ld29yayB0aGF0IGFsbG93cyBrZXJuZWwgc3Vic3lzdGVtcyB0byBtb25pdG9yXG4gICA5Olx0XHQgIGFjY2VzcyBmcmVxdWVuY3kgb2YgZWFjaCBtZW1vcnkgcmVnaW9uLiBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWZ1bFxuICAxMDpcdFx0ICBmb3IgcGVyZm9ybWFuY2UtY2VudHJpYyBEUkFNIGxldmVsIG1lbW9yeSBtYW5hZ2VtZW50LlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcbiAgMTM6XHRcdCAgbW9yZSBpbmZvcm1hdGlvbi5cbiAgMTQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA3NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBEQU1PTiBwYXRjaCwgYW5kIG15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGBEQU1PTmAsIGBEQU1PTl9QQUREUmAsIGFuZCBgREFNT05fTFJVX1NPUlRgIGFyZSB0aGUga2V5IGNvbmZpZ3MgaW52b2x2ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2Ugc2V0dGluZ3MgZW5hYmxlIGFuZCBob3cgdGhleSBpbXBhY3QgdGhlIG92ZXJhbGwgREFNT04gYmVoYXZpb3IuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgc3RhcnRpbmcgd2l0aCBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCwgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHQgdmFsdWVzLiBJIHN1c3BlY3QgdGhlcmUgd2lsbCBiZSBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyB0aGVyZSB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBvZiB0aGUgY29kZS4gVGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBpcyBpbXBvcnRhbnQgdG9vIOKAkyB0aGF0IHdpbGwgcHJvYmFibHkgcG9pbnQgdG93YXJkcyBhIHByYWN0aWNhbCB1c2UtY2FzZSBvciBwZXJmb3JtYW5jZSBtb2RpZmljYXRpb24gcmVsYXRlZCB0byB0aWVyaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGllciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vTWFrZWZpbGU9ND1vYmotJChDT05GSUdfU0FNUExFX0RBTU9OX1BSQ0wpICYjNDM7PSBwcmNsLm9cbnNhbXBsZXMvZGFtb24vTWFrZWZpbGU6NTpvYmotJChDT05GSUdfU0FNUExFX0RBTU9OX01USUVSKSAmIzQzOz0gbXRpZXIub1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjg6I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXI6IFwmIzM0OyBmbXRcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy05LVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNy0jZW5kaWZcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODojZGVmaW5lIE1PRFVMRV9QQVJBTV9QUkVGSVggXCYjMzQ7ZGFtb25fc2FtcGxlX210aWVyLlwmIzM0O1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE5LVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0zNj1tb2R1bGVfcGFyYW0obm9kZTBfbWVtX2ZyZWVfYnAsIHVsb25nLCAwNjAwKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0zNy1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzozODpzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMzktXHRcdGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApO1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz00MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgZW5hYmxlZF9wYXJhbV9vcHMgPSB7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDI6XHQuc2V0ID0gZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZSxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy00My1cdC5nZXQgPSBwYXJhbV9nZXRfYm9vbCxcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9NjA9c3RhdGljIGludCBuaWRfdG9fcGh5cyhpbnQgdGFyZ2V0X25vZGUsIHN0cnVjdCByZWdpb25fcmFuZ2UgKnJhbmdlKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03Mi1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo3MzpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNzYtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTc3OnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTc4LXtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgxLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4MjpcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgodHJ1ZSk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgzLVx0aWYgKCFjdHgpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4NS1cdGN0eHNbMF0gPSBjdHg7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg2Olx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChmYWxzZSk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg3LVx0aWYgKCFjdHgpIHtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjAwLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIwMTpzdGF0aWMgdm9pZCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCh2b2lkKVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwMi17XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwNy1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMDg6c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlKFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwOS1cdFx0Y29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI0LVx0aWYgKGVuYWJsZWQpIHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjU6XHRcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyNi1cdFx0aWYgKGVycilcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI5LVx0fVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIzMDpcdGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjMxLVx0cmV0dXJuIDA7XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzMy1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMzQ6c3RhdGljIGludCBfX2luaXQgZGFtb25fc2FtcGxlX210aWVyX2luaXQodm9pZClcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzUte1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDQtXHRpZiAoZW5hYmxlZCkge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjI0NTpcdFx0ZXJyID0gZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjQ2LVx0XHRpZiAoZXJyKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNTEtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjUyOm1vZHVsZV9pbml0KGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUxNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgY29uZmlndXJlZC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIHN0cnVjdHVyZSwgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYHNhbXBsZXMvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgdHlwaWNhbCBsb2NhdGlvbiBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHNhbXBsZSBjb2RlLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBpbiB0aGVyZSB0byBzZWUgZXhhY3RseSBob3cgdGhpcyBzcGVjaWZpYyBvcHRpb24gaXMgZGVmaW5lZCwgaWYgaXQmIzM5O3MgZGVwZW5kZW50IG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucywgYW5kIHdoYXQgaXRzIGRlZmF1bHQgdmFsdWVzIG1pZ2h0IGJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0aWN1bGFyIHNhbXBsZSBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGFuZCBob3cgaXRzIGJlaGF2aW9yIGNhbiBiZSBtb2RpZmllZCB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzI5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgdGhlIEtjb25maWcgRmlsZSBmb3IgdGhlIERhbW9uIFNhbXBsZSoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBjb25maWd1cmF0aW9uLCB0aGlzIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgd2hlbiBleHBsb3JpbmcgYSBuZXcgc2FtcGxlIGxpa2UgJiMzNDtkYW1vbi4mIzM0OyBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zIGRlZmluZWQgaGVyZSB0aGF0IGNvbnRyb2wgd2hldGhlciBEYW1vbiBpcyBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIGJ1aWx0IGFzIGEgbW9kdWxlLCBvciBldmVuIGNvbXBsZXRlbHkgZGlzYWJsZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIGFueSBkZWZhdWx0IHNldHRpbmdzLCBhbmQgb2YgY291cnNlLCB0aGUgdXNlci1mYWNpbmcgc3ltYm9scyB0aGF0IHdpbGwgYmUgZXhwb3NlZCBpbiB0aGUgYC5jb25maWdgIGZpbGUuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhlIERhbW9uIHNhbXBsZSBhbmQgaG93IGl0IGludGVncmF0ZXMgKG9yIGRvZXNuJiMzOTt0KSB3aXRoIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlIHRvIHdvcmsgZnJvbS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0FNUExFX0RBTU9OX01USUVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZz0xNz1jb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDY5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBgU0FNUExFX0RBTU9OX01USUVSYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTQU1QTEVfREFNT05fTVRJRVJgLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc2ltcGxlIGV4ZXJjaXNlIGluIGxvb2tpbmcgdXAgYSBtYW5pZmVzdCBmaWxlLCB0aG91Z2guIEkgbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGluIGxheWVycy4gRmlyc3QsIEkgbmVlZCB0byBjb25zaWRlciBhbGwgcG9zc2libGUgZGVwZW5kZW5jaWVzLCBib3RoIGRpcmVjdCBhbmQgaW5kaXJlY3QuIFdoYXQgYXJlIHRoZSBvYnZpb3VzIGxpYnJhcmllcywgbW9kdWxlcywgYW5kIHNlcnZpY2VzIHRoYXQgaXQgZXhwbGljaXRseSBjYWxscz8gVGhlbiwgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIHRocm91Z2ggY29uZmlndXJhdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGFwcGFyZW50IGZyb20gdGhlIGNvZGUgaXRzZWxmPyBJIGFsc28gbmVlZCB0byB0aGluayBhYm91dCBydW50aW1lIGRlcGVuZGVuY2llcyAtIGV4dGVybmFsIHNlcnZpY2VzIGl0IG1pZ2h0IGNvbW11bmljYXRlIHdpdGguIAoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggZGVwZW5kZW5jeS4gQSBsb3ctbGV2ZWwgbGlicmFyeSBjb3VsZCBtZWFuIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGlmIGl0IGlzbiYjMzk7dCBvcHRpbWl6ZWQsIHdoZXJlYXMgYSBkZXBlbmRlbmN5IG9uIGFuIGV4dGVybmFsIEFQSSBjb3VsZCBpbnRyb2R1Y2Ugc3RhYmlsaXR5IG9yIGxhdGVuY3kgaXNzdWVzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHZlcnNpb24gY29tcGF0aWJpbGl0eSBhcyB3ZWxsLiBXaWxsIHRoZXNlIGRlcGVuZGVuY2llcyBjcmVhdGUgY29uZmxpY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBvciB3aXRoIGZ1dHVyZSBkZXZlbG9wbWVudD8KCkkmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIG1ldGhvZHMsIHRyYWNpbmcgdGhlIGNhbGwgc3RhY2tzIGFuZCBpbnNwZWN0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG1vcmUgZXNvdGVyaWMgb25lcywgaWYgbmVlZGVkLiBUaGVuIEnigJlsbCBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbWFwIG9mIHdoYXQgbWlnaHQgaGFwcGVuIGlmIG9uZSBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgZmFpbHMg4oCTIHdoYXQgYXJlIHRoZSBmYXVsdC10b2xlcmFudCBtZWFzdXJlcyBpbiBwbGFjZSwgYW5kIHdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY2FzY2FkaW5nIGZhaWx1cmVzPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG4gIDMxOlx0XHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9QQUREUlxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgVGhlIG1vZHVsZSBhc3N1bWVzIHRoZSBzeXN0ZW0gaXMgY29uc3RydWN0ZWQgd2l0aCB0d28gTlVNQSBub2RlcyxcbiAgMzc6XHRcdCAgd2hpY2ggc2VlbXMgYXMgbG9jYWwgYW5kIHJlbW90ZSBub2RlcyB0byBhbGwgQ1BVcy4gIEZvciBleGFtcGxlLFxuICAzODpcdFx0ICBub2RlMCBpcyBmb3IgRERSNSBEUkFNcyBjb25uZWN0ZWQgdmlhIERJTU0sIHdoaWxlIG5vZGUxIGlzIGZvciBERFI0XG4gIDM5Olx0XHQgIERSQU1zIGNvbm5lY3RlZCB2aWEgQ1hMLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTkzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyBmb2N1c2VkIG9uIHRob3NlIGBEQU1PTmAgY29uZmlndXJhdGlvbnMg4oCTIGBEQU1PTmAsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9MUlVfU09SVGAsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYC4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBpbnRlcnBsYXksIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIHBhdGNoIGluIHF1ZXN0aW9uLiBNeSBtYWluIGNvbmNlcm4gaXMgdGhhdCB0aGVzZSBjb25maWd1cmF0aW9ucyBkZWZpbmUgdGhlIHNjb3BlIGFuZCBwYXJhbWV0ZXJzIG9mIHRoZSBEQU1PTiBtb25pdG9yaW5nIGFuZCBhY3Rpb25pbmcsIHNvIGFueSBjaGFuZ2VzIGludm9sdmluZyB0aGVtIGlzIHNpZ25pZmljYW50LCBldmVuIGlmIHNlZW1pbmdseSBtaW5vci4KClRoZSBwYXRjaCYjMzk7cyBjb3JlIGNoYW5nZSBpcyB0d29mb2xkLiBGaXJzdCwgaXQgcmVtb3ZlcyBhIGNoZWNrIHdpdGhpbiBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYC4gVGhpcyBkZXNlcnZlcyBpbW1lZGlhdGUgYXR0ZW50aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhhdCBjaGVjayB3YXMgdGhlcmUgaW5pdGlhbGx5IGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9mIGl0cyByZW1vdmFsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQgbWF5IGhhdmUgYmVlbiBhZGRlZCBmb3IgYSByZWFzb24gYW5kIHRodXMgaXRzIHJlbW92YWwgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBjYXJlZnVsbHkgZXZhbHVhdGUuIFRoaXMgYWZmZWN0cyB0aGUgbG9naWMgb2YgYWRkaW5nIHF1b3RhIGdvYWxzLCB3aGljaCBpcyBmdW5kYW1lbnRhbCB0byBEQU1PTiYjMzk7cyBvcGVyYXRpb24uCgpTZWNvbmQsIHRoZSBtb2RpZmljYXRpb24gdG8gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCB0byByZXR1cm4gYC1FSU5WQUxgIGlmIGBzcmMtJmd0O3RhcmdldF92YWx1ZWAgaXMgMCBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGlzIGV4cGxpY2l0bHkgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBxdW90YSBnb2FsIGNvbW1pdG1lbnQgbG9naWMuIFJldHVybmluZyBgLUVJTlZBTGAgaW5kaWNhdGVzIGEgdmFsaWRhdGlvbiBmYWlsdXJlIG9yIGFuIGludmFsaWQgaW5wdXQsIGltcGx5aW5nIHRoZSBjb2RlIG5vdyBjb25zaWRlcnMgYSB6ZXJvIGB0YXJnZXRfdmFsdWVgIGFuIGVycm9yIGNvbmRpdGlvbiB3aGVyZSBpdCB3YXNuJiMzOTt0IGJlZm9yZS4gSXQgaXMgbGlrZWx5IGEgZ29vZCBjaGFuZ2UsIGVuc3VyaW5nIHRoYXQgYSB2YWxpZCB0YXJnZXQgdmFsdWUgaXMgcHJvdmlkZWQgdG8gcHJldmVudCBmdXR1cmUsIHVuZXhwZWN0ZWQgaXNzdWVzLgoKTm93LCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucywgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIGV4YW1pbmUgdGhlIGNvZGUgYXJvdW5kIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgYW5kIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb250ZXh0IG9mIHRoaXMgY2hhbmdlIGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBxdW90YSBtYW5hZ2VtZW50IGFuZCBvdmVyYWxsIERBTU9OIGJlaGF2aW9yLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhlIHRhcmdldCB2YWx1ZSBpcyBzZXQsIHdoZXJlIGl0IGNvbWVzIGZyb20sIGFuZCB3aGF0IGNvbnNlcXVlbmNlcyB0aGUgbmV3IGAtRUlOVkFMYCByZXR1cm4gaGFzIHVwIHRoZSBjYWxsIGNoYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTExMzk9c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE1My0vKipcbm1tL2RhbW9uL2NvcmUuYzoxMTU0OiAqIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscygpIC0gQ29tbWl0IERBTU9TIHF1b3RhIGdvYWxzIHRvIGFub3RoZXIgcXVvdGEuXG5tbS9kYW1vbi9jb3JlLmMtMTE1NS0gKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PUyBxdW90YS5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTY1OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExNjYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMTk3PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIwMy1cdGRzdC1cdTAwM2VzeiA9IHNyYy1cdTAwM2Vzejtcbm1tL2RhbW9uL2NvcmUuYzoxMjA0Olx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKGRzdCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjA1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUxMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKlRyYWNpbmcgdGhlIFF1b3RhIExvZ2ljKioKCkFscmlnaHQsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhpcyBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0byB0cmFjZSBpdHMgY2FsbCBzdGFjay4gT2theSwgc28gaXQmIzM5O3MgY2FsbGVkIGJ5IGBkYW1vc19jb21taXRfcXVvdGFgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBuYW1pbmcgY29udmVudGlvbiB0byBicmVhayB0aGlzIHVwLiBBbmQgKnRoYXQqIGZ1bmN0aW9uLCBgZGFtb3NfY29tbWl0X3F1b3RhYCwgaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGBkYW1vc19jb21taXRgLiBSaWdodCwgc28gdGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXc7IHRoZSBxdW90YSBnb2FscyBjb21wdXRhdGlvbiBpcyBwYXJ0IG9mIHRoZSBxdW90YSBsb2dpYywgd2hpY2ggaXMgYW4gaW50ZWdyYWwgcGFydCBvZiB0aGUgb3ZlcmFsbCBjb21taXQgcHJvY2Vzcy4gVGhpcyBnaXZlcyBtZSBhIG1hcCBvZiB0aGUgbGFuZHNjYXBlOyBOb3csIEkgY2FuIHN0YXJ0IHRvIGZvcm11bGF0ZSBhIGh5cG90aGVzaXMgYWJvdXQgd2hhdCB0aGUgZGlmZmVyZW50IGdvYWxzIGl0IHVzZXMgYXJlIGluIHRoZSBvdmVyYWxsIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb3NfY29tbWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xMTA4PXN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbnRoX3F1b3RhX2dvYWwoXG4tLVxubW0vZGFtb24vY29yZS5jLTExMjAtXG5tbS9kYW1vbi9jb3JlLmM6MTEyMTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihcbm1tL2RhbW9uL2NvcmUuYy0xMTIyLVx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTM4LVxubW0vZGFtb24vY29yZS5jOjExMzk6c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy0xMTQwLVx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTQ4LVx0Lyoga2VlcCBsYXN0X3BzaV90b3RhbCBhcyBpcywgc2luY2UgaXQgd2lsbCBiZSB1cGRhdGVkIGluIG5leHQgY3ljbGUgKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTQ5Olx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTExNTAtXHRyZXR1cm4gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE1My0vKipcbm1tL2RhbW9uL2NvcmUuYzoxMTU0OiAqIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscygpIC0gQ29tbWl0IERBTU9TIHF1b3RhIGdvYWxzIHRvIGFub3RoZXIgcXVvdGEuXG5tbS9kYW1vbi9jb3JlLmMtMTE1NS0gKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PUyBxdW90YS5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTY1OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExNjYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTcyLVx0XHRpZiAoc3JjX2dvYWwpIHtcbm1tL2RhbW9uL2NvcmUuYzoxMTczOlx0XHRcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMTE3NC1cdFx0XHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTg2LVx0XHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vY29yZS5jOjExODc6XHRcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMTE4OC1cdFx0aWYgKGVycikge1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTk2LVxubW0vZGFtb24vY29yZS5jOjExOTc6c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExOTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjAzLVx0ZHN0LVx1MDAzZXN6ID0gc3JjLVx1MDAzZXN6O1xubW0vZGFtb24vY29yZS5jOjEyMDQ6XHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTEyMDUtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMjI4PXN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfb3BzX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjM5LVxubW0vZGFtb24vY29yZS5jOjEyNDA6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcl9hcmcoXG5tbS9kYW1vbi9jb3JlLmMtMTI0MS1cdFx0c3RydWN0IGRhbW9zX2ZpbHRlciAqZHN0LCBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEyNjAtXG5tbS9kYW1vbi9jb3JlLmM6MTI2MTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfZmlsdGVyKFxubW0vZGFtb24vY29yZS5jLTEyNjItXHRcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjY2LVx0ZHN0LVx1MDAzZWFsbG93ID0gc3JjLVx1MDAzZWFsbG93O1xubW0vZGFtb24vY29yZS5jOjEyNjc6XHRkYW1vc19jb21taXRfZmlsdGVyX2FyZyhkc3QsIHNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTI2OC19XG5tbS9kYW1vbi9jb3JlLmMtMTI2OS1cbm1tL2RhbW9uL2NvcmUuYzoxMjcwOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2NvcmVfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTI3MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyNzctXHRcdGlmIChzcmNfZmlsdGVyKVxubW0vZGFtb24vY29yZS5jOjEyNzg6XHRcdFx0ZGFtb3NfY29tbWl0X2ZpbHRlcihkc3RfZmlsdGVyLCBzcmNfZmlsdGVyKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjc5LVx0XHRlbHNlXG4tLVxubW0vZGFtb24vY29yZS5jLTEyOTEtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG5tbS9kYW1vbi9jb3JlLmM6MTI5MjpcdFx0ZGFtb3NfY29tbWl0X2ZpbHRlcl9hcmcobmV3X2ZpbHRlciwgc3JjX2ZpbHRlcik7XG5tbS9kYW1vbi9jb3JlLmMtMTI5My1cdFx0ZGFtb3NfYWRkX2ZpbHRlcihkc3QsIG5ld19maWx0ZXIpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjk3LVxubW0vZGFtb24vY29yZS5jOjEyOTg6c3RhdGljIGludCBkYW1vc19jb21taXRfb3BzX2ZpbHRlcnMoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxubW0vZGFtb24vY29yZS5jLTEyOTkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzA1LVx0XHRpZiAoc3JjX2ZpbHRlcilcbm1tL2RhbW9uL2NvcmUuYzoxMzA2Olx0XHRcdGRhbW9zX2NvbW1pdF9maWx0ZXIoZHN0X2ZpbHRlciwgc3JjX2ZpbHRlcik7XG5tbS9kYW1vbi9jb3JlLmMtMTMwNy1cdFx0ZWxzZVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzE5LVx0XHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vY29yZS5jOjEzMjA6XHRcdGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKG5ld19maWx0ZXIsIHNyY19maWx0ZXIpO1xubW0vZGFtb24vY29yZS5jLTEzMjEtXHRcdGRhbW9zX2FkZF9maWx0ZXIoZHN0LCBuZXdfZmlsdGVyKTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTM1Mj1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9wcm9iZV9wYXJhbXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzgwLS8qXG5tbS9kYW1vbi9jb3JlLmM6MTM4MTogKiBkYW1vc19jb21taXRfZGVzdHMoKSAtIENvcHkgbWlncmF0aW9uIGRlc3RpbmF0aW9ucyBmcm9tIEBzcmMgdG8gQGRzdC5cbm1tL2RhbW9uL2NvcmUuYy0xMzgyLSAqIEBkc3Q6XHREZXN0aW5hdGlvbiBzdHJ1Y3R1cmUgdG8gdXBkYXRlLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzk2LSAqL1xubW0vZGFtb24vY29yZS5jOjEzOTc6c3RhdGljIGludCBkYW1vc19jb21taXRfZGVzdHMoc3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xMzk4LVx0XHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDI3LVxubW0vZGFtb24vY29yZS5jOjE0Mjg6c3RhdGljIGludCBkYW1vc19jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTQyOS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0MzEtXG5tbS9kYW1vbi9jb3JlLmM6MTQzMjpcdGVyciA9IGRhbW9zX2NvbW1pdF9jb3JlX2ZpbHRlcnMoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTE0MzMtXHRpZiAoZXJyKVxubW0vZGFtb24vY29yZS5jLTE0MzQtXHRcdHJldHVybiBlcnI7XG5tbS9kYW1vbi9jb3JlLmM6MTQzNTpcdGVyciA9IGRhbW9zX2NvbW1pdF9vcHNfZmlsdGVycyhkc3QsIHNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTQzNi1cdGlmIChlcnIpXG4tLVxubW0vZGFtb24vY29yZS5jPTE0NDI9c3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fbnRoX3NjaGVtZShpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDUzLVxubW0vZGFtb24vY29yZS5jOjE0NTQ6c3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE0NTUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDYxLVxubW0vZGFtb24vY29yZS5jOjE0NjI6XHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGEoXHUwMDI2ZHN0LVx1MDAzZXF1b3RhLCBcdTAwMjZzcmMtXHUwMDNlcXVvdGEpO1xubW0vZGFtb24vY29yZS5jLTE0NjMtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDY4LVxubW0vZGFtb24vY29yZS5jOjE0Njk6XHRlcnIgPSBkYW1vc19jb21taXRfZGVzdHMoXHUwMDI2ZHN0LVx1MDAzZW1pZ3JhdGVfZGVzdHMsIFx1MDAyNnNyYy1cdTAwM2VtaWdyYXRlX2Rlc3RzKTtcbm1tL2RhbW9uL2NvcmUuYy0xNDcwLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQ3Mi1cbm1tL2RhbW9uL2NvcmUuYzoxNDczOlx0ZXJyID0gZGFtb3NfY29tbWl0X2ZpbHRlcnMoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTE0NzQtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNDgxPXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE0ODgtXHRcdGlmIChzcmNfc2NoZW1lKSB7XG5tbS9kYW1vbi9jb3JlLmM6MTQ4OTpcdFx0XHRlcnIgPSBkYW1vc19jb21taXQoZHN0X3NjaGVtZSwgc3JjX3NjaGVtZSk7XG5tbS9kYW1vbi9jb3JlLmMtMTQ5MC1cdFx0XHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTA2LVx0XHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vY29yZS5jOjE1MDc6XHRcdGVyciA9IGRhbW9zX2NvbW1pdChuZXdfc2NoZW1lLCBzcmNfc2NoZW1lKTtcbm1tL2RhbW9uL2NvcmUuYy0xNTA4LVx0XHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTA3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBEZWVwIGludG8gREFNT04gQ29tbWl0IENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkYW1vbl9jb21taXRfc2NoZW1lc2AuIEZyb20gdGhlIGNvZGUsIGl0JiMzOTtzIGNsZWFyIHRoaXMgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gREFNT04mIzM5O3MgY29tbWl0IHBoYXNlLiBJdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgZGFtb25fY29tbWl0X2N0eGAsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBhY3R1YWwgYXBwbGljYXRpb24gb2YgdGhlIGNvbW1pdCBvcGVyYXRpb25zLCBvbmNlIHRoZSBjb250ZXh0IGZvciB0aGUgY29tbWl0IGhhcyBiZWVuIGVzdGFibGlzaGVkLiBUaGlzIG1lYW5zIGl0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyBEQU1PTiBkZWNpZGVzICpob3cqIHRvIGNoYW5nZSBtZW1vcnkgc3RhdGVzIGJhc2VkIG9uIHRoZSBkZWNpc2lvbnMgbWFkZSBpbiB0aGUgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgKmluc2lkZSogYGRhbW9uX2NvbW1pdF9zY2hlbWVzYCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb250ZXh0IGRhdGEuIElzIGl0IGl0ZXJhdGluZyB0aHJvdWdoIGEgbGlzdCBvZiBzY2hlbWVzPyBBcmUgdGhlc2UgZGlmZmVyZW50IG9wdGltaXphdGlvbiBzdHJhdGVnaWVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBpbXBhY3RzIGhlcmU/IEkgbmVlZCB0byBsb29rIGRlZXBlciBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGFtb25fY29tbWl0X3NjaGVtZXNgIGFuZCBkZXRlcm1pbmUgaXRzIHBhcmFtZXRlcnMuIEkmIzM5O20gZ29pbmcgdG8gZGV0ZXJtaW5lIHdoYXQgc3RydWN0dXJlcyBhcmUgYmVpbmcgdXNlZCBhcyB3ZWxsLCBpbiBvcmRlciB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTE3Mjg9c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzYwLVxubW0vZGFtb24vY29yZS5jOjE3NjE6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTc2Mi17XG4tLVxubW0vZGFtb24vY29yZS5jPTE4MTk9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXG4tLVxubW0vZGFtb24vY29yZS5jLTE4MjYtXHRcdHJldHVybiBOVUxMO1xubW0vZGFtb24vY29yZS5jOjE4Mjc6XHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGRzdCk7XG5tbS9kYW1vbi9jb3JlLmMtMTgyOC1cdGlmIChlcnIpIHtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTgzNS0vKipcbm1tL2RhbW9uL2NvcmUuYzoxODM2OiAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLlxubW0vZGFtb24vY29yZS5jLTE4MzctICogQGRzdDpcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT04gY29udGV4dC5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg0Ny0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxODQ4OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE4NDkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODU1LVx0XHRyZXR1cm4gLUVOT01FTTtcbm1tL2RhbW9uL2NvcmUuYzoxODU2Olx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTE4NTctXHRpZiAoZXJyKVxubW0vZGFtb24vY29yZS5jLTE4NTgtXHRcdGdvdG8gb3V0O1xubW0vZGFtb24vY29yZS5jOjE4NTk6XHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTE4NjAtb3V0OlxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xOTQ1PXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTE5NjYtXG5tbS9kYW1vbi9jb3JlLmM6MTk2NzpzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTk2OC1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTk4ND1pbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk5NS1cbm1tL2RhbW9uL2NvcmUuYzoxOTk2Olx0XHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGN0eHNbaV0pO1xubW0vZGFtb24vY29yZS5jLTE5OTctXHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxNTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgREFNT04gU3lzZnMgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gYGRhbW9uX2NvbW1pdF9jdHhgIGlzIG91dCB0aGVyZSwgYmVpbmcgdXNlZCBieSB0aGUgc3lzZnMgaW50ZXJmYWNlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgd291bGQgYmUgaW4gdGhlIGNvcmUgc3lzZnMgZmlsZXMgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IGVpdGhlciBgbW0vZGFtb24vc3lzZnMuY2Agb3IsIGlmIHRoZSBjb250ZXh0IGlzIG1vcmUgYWJvdXQgdGhlIHNjaGVtYXMgdGhlbXNlbHZlcywgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiwgdXNhZ2UsIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXRhaWxzIGFib3V0IGBkYW1vbl9jb21taXRfY3R4YC4gSSBrbm93IHRoYXQgdGhlc2UgZmlsZXMgb2Z0ZW4gcHJvdmlkZSB0aGUgbGlua2FnZSBiZXR3ZWVuIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSAoc3lzZnMpIGFuZCB0aGUgREFNT04gY29yZS4gSSB3aWxsIGFsc28gYmUgbG9va2luZyBmb3IgdXNhZ2UgaW4gb3RoZXIgREFNT04gY29yZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xNzI4PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTc2MC1cbm1tL2RhbW9uL2NvcmUuYzoxNzYxOnN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE3NjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xODE5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODI2LVx0XHRyZXR1cm4gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYzoxODI3Olx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpO1xubW0vZGFtb24vY29yZS5jLTE4MjgtXHRpZiAoZXJyKSB7XG4tLVxubW0vZGFtb24vY29yZS5jLTE4MzUtLyoqXG5tbS9kYW1vbi9jb3JlLmM6MTgzNjogKiBkYW1vbl9jb21taXRfY3R4KCkgLSBDb21taXQgcGFyYW1ldGVycyBvZiBhIERBTU9OIGNvbnRleHQgdG8gYW5vdGhlci5cbm1tL2RhbW9uL2NvcmUuYy0xODM3LSAqIEBkc3Q6XHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXG4tLVxubW0vZGFtb24vY29yZS5jLTE4NDctICovXG5tbS9kYW1vbi9jb3JlLmM6MTg0ODppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xODQ5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg1NS1cdFx0cmV0dXJuIC1FTk9NRU07XG5tbS9kYW1vbi9jb3JlLmM6MTg1NjpcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xODU3LVx0aWYgKGVycilcbm1tL2RhbW9uL2NvcmUuYy0xODU4LVx0XHRnb3RvIG91dDtcbm1tL2RhbW9uL2NvcmUuYzoxODU5Olx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xODYwLW91dDpcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTk0NT1zdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTY2LVxubW0vZGFtb24vY29yZS5jOjE5Njc6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xubW0vZGFtb24vY29yZS5jLTE5NjgtXG4tLVxubW0vZGFtb24vY29yZS5jPTE5ODQ9aW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXG4tLVxubW0vZGFtb24vY29yZS5jLTE5OTUtXG5tbS9kYW1vbi9jb3JlLmM6MTk5NjpcdFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBjdHhzW2ldKTtcbm1tL2RhbW9uL2NvcmUuYy0xOTk3LVx0XHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0yNzE9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMzUtXHRcdGdvdG8gb3V0O1xubW0vZGFtb24vbHJ1X3NvcnQuYzozMzY6XHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGN0eCwgcGFyYW1fY3R4KTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzM3LW91dDpcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9MTk0PXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTI2Mi1cdFx0Z290byBvdXQ7XG5tbS9kYW1vbi9yZWNsYWltLmM6MjYzOlx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChjdHgsIHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMjY0LW91dDpcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIxMzE9c3RhdGljIGludCBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQodm9pZCAqZGF0YSlcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIxNDUtXHRcdHJldHVybiBQVFJfRVJSKHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9zeXNmcy5jOjIxNDY6XHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCBwYXJhbV9jdHgpO1xubW0vZGFtb24vc3lzZnMuYy0yMTQ3LVx0ZGFtb25fZGVzdHJveV9jdHgocGFyYW1fY3R4KTtcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9MTMwOT1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X2NvbW1pdF9jdHgoc3RydWN0IGt1bml0ICp0ZXN0KVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMzIyLVx0c3JjLVx1MDAzZW1pbl9yZWdpb25fc3ogPSA0MDk2O1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEzMjM6XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyksIDApO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEzMjQtXHRzcmMtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IDQwOTU7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTMyNTpcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKSwgLUVJTlZBTCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTMyNi1cdHNyYy1cdTAwM2VtaW5fcmVnaW9uX3N6ID0gNDA5Njtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMzI3LVx0c3JjLVx1MDAzZXBhdXNlID0gdHJ1ZTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMzI4Olx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpLCAwKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMzI5LVx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgZHN0LVx1MDAzZXBhdXNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4NjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEQU1PTiBDb21taXQgUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoIGhlcmUsIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgREFNT04gc3lzdGVtJiMzOTtzIGNvbW1pdCBtZWNoYW5pc20gaXMgdHJpZ2dlcmVkLiBJdCBsb29rcyBsaWtlIHRoZSBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBmdW5jdGlvbiBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgY2FsbGluZyBgZGFtb25fY29tbWl0X2N0eGAuIE5vdywgYmVjYXVzZSB0aGlzIGlzIHRoZSBzeXNmcyBpbnRlcmZhY2UsIGl0IG1lYW5zIHVzZXJzcGFjZSBjYW4gZGlyZWN0bHkgaW5mbHVlbmNlIHRoZSBleGVjdXRpb24gb2YgYGRhbW9uX2NvbW1pdF9jdHhgLCB3aGljaCB0aGVuIGxlYWRzIHRvIGBkYW1vbl9jb21taXRfcXVvdGFfZ29hbGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCBmb3IgZXh0ZXJuYWwgY29udHJvbC4KCkZ1cnRoZXJtb3JlLCBJJiMzOTt2ZSBub3RpY2VkIHRoYXQgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgIGFuZCBgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzYCBhbHNvIHRyaWdnZXIgdGhlIHNhbWUgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgYXJvdW5kIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgLCBpbiBgbW0vZGFtb24vc3lzZnMuY2AgdG8gYmV0dGVyIHNlZSB0aGUgY29udGV4dCBvZiB0aGVzZSBjYWxscywgYW5kIGhvdyB0aGUgb3ZlcmFsbCBjb21taXQgcHJvY2VzcyB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc3lzZnNfY29tbWl0X2lucHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTIxMjI9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX2J1aWxkX2N0eChcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIxMjUtLypcbm1tL2RhbW9uL3N5c2ZzLmM6MjEyNjogKiBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQoKSAtIENvbW1pdCB1c2VyIGlucHV0cyB0byBhIHJ1bm5pbmcga2RhbW9uZC5cbm1tL2RhbW9uL3N5c2ZzLmMtMjEyNy0gKiBAa2RhbW9uZDpcdFRoZSBrb2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBhc3NvY2lhdGVkIGtkYW1vbmQuXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMTMwLSAqL1xubW0vZGFtb24vc3lzZnMuYzoyMTMxOnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXG5tbS9kYW1vbi9zeXNmcy5jLTIxMzIte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjM2ND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM3Ni1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jOjIzNzc6XHRcdFx0XHRkYW1vbl9zeXNmc19jb21taXRfaW5wdXQsIGtkYW1vbmQpO1xubW0vZGFtb24vc3lzZnMuYy0yMzc4LVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFM6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTcwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogQSBCdWcgRml4IGluIFF1b3RhIE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBzZWVpbmcgaXMgdGhhdCB0aGUgc3lzZnMgaW50ZXJmYWNlIGlzIHJlYWNoYWJsZSwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBmdW5jdGlvbi4gSXQmIzM5O3Mgbm93IGdvaW5nIHRvIHJldHVybiBgLUVJTlZBTGAgaWYgdGhlIGBzcmMtJmd0O3RhcmdldF92YWx1ZWAgaXMgemVyby4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaXQgaW1tZWRpYXRlbHkgc2V0cyBvZmYgYWxhcm0gYmVsbHMgYWJvdXQgcG90ZW50aWFsIGFyaXRobWV0aWMgaXNzdWVzLgoKUmlnaHQsIHRoZSByZWFzb24gZm9yIHRoaXMgaXMgY2xlYXJseSBzdGF0ZWQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlOiAmIzM0O3plcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKCkmIzM0Oy4gQmluZ28hIFNvLCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGJ1ZyBmaXguIEEgZGl2aXNpb24tYnktemVybywgYWx3YXlzIGEgZnVuIG9uZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gYWRkcmVzcyB0aGF0IHNjZW5hcmlvLgoKTm93LCBteSBuZXh0IG1vdmUgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRhbW9zX3F1b3RhX3N0b3JlYCwgb3IgYW55dGhpbmcgc2ltaWxhciB0byBpdCwgYW5kIHRyYWNlIHRoZSB2YWx1ZSB0byBjb25maXJtIHRoaXMgYXMgYSBidWcuIEkga25vdyB0aGF0IEkgbXVzdCBsb29rIGNsb3NlbHkgZm9yIGhvdyBgc3JjLSZndDt0YXJnZXRfdmFsdWVgIGlzIHVzZWQsIHNwZWNpZmljYWxseSBpbiBhIGRpdmlzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9zX3F1b3RhX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5NzcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgU3VzcGVjdCBEaXZpc2lvbiBieSBaZXJvKioKCk9rYXksIGxldCBtZSBzZWUuLi4gdGhlIGNvbW1pdCBtZXNzYWdlIGZsYWdzIGEgZGl2aXNpb24gYnkgemVybyBlcnJvciB3aXRoaW4gYGRhbW9zX3F1b3RhX3N0b3JlKClgIHdoZW4gdGhlIHRhcmdldCB2YWx1ZSBpcyB6ZXJvLiBCdXQsIHdhaXQgYSBtaW51dGUsIHRoZSBhY3R1YWwgcGF0Y2ggc2hvd3MgYSBjaGVjayBmb3IgbnVsbCBwb2ludGVycywgYG5vZGUwX21lbV91c2VkX2JwYCBhbmQgYG5vZGUwX21lbV9mcmVlX2JwYCwgYW5kIGEgYGdvdG8gZnJlZV9vdXQ7YCBpZiBlaXRoZXIgYXJlIG51bGwuIFRoYXQgZG9lc24mIzM5O3QgZGlyZWN0bHkgc2NyZWFtICYjMzQ7ZGl2aXNpb24gYnkgemVybyYjMzQ7IGluIGBkYW1vc19xdW90YV9zdG9yZSgpYC4gSG1tLCB0aGUgY29tbWVudCBpdHNlbGYgYXBwZWFycyB0byBiZSBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4uLiBJbnRlcmVzdGluZy4KCkl0IHNlZW1zIEkmIzM5O20gYmFya2luZyB1cCB0aGUgd3JvbmcgdHJlZS4gVGhpcyBsaWtlbHkgaW1wbGllcyB0aGUgcHJvYmxlbSBzdGVtcyBmcm9tIGEgZGlmZmVyZW50IGZ1bmN0aW9uLCBwb3RlbnRpYWxseSBhIGZ1bmN0aW9uIHNpbWlsYXIgdG8gYGRhbW9zX3F1b3RhX3Njb3JlYCwgb3Igd2l0aGluIGFuIGluZGlyZWN0IGNhbGwgY2hhaW4uIFRoZSBjaGVjayB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGlzIGF0dGVtcHRpbmcgdG8gcHJldmVudCB0aGUgZGl2aXNpb24uIE5vdyBJIG5lZWQgdG8gdHJhY2sgZG93biBleGFjdGx5ICp3aGVyZSogdGhlIGRpdmlzaW9uIGlzIG9jY3VycmluZywgaWYgbm90IGluIHRoZSB0YXJnZXQgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxpbmcgc2VxdWVuY2UgYW5kIGxvb2sgYXQgdGhlIHZhcmlhYmxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGFyZ2V0X3ZhbHVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz02Mjc9c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jLTYyOC1cdFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXG5tbS9kYW1vbi9jb3JlLmM6NjI5Olx0XHR1bnNpZ25lZCBsb25nIHRhcmdldF92YWx1ZSlcbm1tL2RhbW9uL2NvcmUuYy02MzAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy02MzYtXHRnb2FsLVx1MDAzZW1ldHJpYyA9IG1ldHJpYztcbm1tL2RhbW9uL2NvcmUuYzo2Mzc6XHRnb2FsLVx1MDAzZXRhcmdldF92YWx1ZSA9IHRhcmdldF92YWx1ZTtcbm1tL2RhbW9uL2NvcmUuYy02MzgtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZnb2FsLVx1MDAzZWxpc3QpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMTM5PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4tLVxubW0vZGFtb24vY29yZS5jLTExNDEte1xubW0vZGFtb24vY29yZS5jOjExNDI6XHRpZiAoIXNyYy1cdTAwM2V0YXJnZXRfdmFsdWUpXG5tbS9kYW1vbi9jb3JlLmMtMTE0My1cdFx0cmV0dXJuICAtRUlOVkFMO1xubW0vZGFtb24vY29yZS5jLTExNDQtXHRkc3QtXHUwMDNlbWV0cmljID0gc3JjLVx1MDAzZW1ldHJpYztcbm1tL2RhbW9uL2NvcmUuYzoxMTQ1Olx0ZHN0LVx1MDAzZXRhcmdldF92YWx1ZSA9IHNyYy1cdTAwM2V0YXJnZXRfdmFsdWU7XG5tbS9kYW1vbi9jb3JlLmMtMTE0Ni1cdGlmIChkc3QtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQpXG4tLVxubW0vZGFtb24vY29yZS5jPTExNjU9aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTExODMtXHRcdG5ld19nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoXG5tbS9kYW1vbi9jb3JlLmM6MTE4NDpcdFx0XHRcdHNyY19nb2FsLVx1MDAzZW1ldHJpYywgc3JjX2dvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKTtcbm1tL2RhbW9uL2NvcmUuYy0xMTg1LVx0XHRpZiAoIW5ld19nb2FsKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMDU3PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3F1b3RhX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzA2Ni1cdFx0XHRcdG11bHRfZnJhYyhnb2FsLVx1MDAzZWN1cnJlbnRfdmFsdWUsIDEwMDAwLFxubW0vZGFtb24vY29yZS5jOjMwNjc6XHRcdFx0XHRcdGdvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKSk7XG5tbS9kYW1vbi9jb3JlLmMtMzA2OC1cdH1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTIxNT1zdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTctXHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfbWV0cmljIG1ldHJpYztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjE4Olx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxOS1cdHVuc2lnbmVkIGxvbmcgY3VycmVudF92YWx1ZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTI5MT1zdGF0aWMgc3NpemVfdCB0YXJnZXRfbWV0cmljX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzA5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMTA6c3RhdGljIHNzaXplX3QgdGFyZ2V0X3ZhbHVlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxMS1cdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMTUtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxNjpcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7JWx1XFxuXCYjMzQ7LCBnb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxNy19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzE5OnN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzIwLVx0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzIzLVx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMjQ6XHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZnb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyNS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTQxNT1zdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyID1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxNy1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDE4OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF90YXJnZXRfdmFsdWVfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOTpcdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X3ZhbHVlLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIwLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDMwPXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vc19zeXNmc19xdW90YV9nb2FsX2F0dHJzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQzMS1cdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzMjpcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMzLVx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlX2F0dHIuYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjg0Nz1zdGF0aWMgaW50IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjg1Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODU4Olx0XHRpZiAoIXN5c2ZzX2dvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NTktXHRcdFx0Y29udGludWU7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NjEtXHRcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChzeXNmc19nb2FsLVx1MDAzZW1ldHJpYyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODYyOlx0XHRcdFx0c3lzZnNfZ29hbC1cdTAwM2V0YXJnZXRfdmFsdWUpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NjMtXHRcdGlmICghZ29hbClcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9NzUwPXN0YXRpYyB2b2lkIGRhbW9zX3Rlc3RfY29tbWl0X3F1b3RhX2dvYWxfZm9yKHN0cnVjdCBrdW5pdCAqdGVzdCxcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNzYwLVx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRzdC1cdTAwM2VtZXRyaWMsIHNyYy1cdTAwM2VtZXRyaWMpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjc2MTpcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkc3QtXHUwMDNldGFyZ2V0X3ZhbHVlLCBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03NjItXHRpZiAoc3JjLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUKVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD03ODE9c3RhdGljIHZvaWQgZGFtb3NfdGVzdF9jb21taXRfcXVvdGFfZ29hbChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc4NC1cdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUyxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo3ODU6XHRcdC50YXJnZXRfdmFsdWUgPSAxMDAwLFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc4Ni1cdFx0LmN1cnJlbnRfdmFsdWUgPSAxMjMsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc5Mi1cdFx0XHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo3OTM6XHRcdFx0LnRhcmdldF92YWx1ZSA9IDc4OSxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03OTQtXHRcdFx0LmN1cnJlbnRfdmFsdWUgPSAxMn0pO1xuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03OTctXHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6Nzk4Olx0XHRcdC50YXJnZXRfdmFsdWUgPSAzNDUsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNzk5LVx0XHRcdC5jdXJyZW50X3ZhbHVlID0gNjc4LFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MDQtXHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlAsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODA1Olx0XHRcdC50YXJnZXRfdmFsdWUgPSAxMixcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MDYtXHRcdFx0LmN1cnJlbnRfdmFsdWUgPSAzNDUsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgxMS1cdFx0XHQubWV0cmljID0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQLFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjgxMjpcdFx0XHQudGFyZ2V0X3ZhbHVlID0gNDU2LFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgxMy1cdFx0XHQuY3VycmVudF92YWx1ZSA9IDU2Nyxcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODE5LVx0XHRcdC5tZXRyaWMgPSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODIwOlx0XHRcdC50YXJnZXRfdmFsdWUgPSA4OTAsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODIxLVx0XHRcdC5jdXJyZW50X3ZhbHVlID0gOTAxLFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MjctXHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUyxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo4Mjg6XHRcdFx0LnRhcmdldF92YWx1ZSA9IDIzNCxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MjktXHRcdFx0LmN1cnJlbnRfdmFsdWUgPSAzNDUsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTgzND1zdGF0aWMgdm9pZCBkYW1vc190ZXN0X2NvbW1pdF9xdW90YV9nb2Fsc19mb3Ioc3RydWN0IGt1bml0ICp0ZXN0LFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04NTMtXHRcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChkc3RfZ29hbHNbaV0ubWV0cmljLFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjg1NDpcdFx0XHRcdGRzdF9nb2Fsc1tpXS50YXJnZXRfdmFsdWUpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTg1NS1cdFx0aWYgKCFnb2FsKVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04NzUtXHRcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBnb2FsLVx1MDAzZW1ldHJpYywgc3JjX2dvYWxzW2ldLm1ldHJpYyk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODc2Olx0XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZ29hbC1cdTAwM2V0YXJnZXRfdmFsdWUsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODc3Olx0XHRcdFx0c3JjX2dvYWxzW2kmIzQzOyYjNDM7XS50YXJnZXRfdmFsdWUpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTg3OC1cdH1cbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9ODg4PXN0YXRpYyB2b2lkIGRhbW9zX3Rlc3RfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODk0LVx0XHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODk1Olx0XHRcdFx0LnRhcmdldF92YWx1ZSA9IDEyMyxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04OTYtXHRcdFx0XHR9LFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC05MDEtXHRcdFx0XHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo5MDI6XHRcdFx0XHQudGFyZ2V0X3ZhbHVlID0gMjM0LFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwMy1cdFx0XHRcdH0sXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwOC1cdFx0XHRcdC5tZXRyaWMgPSBEQU1PU19RVU9UQV9VU0VSX0lOUFVULFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjkwOTpcdFx0XHRcdC50YXJnZXRfdmFsdWUgPSAzNDUsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtOTEwLVx0XHRcdFx0fSxcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtOTE1LVx0XHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6OTE2Olx0XHRcdFx0LnRhcmdldF92YWx1ZSA9IDQ1Nixcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC05MTctXHRcdFx0XHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTUwMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gUXVvdGEgU2NvcmUgQnVnZml4KioKCk9rYXksIHNvIHRoZSBkaXZpc2lvbiBieSB6ZXJvIGlzIGhhcHBlbmluZyBpbnNpZGUgYGRhbW9zX3F1b3RhX3Njb3JlYC4gSSBzZWUgaXQgY2xlYXJseToKCmBgYGMKCQkJc2NvcmUgPSBtYXgoc2NvcmUsCgkJCQltdWx0X2ZyYWMoZ29hbC0mZ3Q7Y3VycmVudF92YWx1ZSwgMTAwMDAsCgkJCQkJZ29hbC0mZ3Q7dGFyZ2V0X3ZhbHVlKSk7CmBgYAoKSWYgYGdvYWwtJmd0O3RhcmdldF92YWx1ZWAgaXMgemVybywgd2UmIzM5O3JlIGRpdmlkaW5nIGJ5IHplcm8uIFNpbXBsZSBlbm91Z2guIFRoZSBwcm9wb3NlZCBwYXRjaCBhZGRyZXNzZXMgdGhpcyBieSBoYXZpbmcgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCByZXR1cm4gYC1FSU5WQUxgIGlmIHRoZSBgc3JjLSZndDt0YXJnZXRfdmFsdWVgIGlzIHplcm8sIHdoaWNoIHNlZW1zIHJlYXNvbmFibGUuCgpOb3csIGxldCYjMzk7cyB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgdGhlIGZ1bGwgcGljdHVyZS4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpcyBjYWxsZWQgZnJvbSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCwgd2hpY2ggdGhlbiBmZWVkcyBpbnRvIGBkYW1vc19jb21taXRfcXVvdGFgLCB3aGljaCBpcyBjYWxsZWQgYnkgYGRhbW9zX2NvbW1pdGAsIHdoaWNoIGlzIHN1YnNlcXVlbnRseSBjYWxsZWQgZnJvbSBgZGFtb25fY29tbWl0X3NjaGVtZXNgLCBhbmQgZmluYWxseSwgYGRhbW9uX2NvbW1pdF9jdHhgLiBUaGUgY3J1Y2lhbCBlbnRyeSBwb2ludCBpcyBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCwgd2hpY2ggY2FsbHMgYGRhbW9uX2NvbW1pdF9jdHhgLiBBaCwgc28gYSB1c2VyIGNhbiB3cml0ZSBkaXJlY3RseSB0byBgdGFyZ2V0X3ZhbHVlYCB0aHJvdWdoIHN5c2ZzLCBhbmQgdGhlbiB0cmlnZ2VyIGBjb21taXRfaW5wdXRgLCB3aGljaCBwcmV2aW91c2x5IGFsbG93ZWQgYHRhcmdldF92YWx1ZWAgdG8gYmUgc2V0IHRvIHplcm8sIGFuZCB0aGUgZGl2aXNpb24gYnkgemVybyB3b3VsZCBvY2N1ciBpbiBgZGFtb3NfcXVvdGFfc2NvcmVgLiBOb3cgaXQgY29ycmVjdGx5IHJldHVybnMgYC1FSU5WQUxgLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBidWcgZml4LCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSB1c2VyLXJlYWNoYWJsZSB2aWEgdGhlIHN5c2ZzIGludGVyZmFjZS4gVGhlIGV4aXN0ZW5jZSBvZiB0aGUgc3lzZnMgaW50ZXJmYWNlIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19EQU1PTl9TWVNGU2AuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvbiB0aGF0IGNvbmZpZyBvcHRpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgaW1wbGljYXRpb25zIGZvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1NZU0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTU2PWNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS2NvbmZpZyBMYWJ5cmludGgqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7QWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gcm91Z2hseSBsaW5lIDY4LiYjMzQ7IFdoeSB0aGF0IGxpbmU/IFdlbGwsIEkgZG9uJiMzOTt0IGtub3cgeWV0LCBidXQgaXQmIzM5O3MgYSBzdGFydGluZyBwb2ludC4gSXQgY291bGQgYmUgd2hlcmUgYSBzcGVjaWZpYyBmZWF0dXJlIGlzIGRlZmluZWQsIGEgY3JpdGljYWwgdmFyaWFibGUgaXMgZGVjbGFyZWQsIG9yIHBlcmhhcHMgd2hlcmUgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgc2V0cyB1cCBzb21ldGhpbmcgcmVsZXZhbnQuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSB0cmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDczNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEQU1PTiBRdW90YSBHb2FsIENoYW5nZXMgYW5kIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBtb2RpZmllcyB0aGUgREFNT04gcXVvdGEgZ29hbCBoYW5kbGluZy4gSXQgbG9va3MgbGlrZSBpdCB0b3VjaGVzIGBEQU1PTl9TWVNGU2AsIHdoaWNoLCBuYXR1cmFsbHksIGRlcGVuZHMgb24gYERBTU9OYCBhbmQgYFNZU0ZTYC4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgIGFuZCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBzcGVjaWZpY2FsbHkuCgpJbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AsIHRoZXJlJiMzOTtzIGFuIGludGVyZXN0aW5nIHJlbW92YWwuIFRoYXQgY2hlY2sgYGlmICgxMDAwMCAmbHQ7IGFjdGl2ZV9tZW1fYnApYCBpcyBnb25lLiBJIGluaXRpYWxseSB0aG91Z2h0IGl0IHdhcyBiZWNhdXNlIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAgZGlkbiYjMzk7dCBjYXJlIGFib3V0IHRoZSB1cHBlciBib3VuZCwgYnV0IHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBBZnRlciBhIGxpdHRsZSBtb3JlIGRpZ2dpbmcsIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgKm5vdyogaGFuZGxlcyB0aGUgaW52YWxpZCB2YWx1ZSBjaGVjaywgcmV0dXJuaW5nIGAtRUlOVkFMYCBpZiBgdGFyZ2V0X3ZhbHVlYCBpcyAwLiBTbyB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFib3V0IHNoaWZ0aW5nIHRoZSBlcnJvciBjaGVjayBmcm9tIHRoZSBxdW90YSBnb2FsICphZGRpdGlvbiogZnVuY3Rpb24gdG8gdGhlICpjb21taXQqIGZ1bmN0aW9uLiBDb25zZXF1ZW50bHksIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgYGFjdGl2ZV9tZW1fYnBgIGlzIG5vbi16ZXJvIHdoZW4gdGhlIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAgaXMgY2FsbGVkLgoKVGhlIHNpdHVhdGlvbiBpcyB2ZXJ5IHNpbWlsYXIgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFRoYXQgY2hlY2sgZm9yIHplcm8gYG5vZGUwX21lbV91c2VkX2JwYCBvciBgbm9kZTBfbWVtX2ZyZWVfYnBgIGlzIGFsc28gZ29uZS4gSXQmIzM5O3MgdGhlIHNhbWUgcmF0aW9uYWxlIGFzIGBtbS9kYW1vbi9scnVfc29ydC5jYDogdGhlIHJlc3BvbnNpYmlsaXR5IGhhcyBzaGlmdGVkIHRvIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAsIHdoaWNoIG5vdyByZXR1cm5zIGAtRUlOVkFMYCBpZiBgdGFyZ2V0X3ZhbHVlYCBpcyAwLiBXYWl0LCBgZGFtb3NfbmV3X3F1b3RhX2dvYWxgIGRvZXNuJiMzOTt0IGFjdHVhbGx5ICpyZXR1cm4qIGAtRUlOVkFMYCwgaXQganVzdCBhbGxvY2F0ZXMgdGhlIGRhdGEuIFRoZSBlcnJvciBpcyBvbmx5IHBvc3NpYmxlIGF0IHRoZSBjb21taXQgc3RlcCB3aGVuIGBkYW1vbl9jb21taXRfY3R4YCBpcyBjYWxsZWQsIGJlY2F1c2UgaXQgZXZlbnR1YWxseSBjYWxscyBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgLiBMZXQmIzM5O3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGBtdGllci5jYCBzYW1wbGUsIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBidWlsZHMgdGhlIGNvbnRleHQgYW5kIHRoZW4gYGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydGAga2lja3MgdGhpbmdzIG9mZiB3aXRoIGEgY2FsbCB0byBgZGFtb25fc3RhcnRgLiBBbmQgYGRhbW9uX3N0YXJ0YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSBjYWxscyBgX19kYW1vbl9jb21taXRfY3R4YCB0byB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVycywgc28geWVzLCB0aGUgY2hlY2sgaXMgbm93IHJlZHVuZGFudC4KClRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIGZvY3VzZWQgYXJvdW5kIGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBhbmQgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AuIFRoaXMgZGVmaW5pdGVseSBsb29rcyBsaWtlIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBXZSBjYW4gZXhwbG9yZSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIGFkZGVkIGVycm9yIGhhbmRsaW5nLgoKVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb25zIEkmIzM5O20gbW9zdCBpbnRlcmVzdGVkIGluIGZvciBmdXp6aW5nIGFyZToKCiogICBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgCiogICBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYAoqICAgYGRhbW9uX2NvbW1pdF9jdHhgCiogICBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YAoqICAgYGRhbW9zX3F1b3RhX3Njb3JlYAoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlaXIgdmlzaWJpbGl0eS4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AgYW5kIGBkYW1vbl9jb21taXRfY3R4YCBhcmUgbm9uLXN0YXRpYy4gYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAgYW5kIGBkYW1vc19xdW90YV9zY29yZWAgYXJlIHN0YXRpYy4gSSB3aWxsIG5vdyBsb29rIG92ZXIgdGhlIGNvZGUgaW4gYG1tL2RhbW9uL2NvcmUuY2AgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xMTM5PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4tLVxubW0vZGFtb24vY29yZS5jLTExNjQtICovXG5tbS9kYW1vbi9jb3JlLmM6MTE2NTppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMTY2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI1NDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIG15IGRvbWFpbiBvZiBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBDb21taXQgQ29udGV4dCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGNoZWNraW5nIHRoZSBgZGFtb25fY29tbWl0X2N0eGAuIEkga25vdyBpdCYjMzk7cyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBvZiB0aGlzIGNvbW1pdCBhbmQgdGhlIHZhcmlvdXMgY29udGV4dHVhbCBhc3BlY3RzIHRoYXQgaW5mbHVlbmNlIHRoZSBjdXJyZW50IG9wZXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB0aGVyZSwgZGl2ZSBpbnRvIHRoZSBkZXRhaWxzIHdpdGhpbiBpdCwgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBJIGV4cGVjdC4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZW5kZWQgYWN0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiBvZiB1bmRlcnN0YW5kaW5nIHRoZSBwcmVzZW50IHN0YWdlIGFuZCBkZXRlcm1pbmluZyBteSBuZXh0IGFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCBkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xODE5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODQ3LSAqL1xubW0vZGFtb24vY29yZS5jOjE4NDg6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTg0OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODYyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgbWVudGFsIG1vZGVsIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3Q6IGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBvaW50IGZvciBhbnkgRHluYW1pYyBBZGFwdGl2ZSBNZW1vcnkgT3B0aW1pemVyIChEQU1PTikgc3lzdGVtIGludGVyYWN0aW5nIHdpdGggc3lzZnMsIGFuZCBpbiBwYXJ0aWN1bGFyIGEgZnVuY3Rpb24gbmFtZSB0aGF0IGxpa2VseSByZWxhdGVzIHRvIHRha2luZyB1c2VyIGlucHV0IGFuZCBjb25maWd1cmluZyB0aGUgbW9uaXRvcmluZy4gR2l2ZW4gdGhlIGZ1bmN0aW9uIG5hbWUsIEkmIzM5O2QgZXhwZWN0IGl0IGlzIHRoZSBwb2ludCB3aGVyZSB0aGUgYWN0dWFsIG1vbml0b3JpbmcgY29uZmlndXJhdGlvbiBpcyBhcHBsaWVkIG9yIGNvbW1pdHRlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtkIGltbWVkaWF0ZWx5IHdhbnQgdG8gY2hlY2s6CgoqICAgKipFcnJvciBIYW5kbGluZzoqKiBBcmUgdGhlcmUgcm9idXN0IGNoZWNrcyBvbiB0aGUgaW5wdXQgdmFsdWVzPyBBcmUgaW52YWxpZCBjb25maWd1cmF0aW9ucyBncmFjZWZ1bGx5IHJlamVjdGVkLCBvciBjYW4gdGhleSBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgY3Jhc2hlcz8KKiAgICoqRGF0YSBWYWxpZGF0aW9uOioqIEFyZSBhbGwgdGhlIGlucHV0IHBhcmFtZXRlcnMgdGhvcm91Z2hseSB2YWxpZGF0ZWQgYWdhaW5zdCByZWFzb25hYmxlIHJhbmdlcyBhbmQgY29uc3RyYWludHM/IFNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBmcmVxdWVudGx5IGFyaXNlIGhlcmUuCiogICAqKkF0b21pY2l0eS9Db25jdXJyZW5jeToqKiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBwcm90ZWN0ZWQgYWdhaW5zdCBjb25jdXJyZW50IGFjY2VzcywgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBtb2RpZnlpbmcgc2hhcmVkIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIERBTU9OJiMzOTtzIG9wZXJhdGlvbj8gQXJlIGxvY2tzIHVzZWQgYXBwcm9wcmlhdGVseSBhbmQgZWZmaWNpZW50bHk/IElzIHRoZXJlIHBvdGVudGlhbCBmb3IgcmFjZSBjb25kaXRpb25zIG9yIGRlYWRsb2Nrcz8KKiAgICoqU2lkZSBFZmZlY3RzOioqIFdoYXQgYXJlIHRoZSBhY3R1YWwgaW1wbGljYXRpb25zIG9mIGNvbW1pdHRpbmcgdGhpcyBpbnB1dD8gRG9lcyBpdCBpbW1lZGlhdGVseSBhZmZlY3QgbW9uaXRvcmluZyBiZWhhdmlvcj8gRG9lcyBpdCByZXF1aXJlIGFueSBiYWNrZ3JvdW5kIHRhc2tzIHRvIGJlIGxhdW5jaGVkIG9yIG1vZGlmaWVkPyBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIG90aGVyIERBTU9OIG1vZHVsZXMgb3Igc3Vic3lzdGVtcz8KKiAgICoqUmVzb3VyY2UgTWFuYWdlbWVudDoqKiBBcmUgdGhlcmUgYW55IHJlc291cmNlIGxlYWtzIHBvc3NpYmxlIGR1cmluZyBjb25maWd1cmF0aW9uIHVwZGF0ZXM/IEFyZSBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgaGFuZGxlZCBjb3JyZWN0bHkgd2l0aGluIHRoaXMgZnVuY3Rpb24sIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIGVycm9ycyBkdXJpbmcgdGhlIGNvbW1pdCBwcm9jZXNzPwoqICAgKipEb2N1bWVudGF0aW9uOioqIEFyZSB0aGVyZSBnb29kIGNvbW1lbnRzIGFuZCBkb2N1bWVudGF0aW9uIGV4cGxhaW5pbmcgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMsIHdoYXQgaW5wdXRzIGFyZSBhY2NlcHRlZCwgYW5kIGFueSBsaW1pdGF0aW9ucyBvciBzaWRlIGVmZmVjdHM/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5hYmlsaXR5IGFuZCBkZWJ1Z2dpbmcuCgpNeSBpbW1lZGlhdGUgZm9sbG93LXVwIHdvdWxkIGJlIHRvIHRyYWNlIHRoZSBmdW5jdGlvbiYjMzk7cyBjYWxsZXJzIGFuZCBjYWxsZWVzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgd2lkZXIgYXJjaGl0ZWN0dXJlIG9mIERBTU9OIGFuZCB0aGUga2VybmVsLiBJJiMzOTtkIHRoZW4gZXhhbWluZSB0aGUgYWN0dWFsIGNvZGUgd2l0aCB0aG9zZSBxdWVzdGlvbnMgaW4gbWluZCwgY2hlY2tpbmcgZm9yIGFueSByZWQgZmxhZ3MsIG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzLCBvciBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3N5c2ZzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYz0yMTIyPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zeXNmc19idWlsZF9jdHgoXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMTMwLSAqL1xubW0vZGFtb24vc3lzZnMuYzoyMTMxOnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXG5tbS9kYW1vbi9zeXNmcy5jLTIxMzIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ2OAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKlByaW9yaXRpemluZyBJbnZlc3RpZ2F0aW9uOiBTeXN0ZW0gQ2FsbHMgaW4gREFNT04qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgREFNT04gY29kZS4gVGhlIGltbWVkaWF0ZSBvYnNlcnZhdGlvbiBpcyB0aGF0IGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0JiMzOTtzIGxvY2FsaXplZCBhbmQgcHJvYmFibHkgbm90IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMuIEdpdmVuIHRoYXQgY29udGV4dCwgSSYjMzk7bSBnb2luZyB0byBzaGlmdCBteSBmb2N1cy4gTXkgc3VzcGljaW9uIGlzIHRoYXQgYSBmdW5jdGlvbiBsaWtlIGBkYW1vbl9zeXNmc19oYW5kbGVfY21kYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGlzIHRoZSBtb3JlIHJlbGV2YW50IHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gZGlnIGludG8gZnVydGhlci4gU2luY2UgaXQgaXMgbm9uLXN0YXRpYywgaXQgaXMgbGlrZWx5IHRoZSBmdW5jdGlvbiB0aGF0IGludGVyYWN0cyB3aXRoIHRoZSBzeXNmcyBsYXllci4gVGhhdCBzaG91bGQgYmUgbXkgbmV4dCBwb2ludCBvZiBmb2N1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3N5c2ZzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYz0yMzM0PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdXBkYXRlX3NjaGVtZXNfdHJpZWRfcmVnaW9ucyhcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjMtICovXG5tbS9kYW1vbi9zeXNmcy5jOjIzNjQ6c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2NS1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODQ5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgYGRhbW9uX3N5c2ZzX2NtZF9zdG9yZWAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRhbW9uX3N5c2ZzX2NtZF9zdG9yZWAgZnVuY3Rpb24uIFRoZSBuYW1lIGl0c2VsZiBpcyBwcmV0dHkgY2xlYXI7IGl0JiMzOTtzIHRoZSBzdG9yZSBmdW5jdGlvbiBmb3IgYSBjb21tYW5kIHdpdGhpbiB0aGUgYHN5c2ZzYCBpbnRlcmZhY2UgcmVsYXRlZCB0byBEQU1PTi4gQnV0IHRoYXQmIzM5O3MganVzdCB0aGUgc3VyZmFjZS4gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBXaGF0IHNwZWNpZmljIGNvbW1hbmRzIGlzIGl0IGhhbmRsaW5nPyBJIG5lZWQgdG8gZGlnIGRlZXBlci4gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBpbnRlcmZhY2U/IFdoYXQga2luZCBvZiBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4sIGFuZCB3aGF0IHZhbGlkYXRpb24gaXMgaW4gcGxhY2U/IEkgaG9wZSB0aGVyZSYjMzk7cyBzb21lIGRlY2VudCBlcnJvciBjaGVja2luZy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGEgcG90ZW50aWFsIHBvaW50IG9mIHZ1bG5lcmFiaWxpdHk7IGEgc3BvdCBzb21lb25lIGNvdWxkIGV4cGxvaXQgdG8gbWFuaXB1bGF0ZSBEQU1PTiBpbiB1bmV4cGVjdGVkIHdheXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB0aG9yb3VnaGx5IHRvIGFzc2VzcyBpdHMgcm9idXN0bmVzcy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbGVycyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIERBTU9OIGluZnJhc3RydWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW4gdGhlIGxhcmdlciBgc3lzZnNgIHN0cnVjdHVyZSB3aXRoaW4gdGhlIGtlcm5lbD8gSG93IGRvZXMgaXQgcmVsYXRlIHRvIG90aGVyIERBTU9OIGNvbnRyb2xzPyBUaGlzIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiwgb3IgYW55IHNpbWlsYXIgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtLCBvcGVyYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBzc2l6ZV90IHN0YXRlX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTIzNjQ9c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTI0MDMtXG5tbS9kYW1vbi9zeXNmcy5jOjI0MDQ6c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbm1tL2RhbW9uL3N5c2ZzLmMtMjQwNS1cdFx0Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MzE3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgREFNT04gQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmb2N1cyBvbiB0aGlzIERBTU9OIGltcGxlbWVudGF0aW9uLiBGb3Igbm93LCBJJiMzOTttIGdvaW5nIHRvIGtlZXAgbXkgbWVudGFsIGZvY3VzIG9uIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGFuZCBgZGFtb25fY29tbWl0X2N0eGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGFyZWFzIEkmIzM5O2xsIGJlIGRpZ2dpbmcgaW50by4gTm93LCBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zIHRoZW1zZWx2ZXMsIEkgbmVlZCB0byBlbmFibGUgdGhlc2Ugc2V0dGluZ3M6IGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9MUlVfU09SVGAsIGFuZCBpbXBvcnRhbnRseSwgYFNBTVBMRV9EQU1PTl9NVElFUmAuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgaW1wbGVtZW50ZWQuIEkgc2hvdWxkIGZpcnN0IGNoZWNrIHdoZXRoZXIgaXTigJlzIGRlZmluZWQgYXMgYSBtb2R1bGUgb3IgYSBib29sZWFuLCBzbyBJIGNhbiBwbGFuIG15IG5leHQgc3RlcHMgYWNjb3JkaW5nbHkuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnPTE3PWNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxuLS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0yOS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NzIxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggYSBib29sZWFuLCBhIHNpbXBsZSBgYm9vbGAuIEJ1dCBob2xkIG9uLCB0aGUgY3JpdGljYWwgdmFyaWFibGUgaGVyZSwgYFNBTVBMRV9EQU1PTl9NVElFUmAsIGFwcGVhcnMgdG8gYmUgY29udGluZ2VudCBvbiBib3RoIGBEQU1PTmAgYW5kIGBEQU1PTl9QQUREUmAuIFRoYXQmIzM5O3MgYSBwb3RlbnRpYWwgZGVwZW5kZW5jeSBjaGFpbiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZC4gQmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogdmFyaWFibGVzIG9yIGNvbmRpdGlvbnMgaW1wYWN0aW5nIGBTQU1QTEVfREFNT05fTVRJRVJgLiBHb3R0YSBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIHRoaW5ncyB0byBhdm9pZCBicmVha2luZyBzb21ldGhpbmcgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1BBRERSXG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgYnVpbGRzIERBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nLlxuICAzNTpcdFxuICAzNjpcdFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxuICAzNzpcdFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXG4gIDM4Olx0XHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcbiAgMzk6XHRcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTA5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IENoZWNrOiBgU0FNUExFU2AqKgoKT2theSwgc28gdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY3kgZ3JhcGggZm9yIGBTQU1QTEVTYC4gSXQmIzM5O3MgYSBrZXkgY29tcG9uZW50LCBzbyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBjdXJyZW50IHN0YXRlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIGRpcmVjdCBhbmQgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLCBlbnN1cmluZyB0aGVyZSBhcmUgbm8gb2J2aW91cyBjb25mbGljdHMgb3Igb3V0ZGF0ZWQgdmVyc2lvbnMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBzaWducyBvZiBicmVha2luZyBjaGFuZ2VzIG9yIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyB0aGF0IG1pZ2h0IGJlIG1hc2tlZCB3aXRoaW4gdGhlIHdpZGVyIGNvZGUgYmFzZS4gVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAsIGFzIGEgcG9vcmx5IG1hbmFnZWQgZGVwZW5kZW5jeSBoZXJlIGNhbiBwcm9wYWdhdGUgaXNzdWVzIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB3aGV0aGVyIHRoZSBwcm9qZWN0JiMzOTtzIGJ1aWxkIHN5c3RlbSBoYXMgcHJvcGVybHkgcmVzb2x2ZWQgaXQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBlbmRpbmcgdXBkYXRlcyBvciBkZXByZWNhdGlvbnMgZmxhZ2dlZC4gVWx0aW1hdGVseSwgdGhlIHN0YWJpbGl0eSBvZiBgU0FNUExFU2AgZGlyZWN0bHkgaW1wYWN0cyB0aGUgcmVsaWFiaWxpdHkgb2YgdGhlIGVudGlyZSBwcm9kdWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0FNUExFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbnNhbXBsZXMvS2NvbmZpZzoyOm1lbnVjb25maWcgU0FNUExFU1xuc2FtcGxlcy9LY29uZmlnLTMtXHRib29sIFwmIzM0O1NhbXBsZSBrZXJuZWwgY29kZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTM5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBTQU1QTEVTYCBlbmFibGVkLCBvdGhlcndpc2UsIGBTQU1QTEVfREFNT05fTVRJRVJgIHdvbiYjMzk7dCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQsIG5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4gTmV4dCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgZm9yIGBEQU1PTl9MUlVfU09SVGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBoYXMgdGhlIHByZXJlcXVpc2l0ZXMgaXQgbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggZmVhdHVyZXMgb3Igc2V0dGluZ3MgbmVlZCB0byBiZSBpbiBwbGFjZS4gSWYgc29tZXRoaW5nIGlzIG1pc3NpbmcsIEkgd2lsbCBoYXZlIHRvIGZpZ3VyZSBvdXQgYSB3b3JrIGFyb3VuZCBvciBkZWNpZGUgdGhhdCB0aGlzIGZlYXR1cmUgaXMgbm90IGlkZWFsIGluIHRoaXMgc2l0dWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMDpcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxuIDEwMTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4gMTAyOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gMTAzOlx0XHRoZWxwXG4gMTA0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xuIDEwNTpcdFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxuIDEwNjpcdFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxuIDEwNzpcdFxuIDEwODpcdGNvbmZpZyBEQU1PTl9TVEFUXG4gMTA5Olx0XHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3ODgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBEQU1PTiBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIGBEQU1PTl9MUlVfU09SVGAgY2xlYXJseSByZWxpZXMgb24gYERBTU9OX1BBRERSYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJlZm9yZSBkaXZpbmcgZGVlcGVyLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCB0aGUgbGF5IG9mIHRoZSBsYW5kLCBhbmQgcmVmcmVzaCBvdXIga25vd2xlZGdlIG9mIHRoZSBiYXNlIGNvbXBvbmVudHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBmb3IgYERBTU9OX1BBRERSYC4gTm8gdXNlIGdvaW5nIGRvd24gdGhlIHJhYmJpdCBob2xlIG9mIHRoZSBMUlUgc29ydCBpZiB0aGUgZm91bmRhdGlvbiBpcyB1bnN0YWJsZS4gTGV0JiMzOTtzIHRyYWNlIGl0IGJhY2sgYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGxpbmVzIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQ3Olx0Y29uZmlnIERBTU9OX1BBRERSXG4gIDQ4Olx0XHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA1MDpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDUxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDUyOlx0XHRoZWxwXG4gIDUzOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNTQ6XHRcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXG4gIDU1Olx0XG4gIDU2Olx0Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxMzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqRGVwZW5kZW5jaWVzIGFuZCBTeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgREFNT05fUEFERFJgIGlzIGluaGVyZW50bHkgdGllZCB0byBib3RoIGBEQU1PTmAgKHRoZSBEeW5hbWljIEFjY2VzcyBNb25pdG9yaW5nIGFuZCBPcHRpbWl6YXRpb24gb2YgTWVtb3J5IHBhZ2VzKSBhbmQgdGhlIGBNTVVgIChNZW1vcnkgTWFuYWdlbWVudCBVbml0KS4gVGhhdCYjMzk7cyBub3Qgc3VycHJpc2luZzsgcGFnZS1sZXZlbCBhY2Nlc3MgbW9uaXRvcmluZywgYXMgYERBTU9OYCBkb2VzLCBuZWVkcyB0byB1bmRlcnN0YW5kIHBoeXNpY2FsIGFkZHJlc3NlcyBhbmQgaG93IHRoZSBNTVUgdHJhbnNsYXRlcyB0aG9zZSB0byB2aXJ0dWFsIG9uZXMuIEl04oCZcyBwcmV0dHkgZnVuZGFtZW50YWwuCgpOb3csIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgc2VlIHdoYXQgdGhlIHN0b3J5IGlzIHdpdGggYERBTU9OX1NZU0ZTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBTeXNGUyBpbnRlcmZhY2UsIGlmIGVuYWJsZWQsIGludGVycGxheXMgd2l0aCB0aGVzZSBjb3JlIGNvbXBvbmVudHMuIEl0JiMzOTtzIG9mdGVuIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSwgc28ga25vd2luZyBob3cgaXQgY29ubmVjdHMgdG8gdGhlIGludGVybmFscyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBjYW4gYmUgY29udHJvbGxlZCwgbW9uaXRvcmVkLCBhbmQgdHdlYWtlZC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU2MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyB0aGUgREFNT05fU1lTRlMgRGVwZW5kZW5jeSBUcmVlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgREFNT05fU1lTRlNgIGlzIGJ1aWx0IG9uIGJvdGggYERBTU9OYCBhbmQgYFNZU0ZTYC4gTm90IHVuZXhwZWN0ZWQsIHJlYWxseS4gU2VlbXMgbG9naWNhbCB0aGF0IGEgc3lzZnMgaW50ZXJmYWNlIGZvciBhIG1lbW9yeSBtb25pdG9yaW5nIHN5c3RlbSB3b3VsZCBuZWVkIGJvdGggdGhlIGNvcmUgbW9uaXRvcmluZyBtZWNoYW5pc20gKGBEQU1PTmApIGFuZCB0aGUga2VybmVsJiMzOTtzIGZpbGUgc3lzdGVtIGludGVyZmFjZSAoYFNZU0ZTYCkuIE5vdywgdG8gYmUgcmlnb3JvdXMsIEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBvZiBgREFNT05gIGl0c2VsZi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgbG9va3MgbGlrZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsYXRpb25zaGlwcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA1Olx0Y29uZmlnIERBTU9OXG4gICA2Olx0XHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGJ1aWxkcyBhIGZyYW1ld29yayB0aGF0IGFsbG93cyBrZXJuZWwgc3Vic3lzdGVtcyB0byBtb25pdG9yXG4gICA5Olx0XHQgIGFjY2VzcyBmcmVxdWVuY3kgb2YgZWFjaCBtZW1vcnkgcmVnaW9uLiBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWZ1bFxuICAxMDpcdFx0ICBmb3IgcGVyZm9ybWFuY2UtY2VudHJpYyBEUkFNIGxldmVsIG1lbW9yeSBtYW5hZ2VtZW50LlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcbiAgMTM6XHRcdCAgbW9yZSBpbmZvcm1hdGlvbi5cbiAgMTQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5MTEKCQkJCQkJCW91dHB1dDogMTkwCgkJCQkJCQl0aG91Z2h0czogMjg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBEQU1PTiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYWxsIGFib3V0IGhhbmRsaW5nIGEgcG90ZW50aWFsIGRpdmlzaW9uLWJ5LXplcm8gc2NlbmFyaW8gd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIFRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCBhIGNoZWNrIGluIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAuIFNwZWNpZmljYWxseSwgaXQgbWFrZXMgc3VyZSBgc3JjLSZndDt0YXJnZXRfdmFsdWVgIGlzbiYjMzk7dCB6ZXJvOyBpZiBpdCBpcywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIHByZXZlbnRzIHRoYXQgemVybyBmcm9tIGNhdXNpbmcgcHJvYmxlbXMgaW4gYGRhbW9zX3F1b3RhX3Njb3JlYCwgd2hpY2ggaXMgYSBjbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyB0ZWNobmlxdWUuCgpUaGUgZmFjdCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGV4cG9zZWQgdGhyb3VnaCBzeXNmcyBhbmQgaW1wYWN0IGZ1bmN0aW9ucyBsaWtlIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJgIG1lYW5zIHRoaXMgaXNuJiMzOTt0IGp1c3QgYW4gaW50ZXJuYWwgZGV0YWlsOyBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZS4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGJ1ZyBwcmV2ZW50aW9uIG1lYXN1cmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlJiMzOTtkIHdhbnQgdG8gZnV6ei4gV2UgZG9uJiMzOTt0IHdhbnQgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGZyb20gc3VjaCBhIHBhdGNoLgoKTXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IGZvY3VzZXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGFuZCBgZGFtb25fY29tbWl0X2N0eGAuIEkgbmVlZCB0byBjb25maXJtIHRoZXNlIGFyZW4mIzM5O3Qgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggd291bGQgbGltaXQgdGhlaXIgc2NvcGUuIFllcCwgYSBxdWljayBsb29rIGNvbmZpcm1zIGJvdGggYXJlIG5vbi1zdGF0aWM6IGBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylgIGFuZCBgaW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpYC4gVGhhdCYjMzk7cyBnb29kOyBpdCBjb25maXJtcyB0aGF0IHRoZXkgaGF2ZSB0aGUgcG90ZW50aWFsIHRvIGJlIGNhbGxlZCBmcm9tIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUga2VybmVsLCBzbyB0aGlzIGNoYW5nZSYjMzk7cyBpbXBhY3QgaXMgd2lkZXIuCgpBbHNvLCBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSByZWxldmFudCBjb25maWdzOiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUEFERFJgLCBgREFNT05fTFJVX1NPUlRgLCBgU0FNUExFU2AsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYCBmb3IgdGVzdGluZy4KCkFscmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLiBUaGUgcmVzdWx0cyB3aWxsIGJlIHNldCBhcyBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVTJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9zX2NvbW1pdF9xdW90YV9nb2FscyYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBidWcgaW4gYGRhbW9zX3F1b3RhX3Njb3JlYCBieSByZXR1cm5pbmcgYC1FSU5WQUxgIGZyb20gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpZiBgc3JjLVx1MDAzZXRhcmdldF92YWx1ZWAgaXMgMC4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBhcyB3ZWxsIGFzIHRocm91Z2ggdGhlIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlcy4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsIGFuZCBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYywgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFUyYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gYnVnIGluIGBkYW1vc19xdW90YV9zY29yZWAgYnkgcmV0dXJuaW5nIGAtRUlOVkFMYCBmcm9tIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgaWYgYHNyYy1cdTAwM2V0YXJnZXRfdmFsdWVgIGlzIDAuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgYXMgd2VsbCBhcyB0aHJvdWdoIHRoZSBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZXMuIFRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbCBhbmQgcHJldmVudHMgYSBrZXJuZWwgcGFuaWMsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgdGFyZ2V0X3ZhbHVlYCBpbiBgZGFtb3NfcXVvdGFfZ29hbGAgc3RydWN0dXJlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gSXQgY2VudHJhbGl6ZXMgdGhlIGNoZWNrIGZvciB6ZXJvIGB0YXJnZXRfdmFsdWVgIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVtb3ZlcyByZWR1bmRhbnQgY2hlY2tzIGZyb20gb3RoZXIgcGxhY2VzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGZpZWxkcyBpbnRyb2R1Y2VkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMsIG1lbW9yeSBsZWFrcywgb3IgY3Jhc2hlcyAobGlrZSBkaXZpc2lvbiBieSB6ZXJvKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBLQVNBTiwgb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGIzZjJjODhmNzkzNDNhMGI5N2RkOWQ4ODI0NWZhMzY4MmRmNDVjZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA1OjU3OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDY0NGRhZjVhMTY1NjAuLmMyMDRmNjkwN2M1MTUgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTExMzYsMTUgJiM0MzsxMTM2LDE4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKAogCX0KIH0KIAotc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoCiYjNDM7c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbCgKIAkJc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYykKIHsKJiM0MzsJaWYgKCFzcmMtJmd0O3RhcmdldF92YWx1ZSkKJiM0MzsJCXJldHVybiAgLUVJTlZBTDsKIAlkc3QtJmd0O21ldHJpYyA9IHNyYy0mZ3Q7bWV0cmljOwogCWRzdC0mZ3Q7dGFyZ2V0X3ZhbHVlID0gc3JjLSZndDt0YXJnZXRfdmFsdWU7CiAJaWYgKGRzdC0mZ3Q7bWV0cmljID09IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQpCiAJCWRzdC0mZ3Q7Y3VycmVudF92YWx1ZSA9IHNyYy0mZ3Q7Y3VycmVudF92YWx1ZTsKIAkvKiBrZWVwIGxhc3RfcHNpX3RvdGFsIGFzIGlzLCBzaW5jZSBpdCB3aWxsIGJlIHVwZGF0ZWQgaW4gbmV4dCBjeWNsZSAqLwogCWRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKGRzdCwgc3JjKTsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIC8qKgpAQCAtMTE2MiwxNCAmIzQzOzExNjUsMTcgQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoCiBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYykKIHsKIAlzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0X2dvYWwsICpuZXh0LCAqc3JjX2dvYWwsICpuZXdfZ29hbDsKLQlpbnQgaSA9IDAsIGogPSAwOwomIzQzOwlpbnQgaSA9IDAsIGogPSAwLCBlcnI7CiAKIAlkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZHN0X2dvYWwsIG5leHQsIGRzdCkgewogCQlzcmNfZ29hbCA9IGRhbW9zX250aF9xdW90YV9nb2FsKGkmIzQzOyYjNDM7LCBzcmMpOwotCQlpZiAoc3JjX2dvYWwpCi0JCQlkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpOwotCQllbHNlCiYjNDM7CQlpZiAoc3JjX2dvYWwpIHsKJiM0MzsJCQllcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpOwomIzQzOwkJCWlmIChlcnIpCiYjNDM7CQkJCXJldHVybiBlcnI7CiYjNDM7CQl9IGVsc2UgewogCQkJZGFtb3NfZGVzdHJveV9xdW90YV9nb2FsKGRzdF9nb2FsKTsKJiM0MzsJCX0KIAl9CiAJZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHsKIAkJaWYgKGomIzQzOyYjNDM7ICZsdDsgaSkKQEAgLTExNzgsNyAmIzQzOzExODQsMTEgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpCiAJCQkJc3JjX2dvYWwtJmd0O21ldHJpYywgc3JjX2dvYWwtJmd0O3RhcmdldF92YWx1ZSk7CiAJCWlmICghbmV3X2dvYWwpCiAJCQlyZXR1cm4gLUVOT01FTTsKLQkJZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTsKJiM0MzsJCWVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7CiYjNDM7CQlpZiAoZXJyKSB7CiYjNDM7CQkJZGFtb3NfZnJlZV9xdW90YV9nb2FsKG5ld19nb2FsKTsKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwkJfQogCQlkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTsKIAl9CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuYwppbmRleCBiZDg0NzgyOWE5OTA3Li43ZGY0NWY5YTBiM2FlIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmMKQEAgLTIzMyw4ICYjNDM7MjMzLDYgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLAogCiAJaWYgKCFhY3RpdmVfbWVtX2JwKQogCQlyZXR1cm4gMDsKLQlpZiAoMTAwMDAgJmx0OyBhY3RpdmVfbWVtX2JwKQotCQlyZXR1cm4gLUVJTlZBTDsKIAlnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7CiAJaWYgKCFnb2FsKQogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuYwppbmRleCBkMTEyM2ViYmZhYjkwLi5hYzljMjRiOTJlYWQ4IDEwMDY0NAotLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jCkBAIC0xNTYsOSAmIzQzOzE1Niw2IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSkKIAlpZiAoIXNjaGVtZSkKIAkJZ290byBmcmVlX291dDsKIAlkYW1vbl9zZXRfc2NoZW1lcyhjdHgsICZhbXA7c2NoZW1lLCAxKTsKLQkvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovCi0JaWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApCi0JCWdvdG8gZnJlZV9vdXQ7CiAJcXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKAogCQkJcHJvbW90ZSA/IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlAgOgogCQkJREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzcKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiB0aWdodGVuaW5nIHVwIHNvbWUgdmFsaWRhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcgcmVsYXRlZCB0byBob3cgYHRhcmdldF92YWx1ZWAgaXMgdXNlZCBpbiB0aGUgREFNT04gbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZHJlc3NpbmcgcG90ZW50aWFsIGRpdmlzaW9uLWJ5LXplcm8gaXNzdWVzLCBlaXRoZXIgZGlyZWN0bHkgaW4gYGRhbW9zX3F1b3RhX3N0b3JlKClgIG9yIG90aGVyIGZ1bmN0aW9ucyB3aGVyZSBgdGFyZ2V0X3ZhbHVlYCBpcyB1c2VkLCBvciBjb25zb2xpZGF0aW5nIHRoZSBjaGVjayBpbiBvbmUgcGxhY2UuCgpJIHNlZSB0aGUgY29yZSBjaGFuZ2UgaXMgaW4gYG1tL2RhbW9uL2NvcmUuY2Agd2hlcmUgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBub3cgZXhwbGljaXRseSByZXR1cm5zIGFuIGVycm9yIGlmIGBzcmMtJmd0O3RhcmdldF92YWx1ZWAgaXMgemVyby4gVGhlIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGZ1bmN0aW9uIGlzIGFsc28gYmVpbmcgbW9kaWZpZWQgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGlzIG5ldyBlcnJvci4gSXQmIzM5O3MgYWxzbyByZW1vdmluZyBzb21lIHJlZHVuZGFudCBjaGVja3MgaW4gYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2Agd2l0aGluIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4KCk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgY2hhbmdlcywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggbm93IGFkZHMgYSBjaGVjayBmb3IgYSB6ZXJvIGB0YXJnZXRfdmFsdWVgIHVzaW5nIGBpZiAoIXNyYy0mZ3Q7dGFyZ2V0X3ZhbHVlKSByZXR1cm4gLUVJTlZBTDtgIGluIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAuIEJ1dCBhZnRlciBhIGNsb3NlIHJlYWQsIEkgc2VlIG5vIG5ldyBhbGxvY2F0aW9ucyBvciBmaWVsZHMgYmVpbmcgYWRkZWQuIFRoZXNlIGFyZSBwdXJlbHkgbG9naWNhbCBjaGFuZ2VzIGFuZCBlcnJvci1oYW5kbGluZyBtb2RpZmljYXRpb25zLiBTbywgYWZ0ZXIgYSBxdWljayBtZW50YWwgdHJhY2UgdGhyb3VnaCB0aGUgZXhlY3V0aW9uIHBhdGhzIGFmZmVjdGVkLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCBhbmQgZG9uJiMzOTt0IGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBtb2RpZmljYXRpb25zIC0gaW5wdXQgdmFsaWRhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcsIGFuZCB0aGUgbGFjayBvZiBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZSwgSSYjMzk7bSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBmYWxzZS4gVGhlIHBhdGNoIGlzIHNvdW5kIGluIHRoaXMgcmVnYXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgZm9yIGB0YXJnZXRfdmFsdWVgIGluIGBkYW1vc19xdW90YV9nb2FsYCBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBJdCBjZW50cmFsaXplcyB0aGUgY2hlY2sgZm9yIHplcm8gYHRhcmdldF92YWx1ZWAgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCByZW1vdmVzIHJlZHVuZGFudCBjaGVja3MgZnJvbSBvdGhlciBwbGFjZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZmllbGRzIGludHJvZHVjZWQgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycywgbWVtb3J5IGxlYWtzLCBvciBjcmFzaGVzIChsaWtlIGRpdmlzaW9uIGJ5IHplcm8pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcsIEtBU0FOLCBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgdGFyZ2V0X3ZhbHVlYCBpbiBgZGFtb3NfcXVvdGFfZ29hbGAgc3RydWN0dXJlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gSXQgY2VudHJhbGl6ZXMgdGhlIGNoZWNrIGZvciB6ZXJvIGB0YXJnZXRfdmFsdWVgIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVtb3ZlcyByZWR1bmRhbnQgY2hlY2tzIGZyb20gb3RoZXIgcGxhY2VzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGZpZWxkcyBpbnRyb2R1Y2VkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMsIG1lbW9yeSBsZWFrcywgb3IgY3Jhc2hlcyAobGlrZSBkaXZpc2lvbiBieSB6ZXJvKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBLQVNBTiwgb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MDUuMjAxNjA0ODM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1NDA1ODc4NTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHRhcmdldF92YWx1ZWAgaW4gYGRhbW9zX3F1b3RhX2dvYWxgIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIEl0IGNlbnRyYWxpemVzIHRoZSBjaGVjayBmb3IgemVybyBgdGFyZ2V0X3ZhbHVlYCB0byBwcmV2ZW50IGRpdmlzaW9uIGJ5IHplcm8gb3IgaW52YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIHJlbW92ZXMgcmVkdW5kYW50IGNoZWNrcyBmcm9tIG90aGVyIHBsYWNlcy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBmaWVsZHMgaW50cm9kdWNlZCB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWMgZXJyb3JzLCBtZW1vcnkgbGVha3MsIG9yIGNyYXNoZXMgKGxpa2UgZGl2aXNpb24gYnkgemVybyksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdGluZywgS0FTQU4sIG9yIG90aGVyIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkaXZpc2lvbiBieSB6ZXJvIGJ1ZyBpbiBgZGFtb3NfcXVvdGFfc2NvcmVgIGJ5IHJldHVybmluZyBgLUVJTlZBTGAgZnJvbSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgIGlmIGBzcmMtXFx1MDAzZXRhcmdldF92YWx1ZWAgaXMgMC4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBhcyB3ZWxsIGFzIHRocm91Z2ggdGhlIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlcy4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsIGFuZCBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYywgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MDUuMjAxNjEwMTM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjc3MDczNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YjNmMmM4OGY3OTM0M2EwYjk3ZGQ5ZDg4MjQ1ZmEzNjgyZGY0NWNlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDA1OjU3OjA0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xcbmluZGV4IDY0NGRhZjVhMTY1NjAuLmMyMDRmNjkwN2M1MTUgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXFxuKysrIGIvbW0vZGFtb24vY29yZS5jXFxuQEAgLTExMzYsMTUgKzExMzYsMTggQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxuIFxcdH1cXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxuK3N0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxuIFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXFxuIHtcXG4rXFx0aWYgKCFzcmMtXFx1MDAzZXRhcmdldF92YWx1ZSlcXG4rXFx0XFx0cmV0dXJuICAtRUlOVkFMO1xcbiBcXHRkc3QtXFx1MDAzZW1ldHJpYyA9IHNyYy1cXHUwMDNlbWV0cmljO1xcbiBcXHRkc3QtXFx1MDAzZXRhcmdldF92YWx1ZSA9IHNyYy1cXHUwMDNldGFyZ2V0X3ZhbHVlO1xcbiBcXHRpZiAoZHN0LVxcdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVClcXG4gXFx0XFx0ZHN0LVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gc3JjLVxcdTAwM2VjdXJyZW50X3ZhbHVlO1xcbiBcXHQvKiBrZWVwIGxhc3RfcHNpX3RvdGFsIGFzIGlzLCBzaW5jZSBpdCB3aWxsIGJlIHVwZGF0ZWQgaW4gbmV4dCBjeWNsZSAqL1xcbiBcXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihkc3QsIHNyYyk7XFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtMTE2MiwxNCArMTE2NSwxNyBAQCBzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcXG4gaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxuIHtcXG4gXFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7XFxuLVxcdGludCBpID0gMCwgaiA9IDA7XFxuK1xcdGludCBpID0gMCwgaiA9IDAsIGVycjtcXG4gXFxuIFxcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShkc3RfZ29hbCwgbmV4dCwgZHN0KSB7XFxuIFxcdFxcdHNyY19nb2FsID0gZGFtb3NfbnRoX3F1b3RhX2dvYWwoaSsrLCBzcmMpO1xcbi1cXHRcXHRpZiAoc3JjX2dvYWwpXFxuLVxcdFxcdFxcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XFxuLVxcdFxcdGVsc2VcXG4rXFx0XFx0aWYgKHNyY19nb2FsKSB7XFxuK1xcdFxcdFxcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XFxuK1xcdFxcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChkc3RfZ29hbCk7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoc3JjX2dvYWwsIG5leHQsIHNyYykge1xcbiBcXHRcXHRpZiAoaisrIFxcdTAwM2MgaSlcXG5AQCAtMTE3OCw3ICsxMTg0LDExIEBAIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxcbiBcXHRcXHRcXHRcXHRzcmNfZ29hbC1cXHUwMDNlbWV0cmljLCBzcmNfZ29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKTtcXG4gXFx0XFx0aWYgKCFuZXdfZ29hbClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLVxcdFxcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XFxuK1xcdFxcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0ZGFtb3NfZnJlZV9xdW90YV9nb2FsKG5ld19nb2FsKTtcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0fVxcbiBcXHRcXHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcXG5pbmRleCBiZDg0NzgyOWE5OTA3Li43ZGY0NWY5YTBiM2FlIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXFxuQEAgLTIzMyw4ICsyMzMsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXFxuIFxcbiBcXHRpZiAoIWFjdGl2ZV9tZW1fYnApXFxuIFxcdFxcdHJldHVybiAwO1xcbi1cXHRpZiAoMTAwMDAgXFx1MDAzYyBhY3RpdmVfbWVtX2JwKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApO1xcbiBcXHRpZiAoIWdvYWwpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcXG5pbmRleCBkMTEyM2ViYmZhYjkwLi5hYzljMjRiOTJlYWQ4IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbkBAIC0xNTYsOSArMTU2LDYgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxcbiBcXHRpZiAoIXNjaGVtZSlcXG4gXFx0XFx0Z290byBmcmVlX291dDtcXG4gXFx0ZGFtb25fc2V0X3NjaGVtZXMoY3R4LCBcXHUwMDI2c2NoZW1lLCAxKTtcXG4tXFx0LyogemVybyB0YXJnZXQgdmFsdWUgY2F1c2VzIGRpdmlzaW9uIGJ5IHplcm8gaW4gZGFtb3NfcXVvdGFfc3RvcmUoKSAqL1xcbi1cXHRpZiAoIW5vZGUwX21lbV91c2VkX2JwIHx8ICFub2RlMF9tZW1fZnJlZV9icClcXG4tXFx0XFx0Z290byBmcmVlX291dDtcXG4gXFx0cXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxcbiBcXHRcXHRcXHRwcm9tb3RlID8gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCA6XFxuIFxcdFxcdFxcdERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjA1LjYzMDUxMzI2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1NzE1NDIyOTYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiU0FNUExFU1wiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkaXZpc2lvbiBieSB6ZXJvIGJ1ZyBpbiBgZGFtb3NfcXVvdGFfc2NvcmVgIGJ5IHJldHVybmluZyBgLUVJTlZBTGAgZnJvbSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgIGlmIGBzcmMtXFx1MDAzZXRhcmdldF92YWx1ZWAgaXMgMC4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBhcyB3ZWxsIGFzIHRocm91Z2ggdGhlIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlcy4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsIGFuZCBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYywgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGIzZjJjODhmNzkzNDNhMGI5N2RkOWQ4ODI0NWZhMzY4MmRmNDVjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDA1OjU3OjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA2NDRkYWY1YTE2NTYwLi5jMjA0ZjY5MDdjNTE1IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xMTM2LDE1ICsxMTM2LDE4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbitzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxuIFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxuIHtcbitcdGlmICghc3JjLVx1MDAzZXRhcmdldF92YWx1ZSlcbitcdFx0cmV0dXJuICAtRUlOVkFMO1xuIFx0ZHN0LVx1MDAzZW1ldHJpYyA9IHNyYy1cdTAwM2VtZXRyaWM7XG4gXHRkc3QtXHUwMDNldGFyZ2V0X3ZhbHVlID0gc3JjLVx1MDAzZXRhcmdldF92YWx1ZTtcbiBcdGlmIChkc3QtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQpXG4gXHRcdGRzdC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gc3JjLVx1MDAzZWN1cnJlbnRfdmFsdWU7XG4gXHQvKiBrZWVwIGxhc3RfcHNpX3RvdGFsIGFzIGlzLCBzaW5jZSBpdCB3aWxsIGJlIHVwZGF0ZWQgaW4gbmV4dCBjeWNsZSAqL1xuIFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIC8qKlxuQEAgLTExNjIsMTQgKzExNjUsMTcgQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4gaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4ge1xuIFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7XG4tXHRpbnQgaSA9IDAsIGogPSAwO1xuK1x0aW50IGkgPSAwLCBqID0gMCwgZXJyO1xuIFxuIFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGRzdF9nb2FsLCBuZXh0LCBkc3QpIHtcbiBcdFx0c3JjX2dvYWwgPSBkYW1vc19udGhfcXVvdGFfZ29hbChpKyssIHNyYyk7XG4tXHRcdGlmIChzcmNfZ29hbClcbi1cdFx0XHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xuLVx0XHRlbHNlXG4rXHRcdGlmIChzcmNfZ29hbCkge1xuK1x0XHRcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiBlcnI7XG4rXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZGFtb3NfZGVzdHJveV9xdW90YV9nb2FsKGRzdF9nb2FsKTtcbitcdFx0fVxuIFx0fVxuIFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHtcbiBcdFx0aWYgKGorKyBcdTAwM2MgaSlcbkBAIC0xMTc4LDcgKzExODQsMTEgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4gXHRcdFx0XHRzcmNfZ29hbC1cdTAwM2VtZXRyaWMsIHNyY19nb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG4gXHRcdGlmICghbmV3X2dvYWwpXG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG4rXHRcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRkYW1vc19mcmVlX3F1b3RhX2dvYWwobmV3X2dvYWwpO1xuK1x0XHRcdHJldHVybiBlcnI7XG4rXHRcdH1cbiBcdFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoZHN0LCBuZXdfZ29hbCk7XG4gXHR9XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuaW5kZXggYmQ4NDc4MjlhOTkwNy4uN2RmNDVmOWEwYjNhZSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcbisrKyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbkBAIC0yMzMsOCArMjMzLDYgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxuIFxuIFx0aWYgKCFhY3RpdmVfbWVtX2JwKVxuIFx0XHRyZXR1cm4gMDtcbi1cdGlmICgxMDAwMCBcdTAwM2MgYWN0aXZlX21lbV9icClcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7XG4gXHRpZiAoIWdvYWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZDExMjNlYmJmYWI5MC4uYWM5YzI0YjkyZWFkOCAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuKysrIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5AQCAtMTU2LDkgKzE1Niw2IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcbiBcdGlmICghc2NoZW1lKVxuIFx0XHRnb3RvIGZyZWVfb3V0O1xuIFx0ZGFtb25fc2V0X3NjaGVtZXMoY3R4LCBcdTAwMjZzY2hlbWUsIDEpO1xuLVx0LyogemVybyB0YXJnZXQgdmFsdWUgY2F1c2VzIGRpdmlzaW9uIGJ5IHplcm8gaW4gZGFtb3NfcXVvdGFfc3RvcmUoKSAqL1xuLVx0aWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApXG4tXHRcdGdvdG8gZnJlZV9vdXQ7XG4gXHRxdW90YV9nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoXG4gXHRcdFx0cHJvbW90ZSA/IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlAgOlxuIFx0XHRcdERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzowNS42MzA1MTYxMDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA2MzU5MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIGFmZmVjdGluZyBEQU1PTidzIGNvcmUgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRoZSBxdW90YSBtYW5hZ2VtZW50IGFuZCBzYW1wbGluZyB3aXRoaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHRoZSBMUlUgc29ydGluZyBpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AsIGFuZCB0aGUgbXVsdGktdGllciBzYW1wbGluZyBleGFtcGxlIGluIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBMb29rcyBsaWtlIGl0J3MgYSByZWxhdGl2ZWx5IGZvY3VzZWQgY2hhbmdlLCBhbmQgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBhbHRlcmF0aW9ucy5cblxuRmlyc3QsIHRoZSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgIGZ1bmN0aW9uIGlzIGJlaW5nIG1vZGlmaWVkIHRvIHJldHVybiBhbiBlcnJvciB3aGVuIGBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlOyBhIHplcm8gdGFyZ2V0IHByZXN1bWFibHkgbWVhbnMgbm8gcXVvdGEsIGFuZCBleHBsaWNpdGx5IHJldHVybmluZyBhbiBlcnJvciBpcyBhIGNsZWFyZXIgd2F5IHRvIHNpZ25hbCB0aGF0IHRoaXMgc2hvdWxkbid0IGJlIGFsbG93ZWQuIFRoYXQgZXJyb3IgdGhlbiBnZXRzIHByb3BhZ2F0ZWQgdXAgdG8gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AuIEdvb2QsIG1ha2VzIGZvciBjbGVhbmVyIGVycm9yIGhhbmRsaW5nLlxuXG5OZXh0LCB0aGUgcGF0Y2ggcmVtb3ZlcyBhIHNlZW1pbmdseSBhcmJpdHJhcnkgY2hlY2ssIGBpZiAoMTAwMDAgXHUwMDNjIGFjdGl2ZV9tZW1fYnApYCwgd2l0aGluIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY2hlY2sgd2FzIGRvaW5nLiBXYXMgaXQgYSBzYWZlZ3VhcmQgYWdhaW5zdCBhbiBleHRyZW1lIHZhbHVlLCBhIHR1bmluZyBwYXJhbWV0ZXIsIG9yIGFuIG92ZXJzaWdodD8gTXkgZmlyc3Qgc3RlcCBpcyBnb2luZyB0byBiZSB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB3aHkgdGhpcyBjaGVjayB3YXMgZGVlbWVkIHVubmVjZXNzYXJ5LlxuXG5GaW5hbGx5LCB0aGV5J3ZlIHJlbW92ZWQgYGlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKWAgd2l0aGluIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YC4gVGhpcyBpcyBhbHNvIGludHJpZ3VpbmcuIFRoaXMgaW1wbGllcyBhIHJlbGF4YXRpb24gb2YgYSBjb25kaXRpb24gdXNlZCBpbiB0aGUgTVRpZXIgc2FtcGxpbmcuIElzIHRoaXMgYSBzaW1wbGlmaWNhdGlvbiwgYSBidWcgZml4LCBvciBhIGNoYW5nZSBpbiBob3cgdGhlIHNhbXBsaW5nIGlzIGludGVuZGVkIHRvIGJlaGF2ZT8gSXQgcmVxdWlyZXMgYSBjbG9zZXIgbG9vayBhdCB0aGUgc2FtcGxpbmcgbG9naWMgYW5kIGhvdyB0aGlzIGNvbmRpdGlvbiB3YXMgb3JpZ2luYWxseSB1c2VkLlxuXG5VbHRpbWF0ZWx5LCBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjYXJlZnVsbHkgY29uc2lkZXIgd2hhdCBEQU1PTiBjb25maWcgb3B0aW9ucyBleGlzdCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbid0IGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuIEknbGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGFuZ2UgaXMgaW4gbGluZSB3aXRoIHRoZSBkZXNpZ24gb2YgREFNT04uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoxMC40MzY4Nzk2NDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NDAwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoxMC40ODQzMjYwNDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQxNzA0NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXMgb2YgYERBTU9OX0xSVV9TT1JUYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYERBTU9OX0xSVV9TT1JUYCByZWxpZXMgb24uIFRoYXQncyBteSBzdGFydGluZyBwb2ludC4gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIGV2ZW4gY29uc2lkZXIgbW9kaWZ5aW5nIGl0LCBvcHRpbWl6aW5nIGl0LCBvciBpbnRlZ3JhdGluZyBpdCB3aXRoIHNvbWV0aGluZyBlbHNlLiBJdCdzIHRoZSBmaXJzdCBzdGVwIGluIGFueSBkZWJ1Z2dpbmcgb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBpZGVudGlmaWVyIGFuZCBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIGlucHV0IGFuZCBvdXRwdXQgaW50ZXJhY3Rpb25zLiBUaGlzIGxpa2VseSBpbnZvbHZlcyBkZWx2aW5nIGludG8gdGhlIGNvZGUgYW5kIGV4YW1pbmluZyBpdHMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscy4gS25vd2luZyB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZnVuY3Rpb25zIGl0IGxldmVyYWdlcyBpcyBwYXJhbW91bnQuIFBlcmhhcHMgaXQncyBhIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlLCBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29tcG9uZW50IG9yIGV2ZW4gYW5vdGhlciBwaWVjZSBvZiBjb2RlLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MTMuNTI2MDMyOTYxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODcwMzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTl9MUlVfU09SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9ODg9Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG4tLVxcbm1tL2RhbW9uL0tjb25maWctOTktXFxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MTMuNTc0OTA4ODA5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NDEyNTc0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byBEQU1PTl9MUlVfU09SVCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgREFNT05fTFJVX1NPUlRgLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSwgc3BlY2lmaWNhbGx5IGBtbS9kYW1vbi9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGRlcGVuZGVuY3kgbG9naWMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgREFNT04gYXJlIGRlZmluZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBgREFNT05fTFJVX1NPUlRgIGFuZCBvdGhlciBjb25maWd1cmF0aW9uIHN5bWJvbHMgbGFpZCBvdXQgY2xlYXJseSBpbiB0aGF0IGZpbGUuIEknbSBnb2luZyB0byBzY2FuIHRocm91Z2ggaXQsIGxvb2tpbmcgZm9yIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMsIGBkZXBlbmRzIG9uYCBjbGF1c2VzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGluZm9ybWF0aW9uIHRoYXQgcmV2ZWFscyB3aGljaCBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGBEQU1PTl9MUlVfU09SVGAgdG8gZXZlbiBiZSBjb25zaWRlcmVkIGEgdmlhYmxlIG9wdGlvbi4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgYW5hbHl6aW5nIHRoZSBEQU1PTiBjb25maWd1cmF0aW9uLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGhpZXJhcmNoeS4gVGhpcyB3aWxsIGd1aWRlIG15IHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoxNi44MzkwMzgwMTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHRjb25maWcgREFNT05fTFJVX1NPUlRcXG4gMTAxOlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuIDEwMjpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuIDEwMzpcXHRcXHRoZWxwXFxuIDEwNDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xcbiAxMDU6XFx0XFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxcbiAxMDY6XFx0XFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxcbiAxMDc6XFx0XFxuIDEwODpcXHRjb25maWcgREFNT05fU1RBVFxcbiAxMDk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVxcXCJcXG4gMTEwOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gMTExOlxcdFxcdGhlbHBcXG4gMTEyOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIGFjY2VzcyBtb25pdG9yaW5nIHN0YXRpc3RpY3Mgc3Vic3lzdGVtLlxcbiAxMTM6XFx0XFx0ICBJdCBydW5zIERBTU9OIGFuZCBleHBvc2UgYWNjZXNzIG1vbml0b3JpbmcgcmVzdWx0cyBpbiBzaW1wbGUgc3RhdFxcbiAxMTQ6XFx0XFx0ICBtZXRyaWNzLlxcbiAxMTU6XFx0XFxuIDExNjpcXHRjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG4gMTE3OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcXFwiXFxuIDExODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1NUQVRcXG4gMTE5OlxcdFxcdGRlZmF1bHQgREFNT05fU1RBVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoxNi44MzkxMTczOTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYwNTE0OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBJbnRlcmRlcGVuZGVuY2llcyBpbiBEQU1PTioqXG5cbkFscmlnaHQsIHNvIHRoZSBgREFNT05fTFJVX1NPUlRgIGZ1bmN0aW9uLCBhcyBJIHN1c3BlY3RlZCwgaXMgcmVsaWFudCBvbiBgREFNT05fUEFERFJgLiBHaXZlbiBteSBleHBlcmllbmNlIHdpdGggREFNT04sIEkga25vdyBob3cgY3JpdGljYWwgdGhlc2UgbG93LWxldmVsIGFkZHJlc3Mgc3BhY2VzIGFyZS4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhhdCBkZXBlbmRlbmN5LiBUaGVyZWZvcmUsIEkgbmVlZCB0byBpbW1lZGlhdGVseSBzaGlmdCBteSBmb2N1cyB0byBkaXNzZWN0aW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERBTU9OX1BBRERSYCBpdHNlbGYuIFdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlPyBXaGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIHJlbHlpbmcgb24gKml0Kj8gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byBuYWlsIGRvd24gdG8gZW5zdXJlIHN0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeSB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbSwgc28gdW5kZXJzdGFuZGluZyB0aGUgZmxvdyBmcm9tIGBEQU1PTl9QQUREUmAgaXMgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBkZXBlbmRlbmN5IHRyZWUgY2xlYXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMzNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MjAuMTk5NjM3MDkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDc6XFx0Y29uZmlnIERBTU9OX1BBRERSXFxuICA0ODpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDUwOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbiAgNTE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXFxuICA1NDpcXHRcXHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyMC4xOTk3MTczNDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgxNzIyMTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipDaGVja2luZyBEQU1PTidzIEZvdW5kYXRpb24qKlxuXG5SaWdodCwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgREFNT05gIGlzIHBsYXlpbmcgbmljZSB3aXRoIGV2ZXJ5dGhpbmcgaXQgbmVlZHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyBgREFNT05gJ3MgZGVwZW5kZW5jeSBsYW5kc2NhcGUgbG9vayBsaWtlIHJpZ2h0IG5vdz9cIiBJIGNhbid0IGJ1aWxkIGFueXRoaW5nIHN0YWJsZSwgb3IgZXZlbiB1bmRlcnN0YW5kIHByb2JsZW1zIHdoZW4gdGhleSBhcmlzZSwgaWYgSSBkb24ndCBrbm93IHRoZSB0b29scyBgREFNT05gIHJlbGllcyBvbi4gU28sIGEgcXVpY2sgY2hlY2stdXAgb24gdGhvc2UgZGVwZW5kZW5jaWVzIGlzIGluIG9yZGVyLiBJdOKAmXMgdGhlIGZvdW5kYXRpb24gdXBvbiB3aGljaCBldmVyeXRoaW5nIGVsc2Ugc3RhbmRzLiBXZSBoYXZlIHRvIG1ha2Ugc3VyZSBpdCdzIHNvbGlkIGJlZm9yZSBwcm9jZWVkaW5nLiBMZXQncyBtYWtlIHN1cmUgdGhpbmdzIGFyZSBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MjMuMDE2OTQyODU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgNTpcXHRjb25maWcgREFNT05cXG4gICA2OlxcdFxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxcbiAgIDk6XFx0XFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcXG4gIDEwOlxcdFxcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcXG4gIDEzOlxcdFxcdCAgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyMy4wMTcwMjEzMTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwMTU0OTQ4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBEQU1PTiBwYXRjaCwgYW5kIG15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGBEQU1PTmAsIGBEQU1PTl9QQUREUmAsIGFuZCBgREFNT05fTFJVX1NPUlRgIGFyZSB0aGUga2V5IGNvbmZpZ3MgaW52b2x2ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2Ugc2V0dGluZ3MgZW5hYmxlIGFuZCBob3cgdGhleSBpbXBhY3QgdGhlIG92ZXJhbGwgREFNT04gYmVoYXZpb3IuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgc3RhcnRpbmcgd2l0aCBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCwgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHQgdmFsdWVzLiBJIHN1c3BlY3QgdGhlcmUgd2lsbCBiZSBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyB0aGVyZSB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBvZiB0aGUgY29kZS4gVGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBpcyBpbXBvcnRhbnQgdG9vIOKAkyB0aGF0IHdpbGwgcHJvYmFibHkgcG9pbnQgdG93YXJkcyBhIHByYWN0aWNhbCB1c2UtY2FzZSBvciBwZXJmb3JtYW5jZSBtb2RpZmljYXRpb24gcmVsYXRlZCB0byB0aWVyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDc2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyNi42MTg1NzM5MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTMxODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10aWVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vTWFrZWZpbGU9ND1vYmotJChDT05GSUdfU0FNUExFX0RBTU9OX1BSQ0wpICs9IHByY2wub1xcbnNhbXBsZXMvZGFtb24vTWFrZWZpbGU6NTpvYmotJChDT05GSUdfU0FNUExFX0RBTU9OX01USUVSKSArPSBtdGllci5vXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNy1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6ODojZGVmaW5lIHByX2ZtdChmbXQpIFxcXCJkYW1vbl9zYW1wbGVfbXRpZXI6IFxcXCIgZm10XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTktXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTctI2VuZGlmXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4OiNkZWZpbmUgTU9EVUxFX1BBUkFNX1BSRUZJWCBcXFwiZGFtb25fc2FtcGxlX210aWVyLlxcXCJcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTktXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MzY9bW9kdWxlX3BhcmFtKG5vZGUwX21lbV9mcmVlX2JwLCB1bG9uZywgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM3LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzozODpzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM5LVxcdFxcdGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApO1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDI6XFx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQzLVxcdC5nZXQgPSBwYXJhbV9nZXRfYm9vbCxcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzItXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3Ni1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTc3OnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3OC17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgxLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODI6XFx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCh0cnVlKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgzLVxcdGlmICghY3R4KVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4NS1cXHRjdHhzWzBdID0gY3R4O1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODY6XFx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChmYWxzZSk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Ny1cXHRpZiAoIWN0eCkge1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwMC1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjAxOnN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwMi17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjA3LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMDg6c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlKFxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMDktXFx0XFx0Y29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjQtXFx0aWYgKGVuYWJsZWQpIHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjI1OlxcdFxcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjYtXFx0XFx0aWYgKGVycilcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjktXFx0fVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMzA6XFx0ZGFtb25fc2FtcGxlX210aWVyX3N0b3AoKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjMxLVxcdHJldHVybiAwO1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzMy1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM0OnN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzNS17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjQ0LVxcdGlmIChlbmFibGVkKSB7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjI0NTpcXHRcXHRlcnIgPSBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQoKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjQ2LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjUxLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNTI6bW9kdWxlX2luaXQoZGFtb25fc2FtcGxlX210aWVyX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyNi42NjY3MTQyNTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY3ODMyNjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBTQU1QTEVfREFNT05fTVRJRVJgIGlzIGNvbmZpZ3VyZWQuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSdzIHN0cnVjdHVyZSwgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYHNhbXBsZXMvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gc2FtcGxlIGNvZGUuIEknbGwgdGFrZSBhIGxvb2sgaW4gdGhlcmUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgc3BlY2lmaWMgb3B0aW9uIGlzIGRlZmluZWQsIGlmIGl0J3MgZGVwZW5kZW50IG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucywgYW5kIHdoYXQgaXRzIGRlZmF1bHQgdmFsdWVzIG1pZ2h0IGJlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgc2FtcGxlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYW5kIGhvdyBpdHMgYmVoYXZpb3IgY2FuIGJlIG1vZGlmaWVkIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyOS4zNDUwNDM4ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTI3NTE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0FNUExFX0RBTU9OX01USUVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MjkuMzkzOTg1NjZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwNDAxMzU1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIEtjb25maWcgRmlsZSBmb3IgdGhlIERhbW9uIFNhbXBsZSoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gYW5kIGNvbmZpZ3VyYXRpb24sIHRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB3aGVuIGV4cGxvcmluZyBhIG5ldyBzYW1wbGUgbGlrZSBcImRhbW9uLlwiIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkZWZpbmVkIGhlcmUgdGhhdCBjb250cm9sIHdoZXRoZXIgRGFtb24gaXMgYnVpbHQgaW50byB0aGUga2VybmVsLCBidWlsdCBhcyBhIG1vZHVsZSwgb3IgZXZlbiBjb21wbGV0ZWx5IGRpc2FibGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIGFueSBkZWZhdWx0IHNldHRpbmdzLCBhbmQgb2YgY291cnNlLCB0aGUgdXNlci1mYWNpbmcgc3ltYm9scyB0aGF0IHdpbGwgYmUgZXhwb3NlZCBpbiB0aGUgYC5jb25maWdgIGZpbGUuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhlIERhbW9uIHNhbXBsZSBhbmQgaG93IGl0IGludGVncmF0ZXMgKG9yIGRvZXNuJ3QpIHdpdGggdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2UgdG8gd29yayBmcm9tLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzI5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MzIuNTk4MDA0MjQ1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODcxNDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0FNUExFX0RBTU9OX01USUVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjMyLjY0NjcyNzk0M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODM1NDMyNjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIGBTQU1QTEVfREFNT05fTVRJRVJgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgU0FNUExFX0RBTU9OX01USUVSYC4gVGhpcyBpc24ndCBqdXN0IGEgc2ltcGxlIGV4ZXJjaXNlIGluIGxvb2tpbmcgdXAgYSBtYW5pZmVzdCBmaWxlLCB0aG91Z2guIEkgbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGluIGxheWVycy4gRmlyc3QsIEkgbmVlZCB0byBjb25zaWRlciBhbGwgcG9zc2libGUgZGVwZW5kZW5jaWVzLCBib3RoIGRpcmVjdCBhbmQgaW5kaXJlY3QuIFdoYXQgYXJlIHRoZSBvYnZpb3VzIGxpYnJhcmllcywgbW9kdWxlcywgYW5kIHNlcnZpY2VzIHRoYXQgaXQgZXhwbGljaXRseSBjYWxscz8gVGhlbiwgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIHRocm91Z2ggY29uZmlndXJhdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGFwcGFyZW50IGZyb20gdGhlIGNvZGUgaXRzZWxmPyBJIGFsc28gbmVlZCB0byB0aGluayBhYm91dCBydW50aW1lIGRlcGVuZGVuY2llcyAtIGV4dGVybmFsIHNlcnZpY2VzIGl0IG1pZ2h0IGNvbW11bmljYXRlIHdpdGguIFxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIGRlcGVuZGVuY3kuIEEgbG93LWxldmVsIGxpYnJhcnkgY291bGQgbWVhbiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBpZiBpdCBpc24ndCBvcHRpbWl6ZWQsIHdoZXJlYXMgYSBkZXBlbmRlbmN5IG9uIGFuIGV4dGVybmFsIEFQSSBjb3VsZCBpbnRyb2R1Y2Ugc3RhYmlsaXR5IG9yIGxhdGVuY3kgaXNzdWVzLiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgdmVyc2lvbiBjb21wYXRpYmlsaXR5IGFzIHdlbGwuIFdpbGwgdGhlc2UgZGVwZW5kZW5jaWVzIGNyZWF0ZSBjb25mbGljdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIG9yIHdpdGggZnV0dXJlIGRldmVsb3BtZW50P1xuXG5JJ2xsIHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIG1ldGhvZHMsIHRyYWNpbmcgdGhlIGNhbGwgc3RhY2tzIGFuZCBpbnNwZWN0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG1vcmUgZXNvdGVyaWMgb25lcywgaWYgbmVlZGVkLiBUaGVuIEnigJlsbCBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbWFwIG9mIHdoYXQgbWlnaHQgaGFwcGVuIGlmIG9uZSBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgZmFpbHMg4oCTIHdoYXQgYXJlIHRoZSBmYXVsdC10b2xlcmFudCBtZWFzdXJlcyBpbiBwbGFjZSwgYW5kIHdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY2FzY2FkaW5nIGZhaWx1cmVzP1xuXG5cbiIsIklucHV0VG9rZW5zIjo4MDY5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MzYuNDgyMTYzNzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjM2LjQ4MjIzNDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMDc5OTA3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIGZvY3VzZWQgb24gdGhvc2UgYERBTU9OYCBjb25maWd1cmF0aW9ucyDigJMgYERBTU9OYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX0xSVV9TT1JUYCwgYW5kIGBTQU1QTEVfREFNT05fTVRJRVJgLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJwbGF5LCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBwYXRjaCBpbiBxdWVzdGlvbi4gTXkgbWFpbiBjb25jZXJuIGlzIHRoYXQgdGhlc2UgY29uZmlndXJhdGlvbnMgZGVmaW5lIHRoZSBzY29wZSBhbmQgcGFyYW1ldGVycyBvZiB0aGUgREFNT04gbW9uaXRvcmluZyBhbmQgYWN0aW9uaW5nLCBzbyBhbnkgY2hhbmdlcyBpbnZvbHZpbmcgdGhlbSBpcyBzaWduaWZpY2FudCwgZXZlbiBpZiBzZWVtaW5nbHkgbWlub3IuXG5cblRoZSBwYXRjaCdzIGNvcmUgY2hhbmdlIGlzIHR3b2ZvbGQuIEZpcnN0LCBpdCByZW1vdmVzIGEgY2hlY2sgd2l0aGluIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgLiBUaGlzIGRlc2VydmVzIGltbWVkaWF0ZSBhdHRlbnRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGF0IGNoZWNrIHdhcyB0aGVyZSBpbml0aWFsbHkgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgb2YgaXRzIHJlbW92YWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBtYXkgaGF2ZSBiZWVuIGFkZGVkIGZvciBhIHJlYXNvbiBhbmQgdGh1cyBpdHMgcmVtb3ZhbCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGNhcmVmdWxseSBldmFsdWF0ZS4gVGhpcyBhZmZlY3RzIHRoZSBsb2dpYyBvZiBhZGRpbmcgcXVvdGEgZ29hbHMsIHdoaWNoIGlzIGZ1bmRhbWVudGFsIHRvIERBTU9OJ3Mgb3BlcmF0aW9uLlxuXG5TZWNvbmQsIHRoZSBtb2RpZmljYXRpb24gdG8gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCB0byByZXR1cm4gYC1FSU5WQUxgIGlmIGBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyAwIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoaXMgZXhwbGljaXRseSBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgdGhlIHF1b3RhIGdvYWwgY29tbWl0bWVudCBsb2dpYy4gUmV0dXJuaW5nIGAtRUlOVkFMYCBpbmRpY2F0ZXMgYSB2YWxpZGF0aW9uIGZhaWx1cmUgb3IgYW4gaW52YWxpZCBpbnB1dCwgaW1wbHlpbmcgdGhlIGNvZGUgbm93IGNvbnNpZGVycyBhIHplcm8gYHRhcmdldF92YWx1ZWAgYW4gZXJyb3IgY29uZGl0aW9uIHdoZXJlIGl0IHdhc24ndCBiZWZvcmUuIEl0IGlzIGxpa2VseSBhIGdvb2QgY2hhbmdlLCBlbnN1cmluZyB0aGF0IGEgdmFsaWQgdGFyZ2V0IHZhbHVlIGlzIHByb3ZpZGVkIHRvIHByZXZlbnQgZnV0dXJlLCB1bmV4cGVjdGVkIGlzc3Vlcy5cblxuTm93LCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucywgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLiBJJ20gZ29pbmcgdG8gZXhhbWluZSB0aGUgY29kZSBhcm91bmQgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBhbmQgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2Agd2l0aGluIGBtbS9kYW1vbi9jb3JlLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UgYW5kIGl0cyBpbXBhY3Qgb24gdGhlIHF1b3RhIG1hbmFnZW1lbnQgYW5kIG92ZXJhbGwgREFNT04gYmVoYXZpb3IuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSB0YXJnZXQgdmFsdWUgaXMgc2V0LCB3aGVyZSBpdCBjb21lcyBmcm9tLCBhbmQgd2hhdCBjb25zZXF1ZW5jZXMgdGhlIG5ldyBgLUVJTlZBTGAgcmV0dXJuIGhhcyB1cCB0aGUgY2FsbCBjaGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU5MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjQxLjQ4MzAzNTg1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0Mjk4MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MTEzOT1zdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNTMtLyoqXFxubW0vZGFtb24vY29yZS5jOjExNTQ6ICogZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKCkgLSBDb21taXQgREFNT1MgcXVvdGEgZ29hbHMgdG8gYW5vdGhlciBxdW90YS5cXG5tbS9kYW1vbi9jb3JlLmMtMTE1NS0gKiBAZHN0OlxcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT1MgcXVvdGEuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTE2NTppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE2Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTE5Nz1zdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIwMy1cXHRkc3QtXFx1MDAzZXN6ID0gc3JjLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmM6MTIwNDpcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjA1LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjQxLjUyNzQ3MTY3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzc4MzU4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKlRyYWNpbmcgdGhlIFF1b3RhIExvZ2ljKipcblxuQWxyaWdodCwgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoaXMgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgaHVuY2ggaXMgdG8gdHJhY2UgaXRzIGNhbGwgc3RhY2suIE9rYXksIHNvIGl0J3MgY2FsbGVkIGJ5IGBkYW1vc19jb21taXRfcXVvdGFgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBuYW1pbmcgY29udmVudGlvbiB0byBicmVhayB0aGlzIHVwLiBBbmQgKnRoYXQqIGZ1bmN0aW9uLCBgZGFtb3NfY29tbWl0X3F1b3RhYCwgaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGBkYW1vc19jb21taXRgLiBSaWdodCwgc28gdGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXc7IHRoZSBxdW90YSBnb2FscyBjb21wdXRhdGlvbiBpcyBwYXJ0IG9mIHRoZSBxdW90YSBsb2dpYywgd2hpY2ggaXMgYW4gaW50ZWdyYWwgcGFydCBvZiB0aGUgb3ZlcmFsbCBjb21taXQgcHJvY2Vzcy4gVGhpcyBnaXZlcyBtZSBhIG1hcCBvZiB0aGUgbGFuZHNjYXBlOyBOb3csIEkgY2FuIHN0YXJ0IHRvIGZvcm11bGF0ZSBhIGh5cG90aGVzaXMgYWJvdXQgd2hhdCB0aGUgZGlmZmVyZW50IGdvYWxzIGl0IHVzZXMgYXJlIGluIHRoZSBvdmVyYWxsIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUxMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjQ0LjYwNTMxMDgwOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3NTg1MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfY29tbWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MTEwOD1zdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX250aF9xdW90YV9nb2FsKFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMjAtXFxubW0vZGFtb24vY29yZS5jOjExMjE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxubW0vZGFtb24vY29yZS5jLTExMjItXFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTM4LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTM5OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxubW0vZGFtb24vY29yZS5jLTExNDAtXFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTQ4LVxcdC8qIGtlZXAgbGFzdF9wc2lfdG90YWwgYXMgaXMsIHNpbmNlIGl0IHdpbGwgYmUgdXBkYXRlZCBpbiBuZXh0IGN5Y2xlICovXFxubW0vZGFtb24vY29yZS5jOjExNDk6XFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTUwLVxcdHJldHVybiAwO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNTMtLyoqXFxubW0vZGFtb24vY29yZS5jOjExNTQ6ICogZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKCkgLSBDb21taXQgREFNT1MgcXVvdGEgZ29hbHMgdG8gYW5vdGhlciBxdW90YS5cXG5tbS9kYW1vbi9jb3JlLmMtMTE1NS0gKiBAZHN0OlxcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT1MgcXVvdGEuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTE2NTppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE2Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE3Mi1cXHRcXHRpZiAoc3JjX2dvYWwpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MTE3MzpcXHRcXHRcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTc0LVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE4Ni1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9jb3JlLmM6MTE4NzpcXHRcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChuZXdfZ29hbCwgc3JjX2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTg4LVxcdFxcdGlmIChlcnIpIHtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTk2LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTk3OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE5OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIwMy1cXHRkc3QtXFx1MDAzZXN6ID0gc3JjLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmM6MTIwNDpcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjA1LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTIyOD1zdGF0aWMgc3RydWN0IGRhbW9zX2ZpbHRlciAqZGFtb3NfbnRoX29wc19maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjM5LVxcbm1tL2RhbW9uL2NvcmUuYzoxMjQwOnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKFxcbm1tL2RhbW9uL2NvcmUuYy0xMjQxLVxcdFxcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyNjAtXFxubW0vZGFtb24vY29yZS5jOjEyNjE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcihcXG5tbS9kYW1vbi9jb3JlLmMtMTI2Mi1cXHRcXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkc3QsIHN0cnVjdCBkYW1vc19maWx0ZXIgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjY2LVxcdGRzdC1cXHUwMDNlYWxsb3cgPSBzcmMtXFx1MDAzZWFsbG93O1xcbm1tL2RhbW9uL2NvcmUuYzoxMjY3OlxcdGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKGRzdCwgc3JjKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI2OC19XFxubW0vZGFtb24vY29yZS5jLTEyNjktXFxubW0vZGFtb24vY29yZS5jOjEyNzA6c3RhdGljIGludCBkYW1vc19jb21taXRfY29yZV9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTI3MS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI3Ny1cXHRcXHRpZiAoc3JjX2ZpbHRlcilcXG5tbS9kYW1vbi9jb3JlLmM6MTI3ODpcXHRcXHRcXHRkYW1vc19jb21taXRfZmlsdGVyKGRzdF9maWx0ZXIsIHNyY19maWx0ZXIpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjc5LVxcdFxcdGVsc2VcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjkxLVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbm1tL2RhbW9uL2NvcmUuYzoxMjkyOlxcdFxcdGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKG5ld19maWx0ZXIsIHNyY19maWx0ZXIpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjkzLVxcdFxcdGRhbW9zX2FkZF9maWx0ZXIoZHN0LCBuZXdfZmlsdGVyKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjk3LVxcbm1tL2RhbW9uL2NvcmUuYzoxMjk4OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X29wc19maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTI5OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTMwNS1cXHRcXHRpZiAoc3JjX2ZpbHRlcilcXG5tbS9kYW1vbi9jb3JlLmM6MTMwNjpcXHRcXHRcXHRkYW1vc19jb21taXRfZmlsdGVyKGRzdF9maWx0ZXIsIHNyY19maWx0ZXIpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMzA3LVxcdFxcdGVsc2VcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzE5LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbm1tL2RhbW9uL2NvcmUuYzoxMzIwOlxcdFxcdGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKG5ld19maWx0ZXIsIHNyY19maWx0ZXIpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMzIxLVxcdFxcdGRhbW9zX2FkZF9maWx0ZXIoZHN0LCBuZXdfZmlsdGVyKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMzUyPXN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX3Byb2JlX3BhcmFtcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM4MC0vKlxcbm1tL2RhbW9uL2NvcmUuYzoxMzgxOiAqIGRhbW9zX2NvbW1pdF9kZXN0cygpIC0gQ29weSBtaWdyYXRpb24gZGVzdGluYXRpb25zIGZyb20gQHNyYyB0byBAZHN0Llxcbm1tL2RhbW9uL2NvcmUuYy0xMzgyLSAqIEBkc3Q6XFx0RGVzdGluYXRpb24gc3RydWN0dXJlIHRvIHVwZGF0ZS5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzk2LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMzk3OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2Rlc3RzKHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTEzOTgtXFx0XFx0c3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDI3LVxcbm1tL2RhbW9uL2NvcmUuYzoxNDI4OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2ZpbHRlcnMoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNDI5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDMxLVxcbm1tL2RhbW9uL2NvcmUuYzoxNDMyOlxcdGVyciA9IGRhbW9zX2NvbW1pdF9jb3JlX2ZpbHRlcnMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xNDMzLVxcdGlmIChlcnIpXFxubW0vZGFtb24vY29yZS5jLTE0MzQtXFx0XFx0cmV0dXJuIGVycjtcXG5tbS9kYW1vbi9jb3JlLmM6MTQzNTpcXHRlcnIgPSBkYW1vc19jb21taXRfb3BzX2ZpbHRlcnMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xNDM2LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTQ0Mj1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9udGhfc2NoZW1lKGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ1My1cXG5tbS9kYW1vbi9jb3JlLmM6MTQ1NDpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdChzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE0NTUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0NjEtXFxubW0vZGFtb24vY29yZS5jOjE0NjI6XFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhKFxcdTAwMjZkc3QtXFx1MDAzZXF1b3RhLCBcXHUwMDI2c3JjLVxcdTAwM2VxdW90YSk7XFxubW0vZGFtb24vY29yZS5jLTE0NjMtXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDY4LVxcbm1tL2RhbW9uL2NvcmUuYzoxNDY5OlxcdGVyciA9IGRhbW9zX2NvbW1pdF9kZXN0cyhcXHUwMDI2ZHN0LVxcdTAwM2VtaWdyYXRlX2Rlc3RzLCBcXHUwMDI2c3JjLVxcdTAwM2VtaWdyYXRlX2Rlc3RzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTQ3MC1cXHRpZiAoZXJyKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0NzItXFxubW0vZGFtb24vY29yZS5jOjE0NzM6XFx0ZXJyID0gZGFtb3NfY29tbWl0X2ZpbHRlcnMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xNDc0LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTQ4MT1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0ODgtXFx0XFx0aWYgKHNyY19zY2hlbWUpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MTQ4OTpcXHRcXHRcXHRlcnIgPSBkYW1vc19jb21taXQoZHN0X3NjaGVtZSwgc3JjX3NjaGVtZSk7XFxubW0vZGFtb24vY29yZS5jLTE0OTAtXFx0XFx0XFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNTA2LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbm1tL2RhbW9uL2NvcmUuYzoxNTA3OlxcdFxcdGVyciA9IGRhbW9zX2NvbW1pdChuZXdfc2NoZW1lLCBzcmNfc2NoZW1lKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTUwOC1cXHRcXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjQ0LjY1MTA3NDIzN1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk1MzE5MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgRGVlcCBpbnRvIERBTU9OIENvbW1pdCBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRhbW9uX2NvbW1pdF9zY2hlbWVzYC4gRnJvbSB0aGUgY29kZSwgaXQncyBjbGVhciB0aGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24gd2l0aGluIERBTU9OJ3MgY29tbWl0IHBoYXNlLiBJdCdzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBkYW1vbl9jb21taXRfY3R4YCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGFjdHVhbCBhcHBsaWNhdGlvbiBvZiB0aGUgY29tbWl0IG9wZXJhdGlvbnMsIG9uY2UgdGhlIGNvbnRleHQgZm9yIHRoZSBjb21taXQgaGFzIGJlZW4gZXN0YWJsaXNoZWQuIFRoaXMgbWVhbnMgaXQncyB0aGUgY29yZSBvZiBob3cgREFNT04gZGVjaWRlcyAqaG93KiB0byBjaGFuZ2UgbWVtb3J5IHN0YXRlcyBiYXNlZCBvbiB0aGUgZGVjaXNpb25zIG1hZGUgaW4gdGhlIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgKmluc2lkZSogYGRhbW9uX2NvbW1pdF9zY2hlbWVzYCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb250ZXh0IGRhdGEuIElzIGl0IGl0ZXJhdGluZyB0aHJvdWdoIGEgbGlzdCBvZiBzY2hlbWVzPyBBcmUgdGhlc2UgZGlmZmVyZW50IG9wdGltaXphdGlvbiBzdHJhdGVnaWVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBpbXBhY3RzIGhlcmU/IEkgbmVlZCB0byBsb29rIGRlZXBlciBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGFtb25fY29tbWl0X3NjaGVtZXNgIGFuZCBkZXRlcm1pbmUgaXRzIHBhcmFtZXRlcnMuIEknbSBnb2luZyB0byBkZXRlcm1pbmUgd2hhdCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyB1c2VkIGFzIHdlbGwsIGluIG9yZGVyIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMDcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1Nzo0OC4wNDYzOTU4MzZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODAwMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz0xNzI4PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNzYwLVxcbm1tL2RhbW9uL2NvcmUuYzoxNzYxOnN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNzYyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xODE5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4MjYtXFx0XFx0cmV0dXJuIE5VTEw7XFxubW0vZGFtb24vY29yZS5jOjE4Mjc6XFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpO1xcbm1tL2RhbW9uL2NvcmUuYy0xODI4LVxcdGlmIChlcnIpIHtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODM1LS8qKlxcbm1tL2RhbW9uL2NvcmUuYzoxODM2OiAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLlxcbm1tL2RhbW9uL2NvcmUuYy0xODM3LSAqIEBkc3Q6XFx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0Llxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4NDctICovXFxubW0vZGFtb24vY29yZS5jOjE4NDg6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE4NDkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4NTUtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxubW0vZGFtb24vY29yZS5jOjE4NTY6XFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xODU3LVxcdGlmIChlcnIpXFxubW0vZGFtb24vY29yZS5jLTE4NTgtXFx0XFx0Z290byBvdXQ7XFxubW0vZGFtb24vY29yZS5jOjE4NTk6XFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTg2MC1vdXQ6XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTk0NT1zdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE5NjYtXFxubW0vZGFtb24vY29yZS5jOjE5Njc6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xOTY4LVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTE5ODQ9aW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk5NS1cXG5tbS9kYW1vbi9jb3JlLmM6MTk5NjpcXHRcXHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGN0eHNbaV0pO1xcbm1tL2RhbW9uL2NvcmUuYy0xOTk3LVxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6NDguMDkwMjAwNDg1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzEwMDc2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBEQU1PTiBTeXNmcyBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIGBkYW1vbl9jb21taXRfY3R4YCBpcyBvdXQgdGhlcmUsIGJlaW5nIHVzZWQgYnkgdGhlIHN5c2ZzIGludGVyZmFjZS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHdvdWxkIGJlIGluIHRoZSBjb3JlIHN5c2ZzIGZpbGVzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IGVpdGhlciBgbW0vZGFtb24vc3lzZnMuY2Agb3IsIGlmIHRoZSBjb250ZXh0IGlzIG1vcmUgYWJvdXQgdGhlIHNjaGVtYXMgdGhlbXNlbHZlcywgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24sIHVzYWdlLCBhbmQgYW55IGFzc29jaWF0ZWQgZGV0YWlscyBhYm91dCBgZGFtb25fY29tbWl0X2N0eGAuIEkga25vdyB0aGF0IHRoZXNlIGZpbGVzIG9mdGVuIHByb3ZpZGUgdGhlIGxpbmthZ2UgYmV0d2VlbiB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UgKHN5c2ZzKSBhbmQgdGhlIERBTU9OIGNvcmUuIEkgd2lsbCBhbHNvIGJlIGxvb2tpbmcgZm9yIHVzYWdlIGluIG90aGVyIERBTU9OIGNvcmUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxNTgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1Nzo1Mi45NjEyMTA0OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3OTgxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fY29tbWl0X2N0eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTE3Mjg9c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NjAtXFxubW0vZGFtb24vY29yZS5jOjE3NjE6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE3NjIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTE4MTk9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTgyNi1cXHRcXHRyZXR1cm4gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmM6MTgyNzpcXHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGRzdCk7XFxubW0vZGFtb24vY29yZS5jLTE4MjgtXFx0aWYgKGVycikge1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4MzUtLyoqXFxubW0vZGFtb24vY29yZS5jOjE4MzY6ICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXFxubW0vZGFtb24vY29yZS5jLTE4MzctICogQGRzdDpcXHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg0Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTg0ODppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTg0OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg1NS1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9jb3JlLmM6MTg1NjpcXHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHNyYyk7XFxubW0vZGFtb24vY29yZS5jLTE4NTctXFx0aWYgKGVycilcXG5tbS9kYW1vbi9jb3JlLmMtMTg1OC1cXHRcXHRnb3RvIG91dDtcXG5tbS9kYW1vbi9jb3JlLmM6MTg1OTpcXHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xODYwLW91dDpcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xOTQ1PXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni1cXG5tbS9kYW1vbi9jb3JlLmM6MTk2NzpzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYyk7XFxubW0vZGFtb24vY29yZS5jLTE5NjgtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTk4ND1pbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTk1LVxcbm1tL2RhbW9uL2NvcmUuYzoxOTk2OlxcdFxcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgY3R4c1tpXSk7XFxubW0vZGFtb24vY29yZS5jLTE5OTctXFx0XFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0yNzE9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTMzNS1cXHRcXHRnb3RvIG91dDtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjMzNjpcXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGN0eCwgcGFyYW1fY3R4KTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTMzNy1vdXQ6XFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmM9MTk0PXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmMtMjYyLVxcdFxcdGdvdG8gb3V0O1xcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNjM6XFx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChjdHgsIHBhcmFtX2N0eCk7XFxubW0vZGFtb24vcmVjbGFpbS5jLTI2NC1vdXQ6XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIxMzE9c3RhdGljIGludCBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQodm9pZCAqZGF0YSlcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjE0NS1cXHRcXHRyZXR1cm4gUFRSX0VSUihwYXJhbV9jdHgpO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjE0NjpcXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCwgcGFyYW1fY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIxNDctXFx0ZGFtb25fZGVzdHJveV9jdHgocGFyYW1fY3R4KTtcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMzA5PXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X2N0eChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTMyMi1cXHRzcmMtXFx1MDAzZW1pbl9yZWdpb25fc3ogPSA0MDk2O1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMzIzOlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKSwgMCk7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEzMjQtXFx0c3JjLVxcdTAwM2VtaW5fcmVnaW9uX3N6ID0gNDA5NTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTMyNTpcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyksIC1FSU5WQUwpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMzI2LVxcdHNyYy1cXHUwMDNlbWluX3JlZ2lvbl9zeiA9IDQwOTY7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEzMjctXFx0c3JjLVxcdTAwM2VwYXVzZSA9IHRydWU7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEzMjg6XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpLCAwKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTMyOS1cXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBkc3QtXFx1MDAzZXBhdXNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6NTMuMDA1MDEzOTI5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMDI2Nzg0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBDb21taXQgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBoZXJlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhlIERBTU9OIHN5c3RlbSdzIGNvbW1pdCBtZWNoYW5pc20gaXMgdHJpZ2dlcmVkLiBJdCBsb29rcyBsaWtlIHRoZSBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBmdW5jdGlvbiBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgY2FsbGluZyBgZGFtb25fY29tbWl0X2N0eGAuIE5vdywgYmVjYXVzZSB0aGlzIGlzIHRoZSBzeXNmcyBpbnRlcmZhY2UsIGl0IG1lYW5zIHVzZXJzcGFjZSBjYW4gZGlyZWN0bHkgaW5mbHVlbmNlIHRoZSBleGVjdXRpb24gb2YgYGRhbW9uX2NvbW1pdF9jdHhgLCB3aGljaCB0aGVuIGxlYWRzIHRvIGBkYW1vbl9jb21taXRfcXVvdGFfZ29hbGAuIFRoYXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kIGZvciBleHRlcm5hbCBjb250cm9sLlxuXG5GdXJ0aGVybW9yZSwgSSd2ZSBub3RpY2VkIHRoYXQgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgIGFuZCBgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzYCBhbHNvIHRyaWdnZXIgdGhlIHNhbWUgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBhcm91bmQgYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAsIGluIGBtbS9kYW1vbi9zeXNmcy5jYCB0byBiZXR0ZXIgc2VlIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNhbGxzLCBhbmQgaG93IHRoZSBvdmVyYWxsIGNvbW1pdCBwcm9jZXNzIHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1Nzo1OS4zMDc2OTUyMTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTYyNDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9zeXNmcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MjEyMj1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc3lzZnNfYnVpbGRfY3R4KFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMTI1LS8qXFxubW0vZGFtb24vc3lzZnMuYzoyMTI2OiAqIGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCgpIC0gQ29tbWl0IHVzZXIgaW5wdXRzIHRvIGEgcnVubmluZyBrZGFtb25kLlxcbm1tL2RhbW9uL3N5c2ZzLmMtMjEyNy0gKiBAa2RhbW9uZDpcXHRUaGUga29iamVjdCB3cmFwcGVyIGZvciB0aGUgYXNzb2NpYXRlZCBrZGFtb25kLlxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMTMwLSAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjEzMTpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjEzMi17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIzNjQ9c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3Ni1cXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jOjIzNzc6XFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfY29tbWl0X2lucHV0LCBrZGFtb25kKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzgtXFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFM6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjU5LjM1NzY2MzgyMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDczNDU3NjY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEEgQnVnIEZpeCBpbiBRdW90YSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIHRoZSBmaXJzdCB0aGluZyBJJ20gc2VlaW5nIGlzIHRoYXQgdGhlIHN5c2ZzIGludGVyZmFjZSBpcyByZWFjaGFibGUsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gdGhlIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgZnVuY3Rpb24uIEl0J3Mgbm93IGdvaW5nIHRvIHJldHVybiBgLUVJTlZBTGAgaWYgdGhlIGBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyB6ZXJvLiBUaGF0J3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0IGltbWVkaWF0ZWx5IHNldHMgb2ZmIGFsYXJtIGJlbGxzIGFib3V0IHBvdGVudGlhbCBhcml0aG1ldGljIGlzc3Vlcy5cblxuUmlnaHQsIHRoZSByZWFzb24gZm9yIHRoaXMgaXMgY2xlYXJseSBzdGF0ZWQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlOiBcInplcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKClcIi4gQmluZ28hIFNvLCB3ZSdyZSB0YWxraW5nIGFib3V0IGEgYnVnIGZpeC4gQSBkaXZpc2lvbi1ieS16ZXJvLCBhbHdheXMgYSBmdW4gb25lLiBMZXQncyBzZWUuLi4gdGhlIHBhdGNoIGlzIGludGVuZGVkIHRvIGFkZHJlc3MgdGhhdCBzY2VuYXJpby5cblxuTm93LCBteSBuZXh0IG1vdmUgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRhbW9zX3F1b3RhX3N0b3JlYCwgb3IgYW55dGhpbmcgc2ltaWxhciB0byBpdCwgYW5kIHRyYWNlIHRoZSB2YWx1ZSB0byBjb25maXJtIHRoaXMgYXMgYSBidWcuIEkga25vdyB0aGF0IEkgbXVzdCBsb29rIGNsb3NlbHkgZm9yIGhvdyBgc3JjLVx1MDAzZXRhcmdldF92YWx1ZWAgaXMgdXNlZCwgc3BlY2lmaWNhbGx5IGluIGEgZGl2aXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTcwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU4OjI0LjA5MjI0NDQyN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwMjkxMjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX3F1b3RhX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6MjQuMTUwMjgzODg2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODg1NDkzNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIGEgU3VzcGVjdCBEaXZpc2lvbiBieSBaZXJvKipcblxuT2theSwgbGV0IG1lIHNlZS4uLiB0aGUgY29tbWl0IG1lc3NhZ2UgZmxhZ3MgYSBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIHdpdGhpbiBgZGFtb3NfcXVvdGFfc3RvcmUoKWAgd2hlbiB0aGUgdGFyZ2V0IHZhbHVlIGlzIHplcm8uIEJ1dCwgd2FpdCBhIG1pbnV0ZSwgdGhlIGFjdHVhbCBwYXRjaCBzaG93cyBhIGNoZWNrIGZvciBudWxsIHBvaW50ZXJzLCBgbm9kZTBfbWVtX3VzZWRfYnBgIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgLCBhbmQgYSBgZ290byBmcmVlX291dDtgIGlmIGVpdGhlciBhcmUgbnVsbC4gVGhhdCBkb2Vzbid0IGRpcmVjdGx5IHNjcmVhbSBcImRpdmlzaW9uIGJ5IHplcm9cIiBpbiBgZGFtb3NfcXVvdGFfc3RvcmUoKWAuIEhtbSwgdGhlIGNvbW1lbnQgaXRzZWxmIGFwcGVhcnMgdG8gYmUgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuLi4gSW50ZXJlc3RpbmcuXG5cbkl0IHNlZW1zIEknbSBiYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlLiBUaGlzIGxpa2VseSBpbXBsaWVzIHRoZSBwcm9ibGVtIHN0ZW1zIGZyb20gYSBkaWZmZXJlbnQgZnVuY3Rpb24sIHBvdGVudGlhbGx5IGEgZnVuY3Rpb24gc2ltaWxhciB0byBgZGFtb3NfcXVvdGFfc2NvcmVgLCBvciB3aXRoaW4gYW4gaW5kaXJlY3QgY2FsbCBjaGFpbi4gVGhlIGNoZWNrIHRoYXQgdGhlIHBhdGNoIGludHJvZHVjZXMgaXMgYXR0ZW1wdGluZyB0byBwcmV2ZW50IHRoZSBkaXZpc2lvbi4gTm93IEkgbmVlZCB0byB0cmFjayBkb3duIGV4YWN0bHkgKndoZXJlKiB0aGUgZGl2aXNpb24gaXMgb2NjdXJyaW5nLCBpZiBub3QgaW4gdGhlIHRhcmdldCBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIHNlcXVlbmNlIGFuZCBsb29rIGF0IHRoZSB2YXJpYWJsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTc3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU4OjI4LjgzODgzODY0OFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNDg3MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFyZ2V0X3ZhbHVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9NjI3PXN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmMtNjI4LVxcdFxcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljLFxcbm1tL2RhbW9uL2NvcmUuYzo2Mjk6XFx0XFx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWUpXFxubW0vZGFtb24vY29yZS5jLTYzMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjM2LVxcdGdvYWwtXFx1MDAzZW1ldHJpYyA9IG1ldHJpYztcXG5tbS9kYW1vbi9jb3JlLmM6NjM3OlxcdGdvYWwtXFx1MDAzZXRhcmdldF92YWx1ZSA9IHRhcmdldF92YWx1ZTtcXG5tbS9kYW1vbi9jb3JlLmMtNjM4LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZnb2FsLVxcdTAwM2VsaXN0KTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMTM5PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE0MS17XFxubW0vZGFtb24vY29yZS5jOjExNDI6XFx0aWYgKCFzcmMtXFx1MDAzZXRhcmdldF92YWx1ZSlcXG5tbS9kYW1vbi9jb3JlLmMtMTE0My1cXHRcXHRyZXR1cm4gIC1FSU5WQUw7XFxubW0vZGFtb24vY29yZS5jLTExNDQtXFx0ZHN0LVxcdTAwM2VtZXRyaWMgPSBzcmMtXFx1MDAzZW1ldHJpYztcXG5tbS9kYW1vbi9jb3JlLmM6MTE0NTpcXHRkc3QtXFx1MDAzZXRhcmdldF92YWx1ZSA9IHNyYy1cXHUwMDNldGFyZ2V0X3ZhbHVlO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTQ2LVxcdGlmIChkc3QtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTExNjU9aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE4My1cXHRcXHRuZXdfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYzoxMTg0OlxcdFxcdFxcdFxcdHNyY19nb2FsLVxcdTAwM2VtZXRyaWMsIHNyY19nb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTg1LVxcdFxcdGlmICghbmV3X2dvYWwpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzA1Nz1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19xdW90YV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzA2Ni1cXHRcXHRcXHRcXHRtdWx0X2ZyYWMoZ29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSwgMTAwMDAsXFxubW0vZGFtb24vY29yZS5jOjMwNjc6XFx0XFx0XFx0XFx0XFx0Z29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKSk7XFxubW0vZGFtb24vY29yZS5jLTMwNjgtXFx0fVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyMTU9c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTctXFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWM7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMTg6XFx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWU7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTktXFx0dW5zaWduZWQgbG9uZyBjdXJyZW50X3ZhbHVlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyOTE9c3RhdGljIHNzaXplX3QgdGFyZ2V0X21ldHJpY19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzEwOnN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzExLVxcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMTUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMTY6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJWx1XFxcXG5cXFwiLCBnb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE3LX1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxOTpzdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMjAtXFx0XFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzIzLVxcdFxcdFxcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzI0OlxcdGludCBlcnIgPSBrc3RydG91bChidWYsIDAsIFxcdTAwMjZnb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzI1LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MTU9c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF9tZXRyaWNfYXR0ciA9XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxNy1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDE5OlxcdFxcdF9fQVRUUl9SV19NT0RFKHRhcmdldF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjAtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTQzMD1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hdHRyc1tdID0ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMxLVxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF9tZXRyaWNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDMyOlxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF92YWx1ZV9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MzMtXFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZV9hdHRyLmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjg0Nz1zdGF0aWMgaW50IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODU3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODU4OlxcdFxcdGlmICghc3lzZnNfZ29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODU5LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NjEtXFx0XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKHN5c2ZzX2dvYWwtXFx1MDAzZW1ldHJpYyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg2MjpcXHRcXHRcXHRcXHRzeXNmc19nb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODYzLVxcdFxcdGlmICghZ29hbClcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD03NTA9c3RhdGljIHZvaWQgZGFtb3NfdGVzdF9jb21taXRfcXVvdGFfZ29hbF9mb3Ioc3RydWN0IGt1bml0ICp0ZXN0LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc2MC1cXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZHN0LVxcdTAwM2VtZXRyaWMsIHNyYy1cXHUwMDNlbWV0cmljKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NzYxOlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkc3QtXFx1MDAzZXRhcmdldF92YWx1ZSwgc3JjLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03NjItXFx0aWYgKHNyYy1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9NzgxPXN0YXRpYyB2b2lkIGRhbW9zX3Rlc3RfY29tbWl0X3F1b3RhX2dvYWwoc3RydWN0IGt1bml0ICp0ZXN0KVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc4NC1cXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfU09NRV9NRU1fUFNJX1VTLFxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo3ODU6XFx0XFx0LnRhcmdldF92YWx1ZSA9IDEwMDAsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc4Ni1cXHRcXHQuY3VycmVudF92YWx1ZSA9IDEyMyxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03OTItXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjc5MzpcXHRcXHRcXHQudGFyZ2V0X3ZhbHVlID0gNzg5LFxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03OTQtXFx0XFx0XFx0LmN1cnJlbnRfdmFsdWUgPSAxMn0pO1xcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc5Ny1cXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6Nzk4OlxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAzNDUsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc5OS1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDY3OCxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MDQtXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlAsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjgwNTpcXHRcXHRcXHQudGFyZ2V0X3ZhbHVlID0gMTIsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgwNi1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDM0NSxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MTEtXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODEyOlxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSA0NTYsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgxMy1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDU2NyxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MTktXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODIwOlxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSA4OTAsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgyMS1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDkwMSxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MjctXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUyxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODI4OlxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAyMzQsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgyOS1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDM0NSxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD04MzQ9c3RhdGljIHZvaWQgZGFtb3NfdGVzdF9jb21taXRfcXVvdGFfZ29hbHNfZm9yKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04NTMtXFx0XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKGRzdF9nb2Fsc1tpXS5tZXRyaWMsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjg1NDpcXHRcXHRcXHRcXHRkc3RfZ29hbHNbaV0udGFyZ2V0X3ZhbHVlKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODU1LVxcdFxcdGlmICghZ29hbClcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04NzUtXFx0XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGdvYWwtXFx1MDAzZW1ldHJpYywgc3JjX2dvYWxzW2ldLm1ldHJpYyk7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjg3NjpcXHRcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZ29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlLFxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo4Nzc6XFx0XFx0XFx0XFx0c3JjX2dvYWxzW2krK10udGFyZ2V0X3ZhbHVlKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODc4LVxcdH1cXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD04ODg9c3RhdGljIHZvaWQgZGFtb3NfdGVzdF9jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTg5NC1cXHRcXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODk1OlxcdFxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAxMjMsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTg5Ni1cXHRcXHRcXHRcXHR9LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwMS1cXHRcXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6OTAyOlxcdFxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAyMzQsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwMy1cXHRcXHRcXHRcXHR9LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwOC1cXHRcXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6OTA5OlxcdFxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAzNDUsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkxMC1cXHRcXHRcXHRcXHR9LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkxNS1cXHRcXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6OTE2OlxcdFxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSA0NTYsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkxNy1cXHRcXHRcXHRcXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1ODoyOC44ODc5OTU0MzdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAzOTg0NDE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gUXVvdGEgU2NvcmUgQnVnZml4KipcblxuT2theSwgc28gdGhlIGRpdmlzaW9uIGJ5IHplcm8gaXMgaGFwcGVuaW5nIGluc2lkZSBgZGFtb3NfcXVvdGFfc2NvcmVgLiBJIHNlZSBpdCBjbGVhcmx5OlxuXG5gYGBjXG5cdFx0XHRzY29yZSA9IG1heChzY29yZSxcblx0XHRcdFx0bXVsdF9mcmFjKGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSwgMTAwMDAsXG5cdFx0XHRcdFx0Z29hbC1cdTAwM2V0YXJnZXRfdmFsdWUpKTtcbmBgYFxuXG5JZiBgZ29hbC1cdTAwM2V0YXJnZXRfdmFsdWVgIGlzIHplcm8sIHdlJ3JlIGRpdmlkaW5nIGJ5IHplcm8uIFNpbXBsZSBlbm91Z2guIFRoZSBwcm9wb3NlZCBwYXRjaCBhZGRyZXNzZXMgdGhpcyBieSBoYXZpbmcgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCByZXR1cm4gYC1FSU5WQUxgIGlmIHRoZSBgc3JjLVx1MDAzZXRhcmdldF92YWx1ZWAgaXMgemVybywgd2hpY2ggc2VlbXMgcmVhc29uYWJsZS5cblxuTm93LCBsZXQncyB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgdGhlIGZ1bGwgcGljdHVyZS4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpcyBjYWxsZWQgZnJvbSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCwgd2hpY2ggdGhlbiBmZWVkcyBpbnRvIGBkYW1vc19jb21taXRfcXVvdGFgLCB3aGljaCBpcyBjYWxsZWQgYnkgYGRhbW9zX2NvbW1pdGAsIHdoaWNoIGlzIHN1YnNlcXVlbnRseSBjYWxsZWQgZnJvbSBgZGFtb25fY29tbWl0X3NjaGVtZXNgLCBhbmQgZmluYWxseSwgYGRhbW9uX2NvbW1pdF9jdHhgLiBUaGUgY3J1Y2lhbCBlbnRyeSBwb2ludCBpcyBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCwgd2hpY2ggY2FsbHMgYGRhbW9uX2NvbW1pdF9jdHhgLiBBaCwgc28gYSB1c2VyIGNhbiB3cml0ZSBkaXJlY3RseSB0byBgdGFyZ2V0X3ZhbHVlYCB0aHJvdWdoIHN5c2ZzLCBhbmQgdGhlbiB0cmlnZ2VyIGBjb21taXRfaW5wdXRgLCB3aGljaCBwcmV2aW91c2x5IGFsbG93ZWQgYHRhcmdldF92YWx1ZWAgdG8gYmUgc2V0IHRvIHplcm8sIGFuZCB0aGUgZGl2aXNpb24gYnkgemVybyB3b3VsZCBvY2N1ciBpbiBgZGFtb3NfcXVvdGFfc2NvcmVgLiBOb3cgaXQgY29ycmVjdGx5IHJldHVybnMgYC1FSU5WQUxgLlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGJ1ZyBmaXgsIGFuZCBpdCdzIGRlZmluaXRlbHkgdXNlci1yZWFjaGFibGUgdmlhIHRoZSBzeXNmcyBpbnRlcmZhY2UuIFRoZSBleGlzdGVuY2Ugb2YgdGhlIHN5c2ZzIGludGVyZmFjZSBpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfREFNT05fU1lTRlNgLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvbiB0aGF0IGNvbmZpZyBvcHRpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgaW1wbGljYXRpb25zIGZvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1MDAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6MzQuOTI3ODQyNDI3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDE5OTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05fU1lTRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTU2PWNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxcbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy02OS1cXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxcbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1ODozNC45NzIwNDY4MzZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNTg3ODczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFieXJpbnRoKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEknbSB0aGlua2luZywgXCJBbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHJvdWdobHkgbGluZSA2OC5cIiBXaHkgdGhhdCBsaW5lPyBXZWxsLCBJIGRvbid0IGtub3cgeWV0LCBidXQgaXQncyBhIHN0YXJ0aW5nIHBvaW50LiBJdCBjb3VsZCBiZSB3aGVyZSBhIHNwZWNpZmljIGZlYXR1cmUgaXMgZGVmaW5lZCwgYSBjcml0aWNhbCB2YXJpYWJsZSBpcyBkZWNsYXJlZCwgb3IgcGVyaGFwcyB3aGVyZSBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBzZXRzIHVwIHNvbWV0aGluZyByZWxldmFudC4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgdHJhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzk4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6MzcuOTc3OTI3NzM3WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNjg6XFx0Y29uZmlnIERBTU9OX1NZU0ZTXFxuICA2OTpcXHRcXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxuICA3MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IFNZU0ZTXFxuICA3MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA3MjpcXHRcXHRoZWxwXFxuICA3MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxcbiAgNzQ6XFx0XFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcXG4gIDc3OlxcdFxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1ODozNy45NzgwMDI3MzdaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyMzgxOTE5NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqREFNT04gUXVvdGEgR29hbCBDaGFuZ2VzIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaG93IGl0IG1vZGlmaWVzIHRoZSBEQU1PTiBxdW90YSBnb2FsIGhhbmRsaW5nLiBJdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgYERBTU9OX1NZU0ZTYCwgd2hpY2gsIG5hdHVyYWxseSwgZGVwZW5kcyBvbiBgREFNT05gIGFuZCBgU1lTRlNgLiBUaGUgY29kZSBjaGFuZ2VzIGFyZSBpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AgYW5kIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIHNwZWNpZmljYWxseS5cblxuSW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgLCB0aGVyZSdzIGFuIGludGVyZXN0aW5nIHJlbW92YWwuIFRoYXQgY2hlY2sgYGlmICgxMDAwMCBcdTAwM2MgYWN0aXZlX21lbV9icClgIGlzIGdvbmUuIEkgaW5pdGlhbGx5IHRob3VnaHQgaXQgd2FzIGJlY2F1c2UgYGRhbW9zX25ld19xdW90YV9nb2FsYCBkaWRuJ3QgY2FyZSBhYm91dCB0aGUgdXBwZXIgYm91bmQsIGJ1dCB0aGF0J3Mgbm90IHF1aXRlIHJpZ2h0LiBBZnRlciBhIGxpdHRsZSBtb3JlIGRpZ2dpbmcsIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgKm5vdyogaGFuZGxlcyB0aGUgaW52YWxpZCB2YWx1ZSBjaGVjaywgcmV0dXJuaW5nIGAtRUlOVkFMYCBpZiBgdGFyZ2V0X3ZhbHVlYCBpcyAwLiBTbyB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFib3V0IHNoaWZ0aW5nIHRoZSBlcnJvciBjaGVjayBmcm9tIHRoZSBxdW90YSBnb2FsICphZGRpdGlvbiogZnVuY3Rpb24gdG8gdGhlICpjb21taXQqIGZ1bmN0aW9uLiBDb25zZXF1ZW50bHksIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgYGFjdGl2ZV9tZW1fYnBgIGlzIG5vbi16ZXJvIHdoZW4gdGhlIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAgaXMgY2FsbGVkLlxuXG5UaGUgc2l0dWF0aW9uIGlzIHZlcnkgc2ltaWxhciBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gVGhhdCBjaGVjayBmb3IgemVybyBgbm9kZTBfbWVtX3VzZWRfYnBgIG9yIGBub2RlMF9tZW1fZnJlZV9icGAgaXMgYWxzbyBnb25lLiBJdCdzIHRoZSBzYW1lIHJhdGlvbmFsZSBhcyBgbW0vZGFtb24vbHJ1X3NvcnQuY2A6IHRoZSByZXNwb25zaWJpbGl0eSBoYXMgc2hpZnRlZCB0byBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgLCB3aGljaCBub3cgcmV0dXJucyBgLUVJTlZBTGAgaWYgYHRhcmdldF92YWx1ZWAgaXMgMC4gV2FpdCwgYGRhbW9zX25ld19xdW90YV9nb2FsYCBkb2Vzbid0IGFjdHVhbGx5ICpyZXR1cm4qIGAtRUlOVkFMYCwgaXQganVzdCBhbGxvY2F0ZXMgdGhlIGRhdGEuIFRoZSBlcnJvciBpcyBvbmx5IHBvc3NpYmxlIGF0IHRoZSBjb21taXQgc3RlcCB3aGVuIGBkYW1vbl9jb21taXRfY3R4YCBpcyBjYWxsZWQsIGJlY2F1c2UgaXQgZXZlbnR1YWxseSBjYWxscyBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgYG10aWVyLmNgIHNhbXBsZSwgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGJ1aWxkcyB0aGUgY29udGV4dCBhbmQgdGhlbiBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCBraWNrcyB0aGluZ3Mgb2ZmIHdpdGggYSBjYWxsIHRvIGBkYW1vbl9zdGFydGAuIEFuZCBgZGFtb25fc3RhcnRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGNhbGxzIGBfX2RhbW9uX2NvbW1pdF9jdHhgIHRvIHZhbGlkYXRlIHRoZSBwYXJhbWV0ZXJzLCBzbyB5ZXMsIHRoZSBjaGVjayBpcyBub3cgcmVkdW5kYW50LlxuXG5UaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBmb2N1c2VkIGFyb3VuZCBgbW0vZGFtb24vY29yZS5jYCwgc3BlY2lmaWNhbGx5IGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgYW5kIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLiBUaGlzIGRlZmluaXRlbHkgbG9va3MgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgY2FuIGV4cGxvcmUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBhZGRlZCBlcnJvciBoYW5kbGluZy5cblxuVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb25zIEknbSBtb3N0IGludGVyZXN0ZWQgaW4gZm9yIGZ1enppbmcgYXJlOlxuXG4qICAgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYFxuKiAgIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgXG4qICAgYGRhbW9uX2NvbW1pdF9jdHhgXG4qICAgYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGBcbiogICBgZGFtb3NfcXVvdGFfc2NvcmVgXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlaXIgdmlzaWJpbGl0eS4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AgYW5kIGBkYW1vbl9jb21taXRfY3R4YCBhcmUgbm9uLXN0YXRpYy4gYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAgYW5kIGBkYW1vc19xdW90YV9zY29yZWAgYXJlIHN0YXRpYy4gSSB3aWxsIG5vdyBsb29rIG92ZXIgdGhlIGNvZGUgaW4gYG1tL2RhbW9uL2NvcmUuY2AgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzM0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6NDkuMjE2MTk3MjgzWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI3MDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTExMzk9c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTY0LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMTY1OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xMTY2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6NDkuMjU5NDcyOTAyWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NTYyMzYzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXAgaW4gbXkgZG9tYWluIG9mIGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgQ29tbWl0IENvbnRleHQqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGNoZWNraW5nIHRoZSBgZGFtb25fY29tbWl0X2N0eGAuIEkga25vdyBpdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlIG9mIHRoaXMgY29tbWl0IGFuZCB0aGUgdmFyaW91cyBjb250ZXh0dWFsIGFzcGVjdHMgdGhhdCBpbmZsdWVuY2UgdGhlIGN1cnJlbnQgb3BlcmF0aW9uLiBJJ20gZ29pbmcgdG8gc3RhcnQgdGhlcmUsIGRpdmUgaW50byB0aGUgZGV0YWlscyB3aXRoaW4gaXQsIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gSSBleHBlY3QuIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZW5kZWQgYWN0aW9ucy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LiBJdCdzIHRoZSBseW5jaHBpbiBvZiB1bmRlcnN0YW5kaW5nIHRoZSBwcmVzZW50IHN0YWdlIGFuZCBkZXRlcm1pbmluZyBteSBuZXh0IGFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NDQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1ODo1Mi4yMTU3MTE1NzRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTg1MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgZGFtb25fY29tbWl0X2N0eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTE4MTk9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg0Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTg0ODppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTg0OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU4OjUyLjI1OTMwMjM3MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDUwNDE3MTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgbWVudGFsIG1vZGVsIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3Q6IGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBvaW50IGZvciBhbnkgRHluYW1pYyBBZGFwdGl2ZSBNZW1vcnkgT3B0aW1pemVyIChEQU1PTikgc3lzdGVtIGludGVyYWN0aW5nIHdpdGggc3lzZnMsIGFuZCBpbiBwYXJ0aWN1bGFyIGEgZnVuY3Rpb24gbmFtZSB0aGF0IGxpa2VseSByZWxhdGVzIHRvIHRha2luZyB1c2VyIGlucHV0IGFuZCBjb25maWd1cmluZyB0aGUgbW9uaXRvcmluZy4gR2l2ZW4gdGhlIGZ1bmN0aW9uIG5hbWUsIEknZCBleHBlY3QgaXQgaXMgdGhlIHBvaW50IHdoZXJlIHRoZSBhY3R1YWwgbW9uaXRvcmluZyBjb25maWd1cmF0aW9uIGlzIGFwcGxpZWQgb3IgY29tbWl0dGVkLiBTcGVjaWZpY2FsbHksIEknZCBpbW1lZGlhdGVseSB3YW50IHRvIGNoZWNrOlxuXG4qICAgKipFcnJvciBIYW5kbGluZzoqKiBBcmUgdGhlcmUgcm9idXN0IGNoZWNrcyBvbiB0aGUgaW5wdXQgdmFsdWVzPyBBcmUgaW52YWxpZCBjb25maWd1cmF0aW9ucyBncmFjZWZ1bGx5IHJlamVjdGVkLCBvciBjYW4gdGhleSBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgY3Jhc2hlcz9cbiogICAqKkRhdGEgVmFsaWRhdGlvbjoqKiBBcmUgYWxsIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHRob3JvdWdobHkgdmFsaWRhdGVkIGFnYWluc3QgcmVhc29uYWJsZSByYW5nZXMgYW5kIGNvbnN0cmFpbnRzPyBTZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgZnJlcXVlbnRseSBhcmlzZSBoZXJlLlxuKiAgICoqQXRvbWljaXR5L0NvbmN1cnJlbmN5OioqIEhvdyBpcyB0aGlzIGZ1bmN0aW9uIHByb3RlY3RlZCBhZ2FpbnN0IGNvbmN1cnJlbnQgYWNjZXNzLCBlc3BlY2lhbGx5IGlmIGl0J3MgbW9kaWZ5aW5nIHNoYXJlZCBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byBEQU1PTidzIG9wZXJhdGlvbj8gQXJlIGxvY2tzIHVzZWQgYXBwcm9wcmlhdGVseSBhbmQgZWZmaWNpZW50bHk/IElzIHRoZXJlIHBvdGVudGlhbCBmb3IgcmFjZSBjb25kaXRpb25zIG9yIGRlYWRsb2Nrcz9cbiogICAqKlNpZGUgRWZmZWN0czoqKiBXaGF0IGFyZSB0aGUgYWN0dWFsIGltcGxpY2F0aW9ucyBvZiBjb21taXR0aW5nIHRoaXMgaW5wdXQ/IERvZXMgaXQgaW1tZWRpYXRlbHkgYWZmZWN0IG1vbml0b3JpbmcgYmVoYXZpb3I/IERvZXMgaXQgcmVxdWlyZSBhbnkgYmFja2dyb3VuZCB0YXNrcyB0byBiZSBsYXVuY2hlZCBvciBtb2RpZmllZD8gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCBvdGhlciBEQU1PTiBtb2R1bGVzIG9yIHN1YnN5c3RlbXM/XG4qICAgKipSZXNvdXJjZSBNYW5hZ2VtZW50OioqIEFyZSB0aGVyZSBhbnkgcmVzb3VyY2UgbGVha3MgcG9zc2libGUgZHVyaW5nIGNvbmZpZ3VyYXRpb24gdXBkYXRlcz8gQXJlIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgZGVhbGxvY2F0aW9ucyBoYW5kbGVkIGNvcnJlY3RseSB3aXRoaW4gdGhpcyBmdW5jdGlvbiwgZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgZXJyb3JzIGR1cmluZyB0aGUgY29tbWl0IHByb2Nlc3M/XG4qICAgKipEb2N1bWVudGF0aW9uOioqIEFyZSB0aGVyZSBnb29kIGNvbW1lbnRzIGFuZCBkb2N1bWVudGF0aW9uIGV4cGxhaW5pbmcgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMsIHdoYXQgaW5wdXRzIGFyZSBhY2NlcHRlZCwgYW5kIGFueSBsaW1pdGF0aW9ucyBvciBzaWRlIGVmZmVjdHM/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5hYmlsaXR5IGFuZCBkZWJ1Z2dpbmcuXG5cbk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgd291bGQgYmUgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJ3MgY2FsbGVycyBhbmQgY2FsbGVlcyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIHdpZGVyIGFyY2hpdGVjdHVyZSBvZiBEQU1PTiBhbmQgdGhlIGtlcm5lbC4gSSdkIHRoZW4gZXhhbWluZSB0aGUgYWN0dWFsIGNvZGUgd2l0aCB0aG9zZSBxdWVzdGlvbnMgaW4gbWluZCwgY2hlY2tpbmcgZm9yIGFueSByZWQgZmxhZ3MsIG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzLCBvciBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODYyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6NTYuNzA5NzIxOFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NjQ3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vc3lzZnMuYz0yMTIyPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zeXNmc19idWlsZF9jdHgoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIxMzAtICovXFxubW0vZGFtb24vc3lzZnMuYzoyMTMxOnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXFxubW0vZGFtb24vc3lzZnMuYy0yMTMyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6NTYuNzU2NTkxOTM5WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTcwMTM0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKlByaW9yaXRpemluZyBJbnZlc3RpZ2F0aW9uOiBTeXN0ZW0gQ2FsbHMgaW4gREFNT04qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIGNvZGUuIFRoZSBpbW1lZGlhdGUgb2JzZXJ2YXRpb24gaXMgdGhhdCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBpcyBkZWZpbmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBpdCdzIGxvY2FsaXplZCBhbmQgcHJvYmFibHkgbm90IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMuIEdpdmVuIHRoYXQgY29udGV4dCwgSSdtIGdvaW5nIHRvIHNoaWZ0IG15IGZvY3VzLiBNeSBzdXNwaWNpb24gaXMgdGhhdCBhIGZ1bmN0aW9uIGxpa2UgYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgLCBvciBzb21ldGhpbmcgc2ltaWxhciwgaXMgdGhlIG1vcmUgcmVsZXZhbnQgcGllY2Ugb2YgdGhlIHB1enpsZSB0byBkaWcgaW50byBmdXJ0aGVyLiBTaW5jZSBpdCBpcyBub24tc3RhdGljLCBpdCBpcyBsaWtlbHkgdGhlIGZ1bmN0aW9uIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlIHN5c2ZzIGxheWVyLiBUaGF0IHNob3VsZCBiZSBteSBuZXh0IHBvaW50IG9mIGZvY3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ2OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjAxLjY3MzYwNzk2M1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwOTg4ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9zeXNmcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MjMzND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnMoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjMtICovXFxubW0vZGFtb24vc3lzZnMuYzoyMzY0OnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZChlbnVtIGRhbW9uX3N5c2ZzX2NtZCBjbWQsXFxubW0vZGFtb24vc3lzZnMuYy0yMzY1LVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTowMS43MjE3MTU2NzFaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTAyNzU4NTIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgYGRhbW9uX3N5c2ZzX2NtZF9zdG9yZWAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkYW1vbl9zeXNmc19jbWRfc3RvcmVgIGZ1bmN0aW9uLiBUaGUgbmFtZSBpdHNlbGYgaXMgcHJldHR5IGNsZWFyOyBpdCdzIHRoZSBzdG9yZSBmdW5jdGlvbiBmb3IgYSBjb21tYW5kIHdpdGhpbiB0aGUgYHN5c2ZzYCBpbnRlcmZhY2UgcmVsYXRlZCB0byBEQU1PTi4gQnV0IHRoYXQncyBqdXN0IHRoZSBzdXJmYWNlLiBXaGF0J3MgdGhlIGNvbnRleHQgaGVyZT8gV2hhdCBzcGVjaWZpYyBjb21tYW5kcyBpcyBpdCBoYW5kbGluZz8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIHRoaXMgaW50ZXJmYWNlPyBXaGF0IGtpbmQgb2YgZGF0YSBpcyBiZWluZyB3cml0dGVuLCBhbmQgd2hhdCB2YWxpZGF0aW9uIGlzIGluIHBsYWNlPyBJIGhvcGUgdGhlcmUncyBzb21lIGRlY2VudCBlcnJvciBjaGVja2luZy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgYSBwb3RlbnRpYWwgcG9pbnQgb2YgdnVsbmVyYWJpbGl0eTsgYSBzcG90IHNvbWVvbmUgY291bGQgZXhwbG9pdCB0byBtYW5pcHVsYXRlIERBTU9OIGluIHVuZXhwZWN0ZWQgd2F5cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHRob3JvdWdobHkgdG8gYXNzZXNzIGl0cyByb2J1c3RuZXNzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGxlcnMgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBEQU1PTiBpbmZyYXN0cnVjdHVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW4gdGhlIGxhcmdlciBgc3lzZnNgIHN0cnVjdHVyZSB3aXRoaW4gdGhlIGtlcm5lbD8gSG93IGRvZXMgaXQgcmVsYXRlIHRvIG90aGVyIERBTU9OIGNvbnRyb2xzPyBUaGlzIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiwgb3IgYW55IHNpbWlsYXIgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtLCBvcGVyYXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OToxMC43NDkzMDM3OTNaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTg3Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgc3NpemVfdCBzdGF0ZV9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9zeXNmcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MjM2ND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yNDAzLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjQwNDpzdGF0aWMgc3NpemVfdCBzdGF0ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjQwNS1cXHRcXHRjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MTAuNzk1Mjk3MTUyWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODU4OTY3NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgREFNT04gQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhpcyBEQU1PTiBpbXBsZW1lbnRhdGlvbi4gRm9yIG5vdywgSSdtIGdvaW5nIHRvIGtlZXAgbXkgbWVudGFsIGZvY3VzIG9uIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGFuZCBgZGFtb25fY29tbWl0X2N0eGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGFyZWFzIEknbGwgYmUgZGlnZ2luZyBpbnRvLiBOb3csIGZvciB0aGUgY29uZmlndXJhdGlvbnMgdGhlbXNlbHZlcywgSSBuZWVkIHRvIGVuYWJsZSB0aGVzZSBzZXR0aW5nczogYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX0xSVV9TT1JUYCwgYW5kIGltcG9ydGFudGx5LCBgU0FNUExFX0RBTU9OX01USUVSYC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IGBTQU1QTEVfREFNT05fTVRJRVJgIGlzIGltcGxlbWVudGVkLiBJIHNob3VsZCBmaXJzdCBjaGVjayB3aGV0aGVyIGl04oCZcyBkZWZpbmVkIGFzIGEgbW9kdWxlIG9yIGEgYm9vbGVhbiwgc28gSSBjYW4gcGxhbiBteSBuZXh0IHN0ZXBzIGFjY29yZGluZ2x5LiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzE3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MTQuNDgxMTk3NTUyWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY4MjMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0FNUExFX0RBTU9OX01USUVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjE0LjUzNDg4NjY3MVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQyMjY2Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoZWNraW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0J3MgZGVhbGluZyB3aXRoIGEgYm9vbGVhbiwgYSBzaW1wbGUgYGJvb2xgLiBCdXQgaG9sZCBvbiwgdGhlIGNyaXRpY2FsIHZhcmlhYmxlIGhlcmUsIGBTQU1QTEVfREFNT05fTVRJRVJgLCBhcHBlYXJzIHRvIGJlIGNvbnRpbmdlbnQgb24gYm90aCBgREFNT05gIGFuZCBgREFNT05fUEFERFJgLiBUaGF0J3MgYSBwb3RlbnRpYWwgZGVwZW5kZW5jeSBjaGFpbiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZC4gQmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHZhcmlhYmxlcyBvciBjb25kaXRpb25zIGltcGFjdGluZyBgU0FNUExFX0RBTU9OX01USUVSYC4gR290dGEgYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSB0aGluZ3MgdG8gYXZvaWQgYnJlYWtpbmcgc29tZXRoaW5nIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDcyMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjE4LjI3NzE1NjI3OVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjkyMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjE4LjI3NzI4Nzc3OVoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAwNjc3NzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2s6IGBTQU1QTEVTYCoqXG5cbk9rYXksIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGZvciBgU0FNUExFU2AuIEl0J3MgYSBrZXkgY29tcG9uZW50LCBzbyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBjdXJyZW50IHN0YXRlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBpdHMgZGlyZWN0IGFuZCBpbmRpcmVjdCBkZXBlbmRlbmNpZXMsIGVuc3VyaW5nIHRoZXJlIGFyZSBubyBvYnZpb3VzIGNvbmZsaWN0cyBvciBvdXRkYXRlZCB2ZXJzaW9ucyB0aGF0IGNvdWxkIGludHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgYnJlYWtpbmcgY2hhbmdlcyBvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgdGhhdCBtaWdodCBiZSBtYXNrZWQgd2l0aGluIHRoZSB3aWRlciBjb2RlIGJhc2UuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLCBhcyBhIHBvb3JseSBtYW5hZ2VkIGRlcGVuZGVuY3kgaGVyZSBjYW4gcHJvcGFnYXRlIGlzc3VlcyB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEknbGwgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB3aGV0aGVyIHRoZSBwcm9qZWN0J3MgYnVpbGQgc3lzdGVtIGhhcyBwcm9wZXJseSByZXNvbHZlZCBpdCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcGVuZGluZyB1cGRhdGVzIG9yIGRlcHJlY2F0aW9ucyBmbGFnZ2VkLiBVbHRpbWF0ZWx5LCB0aGUgc3RhYmlsaXR5IG9mIGBTQU1QTEVTYCBkaXJlY3RseSBpbXBhY3RzIHRoZSByZWxpYWJpbGl0eSBvZiB0aGUgZW50aXJlIHByb2R1Y3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTA5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OToyMS44Nzc5Njg4NTJaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjkzNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5zYW1wbGVzL0tjb25maWc6MjptZW51Y29uZmlnIFNBTVBMRVNcXG5zYW1wbGVzL0tjb25maWctMy1cXHRib29sIFxcXCJTYW1wbGUga2VybmVsIGNvZGVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjIxLjkyODY2OTkxMVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzNzYwMjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBTQU1QTEVTYCBlbmFibGVkLCBvdGhlcndpc2UsIGBTQU1QTEVfREFNT05fTVRJRVJgIHdvbid0IGZ1bmN0aW9uLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkLCBub3RoaW5nIHN1cnByaXNpbmcgdGhlcmUuIE5leHQsIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgZm9yIGBEQU1PTl9MUlVfU09SVGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBoYXMgdGhlIHByZXJlcXVpc2l0ZXMgaXQgbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBvciBzZXR0aW5ncyBuZWVkIHRvIGJlIGluIHBsYWNlLiBJZiBzb21ldGhpbmcgaXMgbWlzc2luZywgSSB3aWxsIGhhdmUgdG8gZmlndXJlIG91dCBhIHdvcmsgYXJvdW5kIG9yIGRlY2lkZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBub3QgaWRlYWwgaW4gdGhpcyBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1Mzk1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MjQuODcyNDM0MDQzWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTAwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAwOlxcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbiAxMDE6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG4gMTAyOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gMTAzOlxcdFxcdGhlbHBcXG4gMTA0OlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXFxuIDEwNTpcXHRcXHQgIHByb3RlY3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAoaG90KSBwYWdlcyB3aGlsZSByYXJlbHkgYWNjZXNzZWQgKGNvbGQpXFxuIDEwNjpcXHRcXHQgIHBhZ2VzIHJlY2xhaW1lZCBmaXJzdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuXFxuIDEwNzpcXHRcXG4gMTA4OlxcdGNvbmZpZyBEQU1PTl9TVEFUXFxuIDEwOTpcXHRcXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OToyNC44NzI1MTQwNDNaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5NzQyMTM4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBEQU1PTiBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gYERBTU9OX0xSVV9TT1JUYCBjbGVhcmx5IHJlbGllcyBvbiBgREFNT05fUEFERFJgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBCZWZvcmUgZGl2aW5nIGRlZXBlciwgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBsYXkgb2YgdGhlIGxhbmQsIGFuZCByZWZyZXNoIG91ciBrbm93bGVkZ2Ugb2YgdGhlIGJhc2UgY29tcG9uZW50cy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgZm9yIGBEQU1PTl9QQUREUmAuIE5vIHVzZSBnb2luZyBkb3duIHRoZSByYWJiaXQgaG9sZSBvZiB0aGUgTFJVIHNvcnQgaWYgdGhlIGZvdW5kYXRpb24gaXMgdW5zdGFibGUuIExldCdzIHRyYWNlIGl0IGJhY2sgYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGxpbmVzIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc4OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MjkuMjY5OTM4NzIzWiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDc6XFx0Y29uZmlnIERBTU9OX1BBRERSXFxuICA0ODpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDUwOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbiAgNTE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXFxuICA1NDpcXHRcXHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OToyOS4yNzAwMTQ5MTNaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NDc2NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgU3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBEQU1PTl9QQUREUmAgaXMgaW5oZXJlbnRseSB0aWVkIHRvIGJvdGggYERBTU9OYCAodGhlIER5bmFtaWMgQWNjZXNzIE1vbml0b3JpbmcgYW5kIE9wdGltaXphdGlvbiBvZiBNZW1vcnkgcGFnZXMpIGFuZCB0aGUgYE1NVWAgKE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQpLiBUaGF0J3Mgbm90IHN1cnByaXNpbmc7IHBhZ2UtbGV2ZWwgYWNjZXNzIG1vbml0b3JpbmcsIGFzIGBEQU1PTmAgZG9lcywgbmVlZHMgdG8gdW5kZXJzdGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgYW5kIGhvdyB0aGUgTU1VIHRyYW5zbGF0ZXMgdGhvc2UgdG8gdmlydHVhbCBvbmVzLiBJdOKAmXMgcHJldHR5IGZ1bmRhbWVudGFsLlxuXG5Ob3csIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgc2VlIHdoYXQgdGhlIHN0b3J5IGlzIHdpdGggYERBTU9OX1NZU0ZTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBTeXNGUyBpbnRlcmZhY2UsIGlmIGVuYWJsZWQsIGludGVycGxheXMgd2l0aCB0aGVzZSBjb3JlIGNvbXBvbmVudHMuIEl0J3Mgb2Z0ZW4gdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlLCBzbyBrbm93aW5nIGhvdyBpdCBjb25uZWN0cyB0byB0aGUgaW50ZXJuYWxzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGNhbiBiZSBjb250cm9sbGVkLCBtb25pdG9yZWQsIGFuZCB0d2Vha2VkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTMxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTozMi42MjQ3ODI0NzNaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2OCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2ODpcXHRjb25maWcgREFNT05fU1lTRlNcXG4gIDY5OlxcdFxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4gIDcwOlxcdFxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgU1lTRlNcXG4gIDcxOlxcdFxcdGRlZmF1bHQgREFNT05cXG4gIDcyOlxcdFxcdGhlbHBcXG4gIDczOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3IgREFNT04uICBUaGUgdXNlciBzcGFjZSBjYW4gdXNlXFxuICA3NDpcXHRcXHQgIHRoZSBpbnRlcmZhY2UgZm9yIGFyYml0cmFyeSBkYXRhIGFjY2VzcyBtb25pdG9yaW5nLlxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbiAgNzc6XFx0XFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjMyLjYyNDg2NzAxM1oiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg4NDI5MjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIERBTU9OX1NZU0ZTIERlcGVuZGVuY3kgVHJlZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBEQU1PTl9TWVNGU2AgaXMgYnVpbHQgb24gYm90aCBgREFNT05gIGFuZCBgU1lTRlNgLiBOb3QgdW5leHBlY3RlZCwgcmVhbGx5LiBTZWVtcyBsb2dpY2FsIHRoYXQgYSBzeXNmcyBpbnRlcmZhY2UgZm9yIGEgbWVtb3J5IG1vbml0b3Jpbmcgc3lzdGVtIHdvdWxkIG5lZWQgYm90aCB0aGUgY29yZSBtb25pdG9yaW5nIG1lY2hhbmlzbSAoYERBTU9OYCkgYW5kIHRoZSBrZXJuZWwncyBmaWxlIHN5c3RlbSBpbnRlcmZhY2UgKGBTWVNGU2ApLiBOb3csIHRvIGJlIHJpZ29yb3VzLCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERBTU9OYCBpdHNlbGYuIExldCdzIHNlZSB3aGF0IHRoYXQgbG9va3MgbGlrZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxhdGlvbnNoaXBzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU2MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MzUuNTEzMjk4OTA3WiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgNTpcXHRjb25maWcgREFNT05cXG4gICA2OlxcdFxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxcbiAgIDk6XFx0XFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcXG4gIDEwOlxcdFxcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcXG4gIDEzOlxcdFxcdCAgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTozNS41MTMzNzE0NjdaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE5MTM0ODY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgREFNT04gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIHN0cmFpZ2h0Zm9yd2FyZDogaXQncyBhbGwgYWJvdXQgaGFuZGxpbmcgYSBwb3RlbnRpYWwgZGl2aXNpb24tYnktemVybyBzY2VuYXJpbyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIGEgY2hlY2sgaW4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYC4gU3BlY2lmaWNhbGx5LCBpdCBtYWtlcyBzdXJlIGBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlYCBpc24ndCB6ZXJvOyBpZiBpdCBpcywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIHByZXZlbnRzIHRoYXQgemVybyBmcm9tIGNhdXNpbmcgcHJvYmxlbXMgaW4gYGRhbW9zX3F1b3RhX3Njb3JlYCwgd2hpY2ggaXMgYSBjbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyB0ZWNobmlxdWUuXG5cblRoZSBmYWN0IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgZXhwb3NlZCB0aHJvdWdoIHN5c2ZzIGFuZCBpbXBhY3QgZnVuY3Rpb25zIGxpa2UgYGRhbW9uX2xydV9zb3J0YCBhbmQgYGRhbW9uX3NhbXBsZV9tdGllcmAgbWVhbnMgdGhpcyBpc24ndCBqdXN0IGFuIGludGVybmFsIGRldGFpbDsgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQncyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlLiBHaXZlbiB0aGF0IGl0J3MgYSBidWcgcHJldmVudGlvbiBtZWFzdXJlLCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlJ2Qgd2FudCB0byBmdXp6LiBXZSBkb24ndCB3YW50IGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBmcm9tIHN1Y2ggYSBwYXRjaC5cblxuTXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IGZvY3VzZXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGFuZCBgZGFtb25fY29tbWl0X2N0eGAuIEkgbmVlZCB0byBjb25maXJtIHRoZXNlIGFyZW4ndCBzdGF0aWMgZnVuY3Rpb25zLCB3aGljaCB3b3VsZCBsaW1pdCB0aGVpciBzY29wZS4gWWVwLCBhIHF1aWNrIGxvb2sgY29uZmlybXMgYm90aCBhcmUgbm9uLXN0YXRpYzogYGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKWAgYW5kIGBpbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylgLiBUaGF0J3MgZ29vZDsgaXQgY29uZmlybXMgdGhhdCB0aGV5IGhhdmUgdGhlIHBvdGVudGlhbCB0byBiZSBjYWxsZWQgZnJvbSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGtlcm5lbCwgc28gdGhpcyBjaGFuZ2UncyBpbXBhY3QgaXMgd2lkZXIuXG5cbkFsc28sIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGUgcmVsZXZhbnQgY29uZmlnczogYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX0xSVV9TT1JUYCwgYFNBTVBMRVNgLCBhbmQgYFNBTVBMRV9EQU1PTl9NVElFUmAgZm9yIHRlc3RpbmcuXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIFRoZSByZXN1bHRzIHdpbGwgYmUgc2V0IGFzIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5MTEsIk91dHB1dFRva2VucyI6MTkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6NDIuNzA0NzIzOTk0WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwMTQ3NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gYnVnIGluIGBkYW1vc19xdW90YV9zY29yZWAgYnkgcmV0dXJuaW5nIGAtRUlOVkFMYCBmcm9tIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgaWYgYHNyYy1cXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyAwLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIGFzIHdlbGwgYXMgdGhyb3VnaCB0aGUgREFNT04gTFJVIHNvcnQgYW5kIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGVzLiBUaGUgY2hhbmdlIGlzIGZ1bmN0aW9uYWwgYW5kIHByZXZlbnRzIGEga2VybmVsIHBhbmljLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gYnVnIGluIGBkYW1vc19xdW90YV9zY29yZWAgYnkgcmV0dXJuaW5nIGAtRUlOVkFMYCBmcm9tIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgaWYgYHNyYy1cXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyAwLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIGFzIHdlbGwgYXMgdGhyb3VnaCB0aGUgREFNT04gTFJVIHNvcnQgYW5kIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGVzLiBUaGUgY2hhbmdlIGlzIGZ1bmN0aW9uYWwgYW5kIHByZXZlbnRzIGEga2VybmVsIHBhbmljLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTo0Mi43ODQ3NDcxNTFaIiwiU2VxIjo2NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MjI3MjYwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTo0Mi43ODUyNTEzNzFaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzgyMjIxNjk2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgdGFyZ2V0X3ZhbHVlYCBpbiBgZGFtb3NfcXVvdGFfZ29hbGAgc3RydWN0dXJlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gSXQgY2VudHJhbGl6ZXMgdGhlIGNoZWNrIGZvciB6ZXJvIGB0YXJnZXRfdmFsdWVgIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVtb3ZlcyByZWR1bmRhbnQgY2hlY2tzIGZyb20gb3RoZXIgcGxhY2VzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGZpZWxkcyBpbnRyb2R1Y2VkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMsIG1lbW9yeSBsZWFrcywgb3IgY3Jhc2hlcyAobGlrZSBkaXZpc2lvbiBieSB6ZXJvKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBLQVNBTiwgb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YjNmMmM4OGY3OTM0M2EwYjk3ZGQ5ZDg4MjQ1ZmEzNjgyZGY0NWNlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDU6NTc6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDY0NGRhZjVhMTY1NjAuLmMyMDRmNjkwN2M1MTUgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTExMzYsMTUgKzExMzYsMTggQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxuK3N0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4gXHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG4ge1xuK1x0aWYgKCFzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlKVxuK1x0XHRyZXR1cm4gIC1FSU5WQUw7XG4gXHRkc3QtXHUwMDNlbWV0cmljID0gc3JjLVx1MDAzZW1ldHJpYztcbiBcdGRzdC1cdTAwM2V0YXJnZXRfdmFsdWUgPSBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlO1xuIFx0aWYgKGRzdC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVClcbiBcdFx0ZHN0LVx1MDAzZWN1cnJlbnRfdmFsdWUgPSBzcmMtXHUwMDNlY3VycmVudF92YWx1ZTtcbiBcdC8qIGtlZXAgbGFzdF9wc2lfdG90YWwgYXMgaXMsIHNpbmNlIGl0IHdpbGwgYmUgdXBkYXRlZCBpbiBuZXh0IGN5Y2xlICovXG4gXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihkc3QsIHNyYyk7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gLyoqXG5AQCAtMTE2MiwxNCArMTE2NSwxNyBAQCBzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbiBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbiB7XG4gXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0X2dvYWwsICpuZXh0LCAqc3JjX2dvYWwsICpuZXdfZ29hbDtcbi1cdGludCBpID0gMCwgaiA9IDA7XG4rXHRpbnQgaSA9IDAsIGogPSAwLCBlcnI7XG4gXG4gXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZHN0X2dvYWwsIG5leHQsIGRzdCkge1xuIFx0XHRzcmNfZ29hbCA9IGRhbW9zX250aF9xdW90YV9nb2FsKGkrKywgc3JjKTtcbi1cdFx0aWYgKHNyY19nb2FsKVxuLVx0XHRcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XG4tXHRcdGVsc2VcbitcdFx0aWYgKHNyY19nb2FsKSB7XG4rXHRcdFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTtcbitcdFx0XHRpZiAoZXJyKVxuK1x0XHRcdFx0cmV0dXJuIGVycjtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZHN0X2dvYWwpO1xuK1x0XHR9XG4gXHR9XG4gXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoc3JjX2dvYWwsIG5leHQsIHNyYykge1xuIFx0XHRpZiAoaisrIFx1MDAzYyBpKVxuQEAgLTExNzgsNyArMTE4NCwxMSBAQCBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbiBcdFx0XHRcdHNyY19nb2FsLVx1MDAzZW1ldHJpYywgc3JjX2dvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKTtcbiBcdFx0aWYgKCFuZXdfZ29hbClcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTtcbitcdFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTtcbitcdFx0aWYgKGVycikge1xuK1x0XHRcdGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChuZXdfZ29hbCk7XG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0fVxuIFx0XHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcbiBcdH1cbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCBiZDg0NzgyOWE5OTA3Li43ZGY0NWY5YTBiM2FlIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xuKysrIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuQEAgLTIzMyw4ICsyMzMsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXG4gXG4gXHRpZiAoIWFjdGl2ZV9tZW1fYnApXG4gXHRcdHJldHVybiAwO1xuLVx0aWYgKDEwMDAwIFx1MDAzYyBhY3RpdmVfbWVtX2JwKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQLCBhY3RpdmVfbWVtX2JwKTtcbiBcdGlmICghZ29hbClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5pbmRleCBkMTEyM2ViYmZhYjkwLi5hYzljMjRiOTJlYWQ4IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbkBAIC0xNTYsOSArMTU2LDYgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxuIFx0aWYgKCFzY2hlbWUpXG4gXHRcdGdvdG8gZnJlZV9vdXQ7XG4gXHRkYW1vbl9zZXRfc2NoZW1lcyhjdHgsIFx1MDAyNnNjaGVtZSwgMSk7XG4tXHQvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovXG4tXHRpZiAoIW5vZGUwX21lbV91c2VkX2JwIHx8ICFub2RlMF9tZW1fZnJlZV9icClcbi1cdFx0Z290byBmcmVlX291dDtcbiBcdHF1b3RhX2dvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChcbiBcdFx0XHRwcm9tb3RlID8gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCA6XG4gXHRcdFx0REFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjQyLjc4NTI1MjQ3MVoiLCJTZXEiOjY3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODIyMTk1NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGZvY3VzZWQgb24gdGlnaHRlbmluZyB1cCBzb21lIHZhbGlkYXRpb24gYW5kIGVycm9yIGhhbmRsaW5nIHJlbGF0ZWQgdG8gaG93IGB0YXJnZXRfdmFsdWVgIGlzIHVzZWQgaW4gdGhlIERBTU9OIG1lbW9yeSBtYW5hZ2VtZW50IHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZHJlc3NpbmcgcG90ZW50aWFsIGRpdmlzaW9uLWJ5LXplcm8gaXNzdWVzLCBlaXRoZXIgZGlyZWN0bHkgaW4gYGRhbW9zX3F1b3RhX3N0b3JlKClgIG9yIG90aGVyIGZ1bmN0aW9ucyB3aGVyZSBgdGFyZ2V0X3ZhbHVlYCBpcyB1c2VkLCBvciBjb25zb2xpZGF0aW5nIHRoZSBjaGVjayBpbiBvbmUgcGxhY2UuXG5cbkkgc2VlIHRoZSBjb3JlIGNoYW5nZSBpcyBpbiBgbW0vZGFtb24vY29yZS5jYCB3aGVyZSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgIG5vdyBleHBsaWNpdGx5IHJldHVybnMgYW4gZXJyb3IgaWYgYHNyYy1cdTAwM2V0YXJnZXRfdmFsdWVgIGlzIHplcm8uIFRoZSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCBmdW5jdGlvbiBpcyBhbHNvIGJlaW5nIG1vZGlmaWVkIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhpcyBuZXcgZXJyb3IuIEl0J3MgYWxzbyByZW1vdmluZyBzb21lIHJlZHVuZGFudCBjaGVja3MgaW4gYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2Agd2l0aGluIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC5cblxuTXkgcHJpbWFyeSBjb25jZXJuLCBhcyBhbHdheXMgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2VzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBub3cgYWRkcyBhIGNoZWNrIGZvciBhIHplcm8gYHRhcmdldF92YWx1ZWAgdXNpbmcgYGlmICghc3JjLVx1MDAzZXRhcmdldF92YWx1ZSkgcmV0dXJuIC1FSU5WQUw7YCBpbiBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgLiBCdXQgYWZ0ZXIgYSBjbG9zZSByZWFkLCBJIHNlZSBubyBuZXcgYWxsb2NhdGlvbnMgb3IgZmllbGRzIGJlaW5nIGFkZGVkLiBUaGVzZSBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hhbmdlcyBhbmQgZXJyb3ItaGFuZGxpbmcgbW9kaWZpY2F0aW9ucy4gU28sIGFmdGVyIGEgcXVpY2sgbWVudGFsIHRyYWNlIHRocm91Z2ggdGhlIGV4ZWN1dGlvbiBwYXRocyBhZmZlY3RlZCwgSSdtIGNvbmZpZGVudCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCBhbmQgZG9uJ3QgZXhwb3NlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgbW9kaWZpY2F0aW9ucyAtIGlucHV0IHZhbGlkYXRpb24gYW5kIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGxhY2sgb2YgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUsIEknbSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBmYWxzZS4gVGhlIHBhdGNoIGlzIHNvdW5kIGluIHRoaXMgcmVnYXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM3LCJPdXRwdXRUb2tlbnMiOjE2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjUwLjYwNzQ1MTU3OVoiLCJTZXEiOjY4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgdGFyZ2V0X3ZhbHVlYCBpbiBgZGFtb3NfcXVvdGFfZ29hbGAgc3RydWN0dXJlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gSXQgY2VudHJhbGl6ZXMgdGhlIGNoZWNrIGZvciB6ZXJvIGB0YXJnZXRfdmFsdWVgIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVtb3ZlcyByZWR1bmRhbnQgY2hlY2tzIGZyb20gb3RoZXIgcGxhY2VzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGZpZWxkcyBpbnRyb2R1Y2VkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMsIG1lbW9yeSBsZWFrcywgb3IgY3Jhc2hlcyAobGlrZSBkaXZpc2lvbiBieSB6ZXJvKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBLQVNBTiwgb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgZm9yIGB0YXJnZXRfdmFsdWVgIGluIGBkYW1vc19xdW90YV9nb2FsYCBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBJdCBjZW50cmFsaXplcyB0aGUgY2hlY2sgZm9yIHplcm8gYHRhcmdldF92YWx1ZWAgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCByZW1vdmVzIHJlZHVuZGFudCBjaGVja3MgZnJvbSBvdGhlciBwbGFjZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZmllbGRzIGludHJvZHVjZWQgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycywgbWVtb3J5IGxlYWtzLCBvciBjcmFzaGVzIChsaWtlIGRpdmlzaW9uIGJ5IHplcm8pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcsIEtBU0FOLCBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 05:55:19 +0000 UTC FinishedAt: 2026-08-13 05:59:52 +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": "9eba1ecd48e4d85eacdb2a351de4f8cc1527c395", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_LRU_SORT", "SAMPLES", "SAMPLE_DAMON_MTIER" ], "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": "9eba1ecd48e4d85eacdb2a351de4f8cc1527c395", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_LRU_SORT", "SAMPLES", "SAMPLE_DAMON_MTIER" ], "series_id": "7ca26948-a40a-48c4-b654-c2c6d6487f05" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damos_commit_quota_goals", "damon_commit_ctx" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRVMmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgZm9yIGB0YXJnZXRfdmFsdWVgIGluIGBkYW1vc19xdW90YV9nb2FsYCBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBJdCBjZW50cmFsaXplcyB0aGUgY2hlY2sgZm9yIHplcm8gYHRhcmdldF92YWx1ZWAgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCByZW1vdmVzIHJlZHVuZGFudCBjaGVja3MgZnJvbSBvdGhlciBwbGFjZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZmllbGRzIGludHJvZHVjZWQgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycywgbWVtb3J5IGxlYWtzLCBvciBjcmFzaGVzIChsaWtlIGRpdmlzaW9uIGJ5IHplcm8pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcsIEtBU0FOLCBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gYnVnIGluIGBkYW1vc19xdW90YV9zY29yZWAgYnkgcmV0dXJuaW5nIGAtRUlOVkFMYCBmcm9tIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgaWYgYHNyYy1cdTAwM2V0YXJnZXRfdmFsdWVgIGlzIDAuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgYXMgd2VsbCBhcyB0aHJvdWdoIHRoZSBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZXMuIFRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbCBhbmQgcHJldmVudHMgYSBrZXJuZWwgcGFuaWMsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YjNmMmM4OGY3OTM0M2EwYjk3ZGQ5ZDg4MjQ1ZmEzNjgyZGY0NWNlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDU6NTc6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA2NDRkYWY1YTE2NTYwLi5jMjA0ZjY5MDdjNTE1IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xMTM2LDE1ICYjNDM7MTEzNiwxOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4mIzQzO3N0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4gXHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG4ge1xuJiM0MztcdGlmICghc3JjLVx1MDAzZXRhcmdldF92YWx1ZSlcbiYjNDM7XHRcdHJldHVybiAgLUVJTlZBTDtcbiBcdGRzdC1cdTAwM2VtZXRyaWMgPSBzcmMtXHUwMDNlbWV0cmljO1xuIFx0ZHN0LVx1MDAzZXRhcmdldF92YWx1ZSA9IHNyYy1cdTAwM2V0YXJnZXRfdmFsdWU7XG4gXHRpZiAoZHN0LVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUKVxuIFx0XHRkc3QtXHUwMDNlY3VycmVudF92YWx1ZSA9IHNyYy1cdTAwM2VjdXJyZW50X3ZhbHVlO1xuIFx0Lyoga2VlcCBsYXN0X3BzaV90b3RhbCBhcyBpcywgc2luY2UgaXQgd2lsbCBiZSB1cGRhdGVkIGluIG5leHQgY3ljbGUgKi9cbiBcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKGRzdCwgc3JjKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gLyoqXG5AQCAtMTE2MiwxNCAmIzQzOzExNjUsMTcgQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4gaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4ge1xuIFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7XG4tXHRpbnQgaSA9IDAsIGogPSAwO1xuJiM0MztcdGludCBpID0gMCwgaiA9IDAsIGVycjtcbiBcbiBcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShkc3RfZ29hbCwgbmV4dCwgZHN0KSB7XG4gXHRcdHNyY19nb2FsID0gZGFtb3NfbnRoX3F1b3RhX2dvYWwoaSYjNDM7JiM0MzssIHNyYyk7XG4tXHRcdGlmIChzcmNfZ29hbClcbi1cdFx0XHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xuLVx0XHRlbHNlXG4mIzQzO1x0XHRpZiAoc3JjX2dvYWwpIHtcbiYjNDM7XHRcdFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fSBlbHNlIHtcbiBcdFx0XHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZHN0X2dvYWwpO1xuJiM0MztcdFx0fVxuIFx0fVxuIFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHtcbiBcdFx0aWYgKGomIzQzOyYjNDM7IFx1MDAzYyBpKVxuQEAgLTExNzgsNyAmIzQzOzExODQsMTEgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4gXHRcdFx0XHRzcmNfZ29hbC1cdTAwM2VtZXRyaWMsIHNyY19nb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG4gXHRcdGlmICghbmV3X2dvYWwpXG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG4mIzQzO1x0XHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChuZXdfZ29hbCwgc3JjX2dvYWwpO1xuJiM0MztcdFx0aWYgKGVycikge1xuJiM0MztcdFx0XHRkYW1vc19mcmVlX3F1b3RhX2dvYWwobmV3X2dvYWwpO1xuJiM0MztcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fVxuIFx0XHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcbiBcdH1cbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCBiZDg0NzgyOWE5OTA3Li43ZGY0NWY5YTBiM2FlIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuQEAgLTIzMyw4ICYjNDM7MjMzLDYgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxuIFxuIFx0aWYgKCFhY3RpdmVfbWVtX2JwKVxuIFx0XHRyZXR1cm4gMDtcbi1cdGlmICgxMDAwMCBcdTAwM2MgYWN0aXZlX21lbV9icClcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7XG4gXHRpZiAoIWdvYWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZDExMjNlYmJmYWI5MC4uYWM5YzI0YjkyZWFkOCAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5AQCAtMTU2LDkgJiM0MzsxNTYsNiBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRpZiAoIXNjaGVtZSlcbiBcdFx0Z290byBmcmVlX291dDtcbiBcdGRhbW9uX3NldF9zY2hlbWVzKGN0eCwgXHUwMDI2c2NoZW1lLCAxKTtcbi1cdC8qIHplcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKCkgKi9cbi1cdGlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKVxuLVx0XHRnb3RvIGZyZWVfb3V0O1xuIFx0cXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxuIFx0XHRcdHByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDpcbiBcdFx0XHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVTJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9zX2NvbW1pdF9xdW90YV9nb2FscyYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBidWcgaW4gYGRhbW9zX3F1b3RhX3Njb3JlYCBieSByZXR1cm5pbmcgYC1FSU5WQUxgIGZyb20gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpZiBgc3JjLVx1MDAzZXRhcmdldF92YWx1ZWAgaXMgMC4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBhcyB3ZWxsIGFzIHRocm91Z2ggdGhlIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlcy4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsIGFuZCBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYywgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhiM2YyYzg4Zjc5MzQzYTBiOTdkZDlkODgyNDVmYTM2ODJkZjQ1Y2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAwNTo1NzowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCA2NDRkYWY1YTE2NTYwLi5jMjA0ZjY5MDdjNTE1IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0xMTM2LDE1ICYjNDM7MTEzNiwxOCBAQCBzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbigKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKAomIzQzO3N0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoCiAJCXN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpCiB7CiYjNDM7CWlmICghc3JjLSZndDt0YXJnZXRfdmFsdWUpCiYjNDM7CQlyZXR1cm4gIC1FSU5WQUw7CiAJZHN0LSZndDttZXRyaWMgPSBzcmMtJmd0O21ldHJpYzsKIAlkc3QtJmd0O3RhcmdldF92YWx1ZSA9IHNyYy0mZ3Q7dGFyZ2V0X3ZhbHVlOwogCWlmIChkc3QtJmd0O21ldHJpYyA9PSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUKQogCQlkc3QtJmd0O2N1cnJlbnRfdmFsdWUgPSBzcmMtJmd0O2N1cnJlbnRfdmFsdWU7CiAJLyoga2VlcCBsYXN0X3BzaV90b3RhbCBhcyBpcywgc2luY2UgaXQgd2lsbCBiZSB1cGRhdGVkIGluIG5leHQgY3ljbGUgKi8KIAlkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihkc3QsIHNyYyk7CiYjNDM7CXJldHVybiAwOwogfQogCiAvKioKQEAgLTExNjIsMTQgJiM0MzsxMTY1LDE3IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKAogaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpCiB7CiAJc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7Ci0JaW50IGkgPSAwLCBqID0gMDsKJiM0MzsJaW50IGkgPSAwLCBqID0gMCwgZXJyOwogCiAJZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGRzdF9nb2FsLCBuZXh0LCBkc3QpIHsKIAkJc3JjX2dvYWwgPSBkYW1vc19udGhfcXVvdGFfZ29hbChpJiM0MzsmIzQzOywgc3JjKTsKLQkJaWYgKHNyY19nb2FsKQotCQkJZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTsKLQkJZWxzZQomIzQzOwkJaWYgKHNyY19nb2FsKSB7CiYjNDM7CQkJZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwomIzQzOwkJfSBlbHNlIHsKIAkJCWRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChkc3RfZ29hbCk7CiYjNDM7CQl9CiAJfQogCWRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShzcmNfZ29hbCwgbmV4dCwgc3JjKSB7CiAJCWlmIChqJiM0MzsmIzQzOyAmbHQ7IGkpCkBAIC0xMTc4LDcgJiM0MzsxMTg0LDExIEBAIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKQogCQkJCXNyY19nb2FsLSZndDttZXRyaWMsIHNyY19nb2FsLSZndDt0YXJnZXRfdmFsdWUpOwogCQlpZiAoIW5ld19nb2FsKQogCQkJcmV0dXJuIC1FTk9NRU07Ci0JCWRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7CiYjNDM7CQllcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChuZXdfZ29hbCwgc3JjX2dvYWwpOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWRhbW9zX2ZyZWVfcXVvdGFfZ29hbChuZXdfZ29hbCk7CiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCX0KIAkJZGFtb3NfYWRkX3F1b3RhX2dvYWwoZHN0LCBuZXdfZ29hbCk7CiAJfQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmMKaW5kZXggYmQ4NDc4MjlhOTkwNy4uN2RmNDVmOWEwYjNhZSAxMDA2NDQKLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9scnVfc29ydC5jCkBAIC0yMzMsOCAmIzQzOzIzMyw2IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSwKIAogCWlmICghYWN0aXZlX21lbV9icCkKIAkJcmV0dXJuIDA7Ci0JaWYgKDEwMDAwICZsdDsgYWN0aXZlX21lbV9icCkKLQkJcmV0dXJuIC1FSU5WQUw7CiAJZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApOwogCWlmICghZ29hbCkKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmMKaW5kZXggZDExMjNlYmJmYWI5MC4uYWM5YzI0YjkyZWFkOCAxMDA2NDQKLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuYwpAQCAtMTU2LDkgJiM0MzsxNTYsNiBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpCiAJaWYgKCFzY2hlbWUpCiAJCWdvdG8gZnJlZV9vdXQ7CiAJZGFtb25fc2V0X3NjaGVtZXMoY3R4LCAmYW1wO3NjaGVtZSwgMSk7Ci0JLyogemVybyB0YXJnZXQgdmFsdWUgY2F1c2VzIGRpdmlzaW9uIGJ5IHplcm8gaW4gZGFtb3NfcXVvdGFfc3RvcmUoKSAqLwotCWlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKQotCQlnb3RvIGZyZWVfb3V0OwogCXF1b3RhX2dvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbCgKIAkJCXByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDoKIAkJCURBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSBhZmZlY3RpbmcgREFNT04mIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGhlIHF1b3RhIG1hbmFnZW1lbnQgYW5kIHNhbXBsaW5nIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYCwgdGhlIExSVSBzb3J0aW5nIGluIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYW5kIHRoZSBtdWx0aS10aWVyIHNhbXBsaW5nIGV4YW1wbGUgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIExvb2tzIGxpa2UgaXQmIzM5O3MgYSByZWxhdGl2ZWx5IGZvY3VzZWQgY2hhbmdlLCBhbmQgSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYWx0ZXJhdGlvbnMuCgpGaXJzdCwgdGhlIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgZnVuY3Rpb24gaXMgYmVpbmcgbW9kaWZpZWQgdG8gcmV0dXJuIGFuIGVycm9yIHdoZW4gYHNyYy0mZ3Q7dGFyZ2V0X3ZhbHVlYCBpcyB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlOyBhIHplcm8gdGFyZ2V0IHByZXN1bWFibHkgbWVhbnMgbm8gcXVvdGEsIGFuZCBleHBsaWNpdGx5IHJldHVybmluZyBhbiBlcnJvciBpcyBhIGNsZWFyZXIgd2F5IHRvIHNpZ25hbCB0aGF0IHRoaXMgc2hvdWxkbiYjMzk7dCBiZSBhbGxvd2VkLiBUaGF0IGVycm9yIHRoZW4gZ2V0cyBwcm9wYWdhdGVkIHVwIHRvIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLiBHb29kLCBtYWtlcyBmb3IgY2xlYW5lciBlcnJvciBoYW5kbGluZy4KCk5leHQsIHRoZSBwYXRjaCByZW1vdmVzIGEgc2VlbWluZ2x5IGFyYml0cmFyeSBjaGVjaywgYGlmICgxMDAwMCAmbHQ7IGFjdGl2ZV9tZW1fYnApYCwgd2l0aGluIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY2hlY2sgd2FzIGRvaW5nLiBXYXMgaXQgYSBzYWZlZ3VhcmQgYWdhaW5zdCBhbiBleHRyZW1lIHZhbHVlLCBhIHR1bmluZyBwYXJhbWV0ZXIsIG9yIGFuIG92ZXJzaWdodD8gTXkgZmlyc3Qgc3RlcCBpcyBnb2luZyB0byBiZSB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB3aHkgdGhpcyBjaGVjayB3YXMgZGVlbWVkIHVubmVjZXNzYXJ5LgoKRmluYWxseSwgdGhleSYjMzk7dmUgcmVtb3ZlZCBgaWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApYCB3aXRoaW4gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgLiBUaGlzIGlzIGFsc28gaW50cmlndWluZy4gVGhpcyBpbXBsaWVzIGEgcmVsYXhhdGlvbiBvZiBhIGNvbmRpdGlvbiB1c2VkIGluIHRoZSBNVGllciBzYW1wbGluZy4gSXMgdGhpcyBhIHNpbXBsaWZpY2F0aW9uLCBhIGJ1ZyBmaXgsIG9yIGEgY2hhbmdlIGluIGhvdyB0aGUgc2FtcGxpbmcgaXMgaW50ZW5kZWQgdG8gYmVoYXZlPyBJdCByZXF1aXJlcyBhIGNsb3NlciBsb29rIGF0IHRoZSBzYW1wbGluZyBsb2dpYyBhbmQgaG93IHRoaXMgY29uZGl0aW9uIHdhcyBvcmlnaW5hbGx5IHVzZWQuCgpVbHRpbWF0ZWx5LCBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY2FyZWZ1bGx5IGNvbnNpZGVyIHdoYXQgREFNT04gY29uZmlnIG9wdGlvbnMgZXhpc3QgdG8gZW5zdXJlIHRoYXQgdGhlc2UgY2hhbmdlcyBkb24mIzM5O3QgaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGFuZ2UgaXMgaW4gbGluZSB3aXRoIHRoZSBkZXNpZ24gb2YgREFNT04uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGVjb25zdHJ1Y3RpbmcgRGVwZW5kZW5jaWVzIG9mIGBEQU1PTl9MUlVfU09SVGAqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBgREFNT05fTFJVX1NPUlRgIHJlbGllcyBvbi4gVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludC4gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIGV2ZW4gY29uc2lkZXIgbW9kaWZ5aW5nIGl0LCBvcHRpbWl6aW5nIGl0LCBvciBpbnRlZ3JhdGluZyBpdCB3aXRoIHNvbWV0aGluZyBlbHNlLiBJdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCBpbiBhbnkgZGVidWdnaW5nIG9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgaWRlbnRpZmllciBhbmQgYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBpbnB1dCBhbmQgb3V0cHV0IGludGVyYWN0aW9ucy4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgZGVsdmluZyBpbnRvIHRoZSBjb2RlIGFuZCBleGFtaW5pbmcgaXRzIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMuIEtub3dpbmcgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBpdCBsZXZlcmFnZXMgaXMgcGFyYW1vdW50LiBQZXJoYXBzIGl0JiMzOTtzIGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUsIGEgcGFydGljdWxhciBoYXJkd2FyZSBjb21wb25lbnQgb3IgZXZlbiBhbm90aGVyIHBpZWNlIG9mIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTl9MUlVfU09SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz04OD1jb25maWcgREFNT05fUkVDTEFJTVxuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gREFNT05fTFJVX1NPUlQgRGVwZW5kZW5jaWVzKioKCk9rYXksIHRpbWUgdG8gZ2V0IHRoaXMgc29ydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEQU1PTl9MUlVfU09SVGAuIE15IGZpcnN0IG1vdmUgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlLCBzcGVjaWZpY2FsbHkgYG1tL2RhbW9uL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgZGVwZW5kZW5jeSBsb2dpYyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiBhcmUgZGVmaW5lZC4gSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGBEQU1PTl9MUlVfU09SVGAgYW5kIG90aGVyIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBsYWlkIG91dCBjbGVhcmx5IGluIHRoYXQgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRocm91Z2ggaXQsIGxvb2tpbmcgZm9yIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMsIGBkZXBlbmRzIG9uYCBjbGF1c2VzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGluZm9ybWF0aW9uIHRoYXQgcmV2ZWFscyB3aGljaCBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGBEQU1PTl9MUlVfU09SVGAgdG8gZXZlbiBiZSBjb25zaWRlcmVkIGEgdmlhYmxlIG9wdGlvbi4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIGFuYWx5emluZyB0aGUgREFNT04gY29uZmlndXJhdGlvbiwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBoaWVyYXJjaHkuIFRoaXMgd2lsbCBndWlkZSBteSB1bmRlcnN0YW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAwOlx0Y29uZmlnIERBTU9OX0xSVV9TT1JUXG4gMTAxOlx0XHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbiAxMDI6XHRcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbiAxMDM6XHRcdGhlbHBcbiAxMDQ6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXG4gMTA1Olx0XHQgIHByb3RlY3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAoaG90KSBwYWdlcyB3aGlsZSByYXJlbHkgYWNjZXNzZWQgKGNvbGQpXG4gMTA2Olx0XHQgIHBhZ2VzIHJlY2xhaW1lZCBmaXJzdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuXG4gMTA3Olx0XG4gMTA4Olx0Y29uZmlnIERBTU9OX1NUQVRcbiAxMDk6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuIDExMDpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxuIDExMTpcdFx0aGVscFxuIDExMjpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdGlzdGljcyBzdWJzeXN0ZW0uXG4gMTEzOlx0XHQgIEl0IHJ1bnMgREFNT04gYW5kIGV4cG9zZSBhY2Nlc3MgbW9uaXRvcmluZyByZXN1bHRzIGluIHNpbXBsZSBzdGF0XG4gMTE0Olx0XHQgIG1ldHJpY3MuXG4gMTE1Olx0XG4gMTE2Olx0Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG4gMTE3Olx0XHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiAxMTg6XHRcdGRlcGVuZHMgb24gREFNT05fU1RBVFxuIDExOTpcdFx0ZGVmYXVsdCBEQU1PTl9TVEFUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMzNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgdGhlIEludGVyZGVwZW5kZW5jaWVzIGluIERBTU9OKioKCkFscmlnaHQsIHNvIHRoZSBgREFNT05fTFJVX1NPUlRgIGZ1bmN0aW9uLCBhcyBJIHN1c3BlY3RlZCwgaXMgcmVsaWFudCBvbiBgREFNT05fUEFERFJgLiBHaXZlbiBteSBleHBlcmllbmNlIHdpdGggREFNT04sIEkga25vdyBob3cgY3JpdGljYWwgdGhlc2UgbG93LWxldmVsIGFkZHJlc3Mgc3BhY2VzIGFyZS4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhhdCBkZXBlbmRlbmN5LiBUaGVyZWZvcmUsIEkgbmVlZCB0byBpbW1lZGlhdGVseSBzaGlmdCBteSBmb2N1cyB0byBkaXNzZWN0aW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERBTU9OX1BBRERSYCBpdHNlbGYuIFdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlPyBXaGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIHJlbHlpbmcgb24gKml0Kj8gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byBuYWlsIGRvd24gdG8gZW5zdXJlIHN0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeSB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbSwgc28gdW5kZXJzdGFuZGluZyB0aGUgZmxvdyBmcm9tIGBEQU1PTl9QQUREUmAgaXMgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBkZXBlbmRlbmN5IHRyZWUgY2xlYXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NzpcdGNvbmZpZyBEQU1PTl9QQUREUlxuICA0ODpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNTA6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA1MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDU0Olx0XHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQ2hlY2tpbmcgREFNT04mIzM5O3MgRm91bmRhdGlvbioqCgpSaWdodCwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgREFNT05gIGlzIHBsYXlpbmcgbmljZSB3aXRoIGV2ZXJ5dGhpbmcgaXQgbmVlZHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgYERBTU9OYCYjMzk7cyBkZXBlbmRlbmN5IGxhbmRzY2FwZSBsb29rIGxpa2UgcmlnaHQgbm93PyYjMzQ7IEkgY2FuJiMzOTt0IGJ1aWxkIGFueXRoaW5nIHN0YWJsZSwgb3IgZXZlbiB1bmRlcnN0YW5kIHByb2JsZW1zIHdoZW4gdGhleSBhcmlzZSwgaWYgSSBkb24mIzM5O3Qga25vdyB0aGUgdG9vbHMgYERBTU9OYCByZWxpZXMgb24uIFNvLCBhIHF1aWNrIGNoZWNrLXVwIG9uIHRob3NlIGRlcGVuZGVuY2llcyBpcyBpbiBvcmRlci4gSXTigJlzIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggZXZlcnl0aGluZyBlbHNlIHN0YW5kcy4gV2UgaGF2ZSB0byBtYWtlIHN1cmUgaXQmIzM5O3Mgc29saWQgYmVmb3JlIHByb2NlZWRpbmcuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhpbmdzIGFyZSBpbiBvcmRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA1Olx0Y29uZmlnIERBTU9OXG4gICA2Olx0XHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGJ1aWxkcyBhIGZyYW1ld29yayB0aGF0IGFsbG93cyBrZXJuZWwgc3Vic3lzdGVtcyB0byBtb25pdG9yXG4gICA5Olx0XHQgIGFjY2VzcyBmcmVxdWVuY3kgb2YgZWFjaCBtZW1vcnkgcmVnaW9uLiBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWZ1bFxuICAxMDpcdFx0ICBmb3IgcGVyZm9ybWFuY2UtY2VudHJpYyBEUkFNIGxldmVsIG1lbW9yeSBtYW5hZ2VtZW50LlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcbiAgMTM6XHRcdCAgbW9yZSBpbmZvcm1hdGlvbi5cbiAgMTQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA3NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBEQU1PTiBwYXRjaCwgYW5kIG15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGBEQU1PTmAsIGBEQU1PTl9QQUREUmAsIGFuZCBgREFNT05fTFJVX1NPUlRgIGFyZSB0aGUga2V5IGNvbmZpZ3MgaW52b2x2ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2Ugc2V0dGluZ3MgZW5hYmxlIGFuZCBob3cgdGhleSBpbXBhY3QgdGhlIG92ZXJhbGwgREFNT04gYmVoYXZpb3IuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgc3RhcnRpbmcgd2l0aCBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCwgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHQgdmFsdWVzLiBJIHN1c3BlY3QgdGhlcmUgd2lsbCBiZSBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyB0aGVyZSB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBvZiB0aGUgY29kZS4gVGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBpcyBpbXBvcnRhbnQgdG9vIOKAkyB0aGF0IHdpbGwgcHJvYmFibHkgcG9pbnQgdG93YXJkcyBhIHByYWN0aWNhbCB1c2UtY2FzZSBvciBwZXJmb3JtYW5jZSBtb2RpZmljYXRpb24gcmVsYXRlZCB0byB0aWVyaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGllciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vTWFrZWZpbGU9ND1vYmotJChDT05GSUdfU0FNUExFX0RBTU9OX1BSQ0wpICYjNDM7PSBwcmNsLm9cbnNhbXBsZXMvZGFtb24vTWFrZWZpbGU6NTpvYmotJChDT05GSUdfU0FNUExFX0RBTU9OX01USUVSKSAmIzQzOz0gbXRpZXIub1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjg6I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXI6IFwmIzM0OyBmbXRcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy05LVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNy0jZW5kaWZcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODojZGVmaW5lIE1PRFVMRV9QQVJBTV9QUkVGSVggXCYjMzQ7ZGFtb25fc2FtcGxlX210aWVyLlwmIzM0O1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE5LVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0zNj1tb2R1bGVfcGFyYW0obm9kZTBfbWVtX2ZyZWVfYnAsIHVsb25nLCAwNjAwKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0zNy1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzozODpzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMzktXHRcdGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApO1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz00MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgZW5hYmxlZF9wYXJhbV9vcHMgPSB7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDI6XHQuc2V0ID0gZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZSxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy00My1cdC5nZXQgPSBwYXJhbV9nZXRfYm9vbCxcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9NjA9c3RhdGljIGludCBuaWRfdG9fcGh5cyhpbnQgdGFyZ2V0X25vZGUsIHN0cnVjdCByZWdpb25fcmFuZ2UgKnJhbmdlKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03Mi1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo3MzpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNzYtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTc3OnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTc4LXtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgxLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4MjpcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgodHJ1ZSk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgzLVx0aWYgKCFjdHgpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4NS1cdGN0eHNbMF0gPSBjdHg7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg2Olx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChmYWxzZSk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg3LVx0aWYgKCFjdHgpIHtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjAwLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIwMTpzdGF0aWMgdm9pZCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCh2b2lkKVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwMi17XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwNy1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMDg6c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlKFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwOS1cdFx0Y29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI0LVx0aWYgKGVuYWJsZWQpIHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjU6XHRcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyNi1cdFx0aWYgKGVycilcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI5LVx0fVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIzMDpcdGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjMxLVx0cmV0dXJuIDA7XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzMy1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMzQ6c3RhdGljIGludCBfX2luaXQgZGFtb25fc2FtcGxlX210aWVyX2luaXQodm9pZClcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzUte1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDQtXHRpZiAoZW5hYmxlZCkge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjI0NTpcdFx0ZXJyID0gZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjQ2LVx0XHRpZiAoZXJyKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNTEtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjUyOm1vZHVsZV9pbml0KGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUxNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgY29uZmlndXJlZC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIHN0cnVjdHVyZSwgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYHNhbXBsZXMvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgdHlwaWNhbCBsb2NhdGlvbiBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHNhbXBsZSBjb2RlLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBpbiB0aGVyZSB0byBzZWUgZXhhY3RseSBob3cgdGhpcyBzcGVjaWZpYyBvcHRpb24gaXMgZGVmaW5lZCwgaWYgaXQmIzM5O3MgZGVwZW5kZW50IG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucywgYW5kIHdoYXQgaXRzIGRlZmF1bHQgdmFsdWVzIG1pZ2h0IGJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0aWN1bGFyIHNhbXBsZSBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGFuZCBob3cgaXRzIGJlaGF2aW9yIGNhbiBiZSBtb2RpZmllZCB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzI5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgdGhlIEtjb25maWcgRmlsZSBmb3IgdGhlIERhbW9uIFNhbXBsZSoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBjb25maWd1cmF0aW9uLCB0aGlzIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgd2hlbiBleHBsb3JpbmcgYSBuZXcgc2FtcGxlIGxpa2UgJiMzNDtkYW1vbi4mIzM0OyBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zIGRlZmluZWQgaGVyZSB0aGF0IGNvbnRyb2wgd2hldGhlciBEYW1vbiBpcyBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIGJ1aWx0IGFzIGEgbW9kdWxlLCBvciBldmVuIGNvbXBsZXRlbHkgZGlzYWJsZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIGFueSBkZWZhdWx0IHNldHRpbmdzLCBhbmQgb2YgY291cnNlLCB0aGUgdXNlci1mYWNpbmcgc3ltYm9scyB0aGF0IHdpbGwgYmUgZXhwb3NlZCBpbiB0aGUgYC5jb25maWdgIGZpbGUuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhlIERhbW9uIHNhbXBsZSBhbmQgaG93IGl0IGludGVncmF0ZXMgKG9yIGRvZXNuJiMzOTt0KSB3aXRoIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlIHRvIHdvcmsgZnJvbS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0FNUExFX0RBTU9OX01USUVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZz0xNz1jb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDY5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBgU0FNUExFX0RBTU9OX01USUVSYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTQU1QTEVfREFNT05fTVRJRVJgLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc2ltcGxlIGV4ZXJjaXNlIGluIGxvb2tpbmcgdXAgYSBtYW5pZmVzdCBmaWxlLCB0aG91Z2guIEkgbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGluIGxheWVycy4gRmlyc3QsIEkgbmVlZCB0byBjb25zaWRlciBhbGwgcG9zc2libGUgZGVwZW5kZW5jaWVzLCBib3RoIGRpcmVjdCBhbmQgaW5kaXJlY3QuIFdoYXQgYXJlIHRoZSBvYnZpb3VzIGxpYnJhcmllcywgbW9kdWxlcywgYW5kIHNlcnZpY2VzIHRoYXQgaXQgZXhwbGljaXRseSBjYWxscz8gVGhlbiwgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIHRocm91Z2ggY29uZmlndXJhdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGFwcGFyZW50IGZyb20gdGhlIGNvZGUgaXRzZWxmPyBJIGFsc28gbmVlZCB0byB0aGluayBhYm91dCBydW50aW1lIGRlcGVuZGVuY2llcyAtIGV4dGVybmFsIHNlcnZpY2VzIGl0IG1pZ2h0IGNvbW11bmljYXRlIHdpdGguIAoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggZGVwZW5kZW5jeS4gQSBsb3ctbGV2ZWwgbGlicmFyeSBjb3VsZCBtZWFuIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGlmIGl0IGlzbiYjMzk7dCBvcHRpbWl6ZWQsIHdoZXJlYXMgYSBkZXBlbmRlbmN5IG9uIGFuIGV4dGVybmFsIEFQSSBjb3VsZCBpbnRyb2R1Y2Ugc3RhYmlsaXR5IG9yIGxhdGVuY3kgaXNzdWVzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHZlcnNpb24gY29tcGF0aWJpbGl0eSBhcyB3ZWxsLiBXaWxsIHRoZXNlIGRlcGVuZGVuY2llcyBjcmVhdGUgY29uZmxpY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBvciB3aXRoIGZ1dHVyZSBkZXZlbG9wbWVudD8KCkkmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIG1ldGhvZHMsIHRyYWNpbmcgdGhlIGNhbGwgc3RhY2tzIGFuZCBpbnNwZWN0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG1vcmUgZXNvdGVyaWMgb25lcywgaWYgbmVlZGVkLiBUaGVuIEnigJlsbCBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbWFwIG9mIHdoYXQgbWlnaHQgaGFwcGVuIGlmIG9uZSBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgZmFpbHMg4oCTIHdoYXQgYXJlIHRoZSBmYXVsdC10b2xlcmFudCBtZWFzdXJlcyBpbiBwbGFjZSwgYW5kIHdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY2FzY2FkaW5nIGZhaWx1cmVzPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG4gIDMxOlx0XHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9QQUREUlxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgVGhlIG1vZHVsZSBhc3N1bWVzIHRoZSBzeXN0ZW0gaXMgY29uc3RydWN0ZWQgd2l0aCB0d28gTlVNQSBub2RlcyxcbiAgMzc6XHRcdCAgd2hpY2ggc2VlbXMgYXMgbG9jYWwgYW5kIHJlbW90ZSBub2RlcyB0byBhbGwgQ1BVcy4gIEZvciBleGFtcGxlLFxuICAzODpcdFx0ICBub2RlMCBpcyBmb3IgRERSNSBEUkFNcyBjb25uZWN0ZWQgdmlhIERJTU0sIHdoaWxlIG5vZGUxIGlzIGZvciBERFI0XG4gIDM5Olx0XHQgIERSQU1zIGNvbm5lY3RlZCB2aWEgQ1hMLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTkzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyBmb2N1c2VkIG9uIHRob3NlIGBEQU1PTmAgY29uZmlndXJhdGlvbnMg4oCTIGBEQU1PTmAsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9MUlVfU09SVGAsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYC4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBpbnRlcnBsYXksIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIHBhdGNoIGluIHF1ZXN0aW9uLiBNeSBtYWluIGNvbmNlcm4gaXMgdGhhdCB0aGVzZSBjb25maWd1cmF0aW9ucyBkZWZpbmUgdGhlIHNjb3BlIGFuZCBwYXJhbWV0ZXJzIG9mIHRoZSBEQU1PTiBtb25pdG9yaW5nIGFuZCBhY3Rpb25pbmcsIHNvIGFueSBjaGFuZ2VzIGludm9sdmluZyB0aGVtIGlzIHNpZ25pZmljYW50LCBldmVuIGlmIHNlZW1pbmdseSBtaW5vci4KClRoZSBwYXRjaCYjMzk7cyBjb3JlIGNoYW5nZSBpcyB0d29mb2xkLiBGaXJzdCwgaXQgcmVtb3ZlcyBhIGNoZWNrIHdpdGhpbiBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYC4gVGhpcyBkZXNlcnZlcyBpbW1lZGlhdGUgYXR0ZW50aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhhdCBjaGVjayB3YXMgdGhlcmUgaW5pdGlhbGx5IGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9mIGl0cyByZW1vdmFsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQgbWF5IGhhdmUgYmVlbiBhZGRlZCBmb3IgYSByZWFzb24gYW5kIHRodXMgaXRzIHJlbW92YWwgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBjYXJlZnVsbHkgZXZhbHVhdGUuIFRoaXMgYWZmZWN0cyB0aGUgbG9naWMgb2YgYWRkaW5nIHF1b3RhIGdvYWxzLCB3aGljaCBpcyBmdW5kYW1lbnRhbCB0byBEQU1PTiYjMzk7cyBvcGVyYXRpb24uCgpTZWNvbmQsIHRoZSBtb2RpZmljYXRpb24gdG8gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCB0byByZXR1cm4gYC1FSU5WQUxgIGlmIGBzcmMtJmd0O3RhcmdldF92YWx1ZWAgaXMgMCBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGlzIGV4cGxpY2l0bHkgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBxdW90YSBnb2FsIGNvbW1pdG1lbnQgbG9naWMuIFJldHVybmluZyBgLUVJTlZBTGAgaW5kaWNhdGVzIGEgdmFsaWRhdGlvbiBmYWlsdXJlIG9yIGFuIGludmFsaWQgaW5wdXQsIGltcGx5aW5nIHRoZSBjb2RlIG5vdyBjb25zaWRlcnMgYSB6ZXJvIGB0YXJnZXRfdmFsdWVgIGFuIGVycm9yIGNvbmRpdGlvbiB3aGVyZSBpdCB3YXNuJiMzOTt0IGJlZm9yZS4gSXQgaXMgbGlrZWx5IGEgZ29vZCBjaGFuZ2UsIGVuc3VyaW5nIHRoYXQgYSB2YWxpZCB0YXJnZXQgdmFsdWUgaXMgcHJvdmlkZWQgdG8gcHJldmVudCBmdXR1cmUsIHVuZXhwZWN0ZWQgaXNzdWVzLgoKTm93LCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucywgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIGV4YW1pbmUgdGhlIGNvZGUgYXJvdW5kIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgYW5kIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb250ZXh0IG9mIHRoaXMgY2hhbmdlIGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBxdW90YSBtYW5hZ2VtZW50IGFuZCBvdmVyYWxsIERBTU9OIGJlaGF2aW9yLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhlIHRhcmdldCB2YWx1ZSBpcyBzZXQsIHdoZXJlIGl0IGNvbWVzIGZyb20sIGFuZCB3aGF0IGNvbnNlcXVlbmNlcyB0aGUgbmV3IGAtRUlOVkFMYCByZXR1cm4gaGFzIHVwIHRoZSBjYWxsIGNoYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTExMzk9c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE1My0vKipcbm1tL2RhbW9uL2NvcmUuYzoxMTU0OiAqIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscygpIC0gQ29tbWl0IERBTU9TIHF1b3RhIGdvYWxzIHRvIGFub3RoZXIgcXVvdGEuXG5tbS9kYW1vbi9jb3JlLmMtMTE1NS0gKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PUyBxdW90YS5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTY1OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExNjYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMTk3PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIwMy1cdGRzdC1cdTAwM2VzeiA9IHNyYy1cdTAwM2Vzejtcbm1tL2RhbW9uL2NvcmUuYzoxMjA0Olx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKGRzdCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjA1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUxMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKlRyYWNpbmcgdGhlIFF1b3RhIExvZ2ljKioKCkFscmlnaHQsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhpcyBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0byB0cmFjZSBpdHMgY2FsbCBzdGFjay4gT2theSwgc28gaXQmIzM5O3MgY2FsbGVkIGJ5IGBkYW1vc19jb21taXRfcXVvdGFgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBuYW1pbmcgY29udmVudGlvbiB0byBicmVhayB0aGlzIHVwLiBBbmQgKnRoYXQqIGZ1bmN0aW9uLCBgZGFtb3NfY29tbWl0X3F1b3RhYCwgaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGBkYW1vc19jb21taXRgLiBSaWdodCwgc28gdGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXc7IHRoZSBxdW90YSBnb2FscyBjb21wdXRhdGlvbiBpcyBwYXJ0IG9mIHRoZSBxdW90YSBsb2dpYywgd2hpY2ggaXMgYW4gaW50ZWdyYWwgcGFydCBvZiB0aGUgb3ZlcmFsbCBjb21taXQgcHJvY2Vzcy4gVGhpcyBnaXZlcyBtZSBhIG1hcCBvZiB0aGUgbGFuZHNjYXBlOyBOb3csIEkgY2FuIHN0YXJ0IHRvIGZvcm11bGF0ZSBhIGh5cG90aGVzaXMgYWJvdXQgd2hhdCB0aGUgZGlmZmVyZW50IGdvYWxzIGl0IHVzZXMgYXJlIGluIHRoZSBvdmVyYWxsIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb3NfY29tbWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xMTA4PXN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbnRoX3F1b3RhX2dvYWwoXG4tLVxubW0vZGFtb24vY29yZS5jLTExMjAtXG5tbS9kYW1vbi9jb3JlLmM6MTEyMTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihcbm1tL2RhbW9uL2NvcmUuYy0xMTIyLVx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTM4LVxubW0vZGFtb24vY29yZS5jOjExMzk6c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy0xMTQwLVx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTQ4LVx0Lyoga2VlcCBsYXN0X3BzaV90b3RhbCBhcyBpcywgc2luY2UgaXQgd2lsbCBiZSB1cGRhdGVkIGluIG5leHQgY3ljbGUgKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTQ5Olx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTExNTAtXHRyZXR1cm4gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE1My0vKipcbm1tL2RhbW9uL2NvcmUuYzoxMTU0OiAqIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscygpIC0gQ29tbWl0IERBTU9TIHF1b3RhIGdvYWxzIHRvIGFub3RoZXIgcXVvdGEuXG5tbS9kYW1vbi9jb3JlLmMtMTE1NS0gKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PUyBxdW90YS5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTY1OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExNjYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTcyLVx0XHRpZiAoc3JjX2dvYWwpIHtcbm1tL2RhbW9uL2NvcmUuYzoxMTczOlx0XHRcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMTE3NC1cdFx0XHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTg2LVx0XHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vY29yZS5jOjExODc6XHRcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMTE4OC1cdFx0aWYgKGVycikge1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTk2LVxubW0vZGFtb24vY29yZS5jOjExOTc6c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExOTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjAzLVx0ZHN0LVx1MDAzZXN6ID0gc3JjLVx1MDAzZXN6O1xubW0vZGFtb24vY29yZS5jOjEyMDQ6XHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTEyMDUtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMjI4PXN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfb3BzX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjM5LVxubW0vZGFtb24vY29yZS5jOjEyNDA6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcl9hcmcoXG5tbS9kYW1vbi9jb3JlLmMtMTI0MS1cdFx0c3RydWN0IGRhbW9zX2ZpbHRlciAqZHN0LCBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEyNjAtXG5tbS9kYW1vbi9jb3JlLmM6MTI2MTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfZmlsdGVyKFxubW0vZGFtb24vY29yZS5jLTEyNjItXHRcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjY2LVx0ZHN0LVx1MDAzZWFsbG93ID0gc3JjLVx1MDAzZWFsbG93O1xubW0vZGFtb24vY29yZS5jOjEyNjc6XHRkYW1vc19jb21taXRfZmlsdGVyX2FyZyhkc3QsIHNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTI2OC19XG5tbS9kYW1vbi9jb3JlLmMtMTI2OS1cbm1tL2RhbW9uL2NvcmUuYzoxMjcwOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2NvcmVfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTI3MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyNzctXHRcdGlmIChzcmNfZmlsdGVyKVxubW0vZGFtb24vY29yZS5jOjEyNzg6XHRcdFx0ZGFtb3NfY29tbWl0X2ZpbHRlcihkc3RfZmlsdGVyLCBzcmNfZmlsdGVyKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjc5LVx0XHRlbHNlXG4tLVxubW0vZGFtb24vY29yZS5jLTEyOTEtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG5tbS9kYW1vbi9jb3JlLmM6MTI5MjpcdFx0ZGFtb3NfY29tbWl0X2ZpbHRlcl9hcmcobmV3X2ZpbHRlciwgc3JjX2ZpbHRlcik7XG5tbS9kYW1vbi9jb3JlLmMtMTI5My1cdFx0ZGFtb3NfYWRkX2ZpbHRlcihkc3QsIG5ld19maWx0ZXIpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjk3LVxubW0vZGFtb24vY29yZS5jOjEyOTg6c3RhdGljIGludCBkYW1vc19jb21taXRfb3BzX2ZpbHRlcnMoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxubW0vZGFtb24vY29yZS5jLTEyOTkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzA1LVx0XHRpZiAoc3JjX2ZpbHRlcilcbm1tL2RhbW9uL2NvcmUuYzoxMzA2Olx0XHRcdGRhbW9zX2NvbW1pdF9maWx0ZXIoZHN0X2ZpbHRlciwgc3JjX2ZpbHRlcik7XG5tbS9kYW1vbi9jb3JlLmMtMTMwNy1cdFx0ZWxzZVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzE5LVx0XHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vY29yZS5jOjEzMjA6XHRcdGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKG5ld19maWx0ZXIsIHNyY19maWx0ZXIpO1xubW0vZGFtb24vY29yZS5jLTEzMjEtXHRcdGRhbW9zX2FkZF9maWx0ZXIoZHN0LCBuZXdfZmlsdGVyKTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTM1Mj1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9wcm9iZV9wYXJhbXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzgwLS8qXG5tbS9kYW1vbi9jb3JlLmM6MTM4MTogKiBkYW1vc19jb21taXRfZGVzdHMoKSAtIENvcHkgbWlncmF0aW9uIGRlc3RpbmF0aW9ucyBmcm9tIEBzcmMgdG8gQGRzdC5cbm1tL2RhbW9uL2NvcmUuYy0xMzgyLSAqIEBkc3Q6XHREZXN0aW5hdGlvbiBzdHJ1Y3R1cmUgdG8gdXBkYXRlLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzk2LSAqL1xubW0vZGFtb24vY29yZS5jOjEzOTc6c3RhdGljIGludCBkYW1vc19jb21taXRfZGVzdHMoc3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xMzk4LVx0XHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDI3LVxubW0vZGFtb24vY29yZS5jOjE0Mjg6c3RhdGljIGludCBkYW1vc19jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTQyOS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0MzEtXG5tbS9kYW1vbi9jb3JlLmM6MTQzMjpcdGVyciA9IGRhbW9zX2NvbW1pdF9jb3JlX2ZpbHRlcnMoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTE0MzMtXHRpZiAoZXJyKVxubW0vZGFtb24vY29yZS5jLTE0MzQtXHRcdHJldHVybiBlcnI7XG5tbS9kYW1vbi9jb3JlLmM6MTQzNTpcdGVyciA9IGRhbW9zX2NvbW1pdF9vcHNfZmlsdGVycyhkc3QsIHNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTQzNi1cdGlmIChlcnIpXG4tLVxubW0vZGFtb24vY29yZS5jPTE0NDI9c3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fbnRoX3NjaGVtZShpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDUzLVxubW0vZGFtb24vY29yZS5jOjE0NTQ6c3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE0NTUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDYxLVxubW0vZGFtb24vY29yZS5jOjE0NjI6XHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGEoXHUwMDI2ZHN0LVx1MDAzZXF1b3RhLCBcdTAwMjZzcmMtXHUwMDNlcXVvdGEpO1xubW0vZGFtb24vY29yZS5jLTE0NjMtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDY4LVxubW0vZGFtb24vY29yZS5jOjE0Njk6XHRlcnIgPSBkYW1vc19jb21taXRfZGVzdHMoXHUwMDI2ZHN0LVx1MDAzZW1pZ3JhdGVfZGVzdHMsIFx1MDAyNnNyYy1cdTAwM2VtaWdyYXRlX2Rlc3RzKTtcbm1tL2RhbW9uL2NvcmUuYy0xNDcwLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQ3Mi1cbm1tL2RhbW9uL2NvcmUuYzoxNDczOlx0ZXJyID0gZGFtb3NfY29tbWl0X2ZpbHRlcnMoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTE0NzQtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNDgxPXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE0ODgtXHRcdGlmIChzcmNfc2NoZW1lKSB7XG5tbS9kYW1vbi9jb3JlLmM6MTQ4OTpcdFx0XHRlcnIgPSBkYW1vc19jb21taXQoZHN0X3NjaGVtZSwgc3JjX3NjaGVtZSk7XG5tbS9kYW1vbi9jb3JlLmMtMTQ5MC1cdFx0XHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTA2LVx0XHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vY29yZS5jOjE1MDc6XHRcdGVyciA9IGRhbW9zX2NvbW1pdChuZXdfc2NoZW1lLCBzcmNfc2NoZW1lKTtcbm1tL2RhbW9uL2NvcmUuYy0xNTA4LVx0XHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTA3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBEZWVwIGludG8gREFNT04gQ29tbWl0IENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkYW1vbl9jb21taXRfc2NoZW1lc2AuIEZyb20gdGhlIGNvZGUsIGl0JiMzOTtzIGNsZWFyIHRoaXMgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gREFNT04mIzM5O3MgY29tbWl0IHBoYXNlLiBJdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgZGFtb25fY29tbWl0X2N0eGAsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBhY3R1YWwgYXBwbGljYXRpb24gb2YgdGhlIGNvbW1pdCBvcGVyYXRpb25zLCBvbmNlIHRoZSBjb250ZXh0IGZvciB0aGUgY29tbWl0IGhhcyBiZWVuIGVzdGFibGlzaGVkLiBUaGlzIG1lYW5zIGl0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyBEQU1PTiBkZWNpZGVzICpob3cqIHRvIGNoYW5nZSBtZW1vcnkgc3RhdGVzIGJhc2VkIG9uIHRoZSBkZWNpc2lvbnMgbWFkZSBpbiB0aGUgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgKmluc2lkZSogYGRhbW9uX2NvbW1pdF9zY2hlbWVzYCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb250ZXh0IGRhdGEuIElzIGl0IGl0ZXJhdGluZyB0aHJvdWdoIGEgbGlzdCBvZiBzY2hlbWVzPyBBcmUgdGhlc2UgZGlmZmVyZW50IG9wdGltaXphdGlvbiBzdHJhdGVnaWVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBpbXBhY3RzIGhlcmU/IEkgbmVlZCB0byBsb29rIGRlZXBlciBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGFtb25fY29tbWl0X3NjaGVtZXNgIGFuZCBkZXRlcm1pbmUgaXRzIHBhcmFtZXRlcnMuIEkmIzM5O20gZ29pbmcgdG8gZGV0ZXJtaW5lIHdoYXQgc3RydWN0dXJlcyBhcmUgYmVpbmcgdXNlZCBhcyB3ZWxsLCBpbiBvcmRlciB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTE3Mjg9c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzYwLVxubW0vZGFtb24vY29yZS5jOjE3NjE6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTc2Mi17XG4tLVxubW0vZGFtb24vY29yZS5jPTE4MTk9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXG4tLVxubW0vZGFtb24vY29yZS5jLTE4MjYtXHRcdHJldHVybiBOVUxMO1xubW0vZGFtb24vY29yZS5jOjE4Mjc6XHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGRzdCk7XG5tbS9kYW1vbi9jb3JlLmMtMTgyOC1cdGlmIChlcnIpIHtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTgzNS0vKipcbm1tL2RhbW9uL2NvcmUuYzoxODM2OiAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLlxubW0vZGFtb24vY29yZS5jLTE4MzctICogQGRzdDpcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT04gY29udGV4dC5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg0Ny0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxODQ4OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE4NDkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODU1LVx0XHRyZXR1cm4gLUVOT01FTTtcbm1tL2RhbW9uL2NvcmUuYzoxODU2Olx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTE4NTctXHRpZiAoZXJyKVxubW0vZGFtb24vY29yZS5jLTE4NTgtXHRcdGdvdG8gb3V0O1xubW0vZGFtb24vY29yZS5jOjE4NTk6XHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTE4NjAtb3V0OlxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xOTQ1PXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTE5NjYtXG5tbS9kYW1vbi9jb3JlLmM6MTk2NzpzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTk2OC1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTk4ND1pbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk5NS1cbm1tL2RhbW9uL2NvcmUuYzoxOTk2Olx0XHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGN0eHNbaV0pO1xubW0vZGFtb24vY29yZS5jLTE5OTctXHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxNTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgREFNT04gU3lzZnMgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gYGRhbW9uX2NvbW1pdF9jdHhgIGlzIG91dCB0aGVyZSwgYmVpbmcgdXNlZCBieSB0aGUgc3lzZnMgaW50ZXJmYWNlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgd291bGQgYmUgaW4gdGhlIGNvcmUgc3lzZnMgZmlsZXMgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IGVpdGhlciBgbW0vZGFtb24vc3lzZnMuY2Agb3IsIGlmIHRoZSBjb250ZXh0IGlzIG1vcmUgYWJvdXQgdGhlIHNjaGVtYXMgdGhlbXNlbHZlcywgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiwgdXNhZ2UsIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXRhaWxzIGFib3V0IGBkYW1vbl9jb21taXRfY3R4YC4gSSBrbm93IHRoYXQgdGhlc2UgZmlsZXMgb2Z0ZW4gcHJvdmlkZSB0aGUgbGlua2FnZSBiZXR3ZWVuIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSAoc3lzZnMpIGFuZCB0aGUgREFNT04gY29yZS4gSSB3aWxsIGFsc28gYmUgbG9va2luZyBmb3IgdXNhZ2UgaW4gb3RoZXIgREFNT04gY29yZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xNzI4PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTc2MC1cbm1tL2RhbW9uL2NvcmUuYzoxNzYxOnN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE3NjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xODE5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODI2LVx0XHRyZXR1cm4gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYzoxODI3Olx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpO1xubW0vZGFtb24vY29yZS5jLTE4MjgtXHRpZiAoZXJyKSB7XG4tLVxubW0vZGFtb24vY29yZS5jLTE4MzUtLyoqXG5tbS9kYW1vbi9jb3JlLmM6MTgzNjogKiBkYW1vbl9jb21taXRfY3R4KCkgLSBDb21taXQgcGFyYW1ldGVycyBvZiBhIERBTU9OIGNvbnRleHQgdG8gYW5vdGhlci5cbm1tL2RhbW9uL2NvcmUuYy0xODM3LSAqIEBkc3Q6XHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXG4tLVxubW0vZGFtb24vY29yZS5jLTE4NDctICovXG5tbS9kYW1vbi9jb3JlLmM6MTg0ODppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xODQ5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg1NS1cdFx0cmV0dXJuIC1FTk9NRU07XG5tbS9kYW1vbi9jb3JlLmM6MTg1NjpcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xODU3LVx0aWYgKGVycilcbm1tL2RhbW9uL2NvcmUuYy0xODU4LVx0XHRnb3RvIG91dDtcbm1tL2RhbW9uL2NvcmUuYzoxODU5Olx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xODYwLW91dDpcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTk0NT1zdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTY2LVxubW0vZGFtb24vY29yZS5jOjE5Njc6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xubW0vZGFtb24vY29yZS5jLTE5NjgtXG4tLVxubW0vZGFtb24vY29yZS5jPTE5ODQ9aW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXG4tLVxubW0vZGFtb24vY29yZS5jLTE5OTUtXG5tbS9kYW1vbi9jb3JlLmM6MTk5NjpcdFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBjdHhzW2ldKTtcbm1tL2RhbW9uL2NvcmUuYy0xOTk3LVx0XHRkYW1vbl9kZXN0cm95X2N0eCh0ZXN0X2N0eCk7XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0yNzE9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMzUtXHRcdGdvdG8gb3V0O1xubW0vZGFtb24vbHJ1X3NvcnQuYzozMzY6XHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGN0eCwgcGFyYW1fY3R4KTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzM3LW91dDpcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9MTk0PXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTI2Mi1cdFx0Z290byBvdXQ7XG5tbS9kYW1vbi9yZWNsYWltLmM6MjYzOlx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChjdHgsIHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMjY0LW91dDpcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIxMzE9c3RhdGljIGludCBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQodm9pZCAqZGF0YSlcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIxNDUtXHRcdHJldHVybiBQVFJfRVJSKHBhcmFtX2N0eCk7XG5tbS9kYW1vbi9zeXNmcy5jOjIxNDY6XHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCBwYXJhbV9jdHgpO1xubW0vZGFtb24vc3lzZnMuYy0yMTQ3LVx0ZGFtb25fZGVzdHJveV9jdHgocGFyYW1fY3R4KTtcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9MTMwOT1zdGF0aWMgdm9pZCBkYW1vbl90ZXN0X2NvbW1pdF9jdHgoc3RydWN0IGt1bml0ICp0ZXN0KVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMzIyLVx0c3JjLVx1MDAzZW1pbl9yZWdpb25fc3ogPSA0MDk2O1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEzMjM6XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyksIDApO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEzMjQtXHRzcmMtXHUwMDNlbWluX3JlZ2lvbl9zeiA9IDQwOTU7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTMyNTpcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKSwgLUVJTlZBTCk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTMyNi1cdHNyYy1cdTAwM2VtaW5fcmVnaW9uX3N6ID0gNDA5Njtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMzI3LVx0c3JjLVx1MDAzZXBhdXNlID0gdHJ1ZTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMzI4Olx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpLCAwKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMzI5LVx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgZHN0LVx1MDAzZXBhdXNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4NjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEQU1PTiBDb21taXQgUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoIGhlcmUsIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgREFNT04gc3lzdGVtJiMzOTtzIGNvbW1pdCBtZWNoYW5pc20gaXMgdHJpZ2dlcmVkLiBJdCBsb29rcyBsaWtlIHRoZSBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBmdW5jdGlvbiBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgY2FsbGluZyBgZGFtb25fY29tbWl0X2N0eGAuIE5vdywgYmVjYXVzZSB0aGlzIGlzIHRoZSBzeXNmcyBpbnRlcmZhY2UsIGl0IG1lYW5zIHVzZXJzcGFjZSBjYW4gZGlyZWN0bHkgaW5mbHVlbmNlIHRoZSBleGVjdXRpb24gb2YgYGRhbW9uX2NvbW1pdF9jdHhgLCB3aGljaCB0aGVuIGxlYWRzIHRvIGBkYW1vbl9jb21taXRfcXVvdGFfZ29hbGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCBmb3IgZXh0ZXJuYWwgY29udHJvbC4KCkZ1cnRoZXJtb3JlLCBJJiMzOTt2ZSBub3RpY2VkIHRoYXQgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgIGFuZCBgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzYCBhbHNvIHRyaWdnZXIgdGhlIHNhbWUgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgYXJvdW5kIGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgLCBpbiBgbW0vZGFtb24vc3lzZnMuY2AgdG8gYmV0dGVyIHNlZSB0aGUgY29udGV4dCBvZiB0aGVzZSBjYWxscywgYW5kIGhvdyB0aGUgb3ZlcmFsbCBjb21taXQgcHJvY2VzcyB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc3lzZnNfY29tbWl0X2lucHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTIxMjI9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3N5c2ZzX2J1aWxkX2N0eChcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIxMjUtLypcbm1tL2RhbW9uL3N5c2ZzLmM6MjEyNjogKiBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQoKSAtIENvbW1pdCB1c2VyIGlucHV0cyB0byBhIHJ1bm5pbmcga2RhbW9uZC5cbm1tL2RhbW9uL3N5c2ZzLmMtMjEyNy0gKiBAa2RhbW9uZDpcdFRoZSBrb2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBhc3NvY2lhdGVkIGtkYW1vbmQuXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMTMwLSAqL1xubW0vZGFtb24vc3lzZnMuYzoyMTMxOnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXG5tbS9kYW1vbi9zeXNmcy5jLTIxMzIte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjM2ND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM3Ni1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jOjIzNzc6XHRcdFx0XHRkYW1vbl9zeXNmc19jb21taXRfaW5wdXQsIGtkYW1vbmQpO1xubW0vZGFtb24vc3lzZnMuYy0yMzc4LVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFM6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTcwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogQSBCdWcgRml4IGluIFF1b3RhIE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBzZWVpbmcgaXMgdGhhdCB0aGUgc3lzZnMgaW50ZXJmYWNlIGlzIHJlYWNoYWJsZSwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBmdW5jdGlvbi4gSXQmIzM5O3Mgbm93IGdvaW5nIHRvIHJldHVybiBgLUVJTlZBTGAgaWYgdGhlIGBzcmMtJmd0O3RhcmdldF92YWx1ZWAgaXMgemVyby4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaXQgaW1tZWRpYXRlbHkgc2V0cyBvZmYgYWxhcm0gYmVsbHMgYWJvdXQgcG90ZW50aWFsIGFyaXRobWV0aWMgaXNzdWVzLgoKUmlnaHQsIHRoZSByZWFzb24gZm9yIHRoaXMgaXMgY2xlYXJseSBzdGF0ZWQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlOiAmIzM0O3plcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKCkmIzM0Oy4gQmluZ28hIFNvLCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGJ1ZyBmaXguIEEgZGl2aXNpb24tYnktemVybywgYWx3YXlzIGEgZnVuIG9uZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gYWRkcmVzcyB0aGF0IHNjZW5hcmlvLgoKTm93LCBteSBuZXh0IG1vdmUgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRhbW9zX3F1b3RhX3N0b3JlYCwgb3IgYW55dGhpbmcgc2ltaWxhciB0byBpdCwgYW5kIHRyYWNlIHRoZSB2YWx1ZSB0byBjb25maXJtIHRoaXMgYXMgYSBidWcuIEkga25vdyB0aGF0IEkgbXVzdCBsb29rIGNsb3NlbHkgZm9yIGhvdyBgc3JjLSZndDt0YXJnZXRfdmFsdWVgIGlzIHVzZWQsIHNwZWNpZmljYWxseSBpbiBhIGRpdmlzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9zX3F1b3RhX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5NzcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgU3VzcGVjdCBEaXZpc2lvbiBieSBaZXJvKioKCk9rYXksIGxldCBtZSBzZWUuLi4gdGhlIGNvbW1pdCBtZXNzYWdlIGZsYWdzIGEgZGl2aXNpb24gYnkgemVybyBlcnJvciB3aXRoaW4gYGRhbW9zX3F1b3RhX3N0b3JlKClgIHdoZW4gdGhlIHRhcmdldCB2YWx1ZSBpcyB6ZXJvLiBCdXQsIHdhaXQgYSBtaW51dGUsIHRoZSBhY3R1YWwgcGF0Y2ggc2hvd3MgYSBjaGVjayBmb3IgbnVsbCBwb2ludGVycywgYG5vZGUwX21lbV91c2VkX2JwYCBhbmQgYG5vZGUwX21lbV9mcmVlX2JwYCwgYW5kIGEgYGdvdG8gZnJlZV9vdXQ7YCBpZiBlaXRoZXIgYXJlIG51bGwuIFRoYXQgZG9lc24mIzM5O3QgZGlyZWN0bHkgc2NyZWFtICYjMzQ7ZGl2aXNpb24gYnkgemVybyYjMzQ7IGluIGBkYW1vc19xdW90YV9zdG9yZSgpYC4gSG1tLCB0aGUgY29tbWVudCBpdHNlbGYgYXBwZWFycyB0byBiZSBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4uLiBJbnRlcmVzdGluZy4KCkl0IHNlZW1zIEkmIzM5O20gYmFya2luZyB1cCB0aGUgd3JvbmcgdHJlZS4gVGhpcyBsaWtlbHkgaW1wbGllcyB0aGUgcHJvYmxlbSBzdGVtcyBmcm9tIGEgZGlmZmVyZW50IGZ1bmN0aW9uLCBwb3RlbnRpYWxseSBhIGZ1bmN0aW9uIHNpbWlsYXIgdG8gYGRhbW9zX3F1b3RhX3Njb3JlYCwgb3Igd2l0aGluIGFuIGluZGlyZWN0IGNhbGwgY2hhaW4uIFRoZSBjaGVjayB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGlzIGF0dGVtcHRpbmcgdG8gcHJldmVudCB0aGUgZGl2aXNpb24uIE5vdyBJIG5lZWQgdG8gdHJhY2sgZG93biBleGFjdGx5ICp3aGVyZSogdGhlIGRpdmlzaW9uIGlzIG9jY3VycmluZywgaWYgbm90IGluIHRoZSB0YXJnZXQgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxpbmcgc2VxdWVuY2UgYW5kIGxvb2sgYXQgdGhlIHZhcmlhYmxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGFyZ2V0X3ZhbHVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz02Mjc9c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jLTYyOC1cdFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXG5tbS9kYW1vbi9jb3JlLmM6NjI5Olx0XHR1bnNpZ25lZCBsb25nIHRhcmdldF92YWx1ZSlcbm1tL2RhbW9uL2NvcmUuYy02MzAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy02MzYtXHRnb2FsLVx1MDAzZW1ldHJpYyA9IG1ldHJpYztcbm1tL2RhbW9uL2NvcmUuYzo2Mzc6XHRnb2FsLVx1MDAzZXRhcmdldF92YWx1ZSA9IHRhcmdldF92YWx1ZTtcbm1tL2RhbW9uL2NvcmUuYy02MzgtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZnb2FsLVx1MDAzZWxpc3QpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMTM5PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4tLVxubW0vZGFtb24vY29yZS5jLTExNDEte1xubW0vZGFtb24vY29yZS5jOjExNDI6XHRpZiAoIXNyYy1cdTAwM2V0YXJnZXRfdmFsdWUpXG5tbS9kYW1vbi9jb3JlLmMtMTE0My1cdFx0cmV0dXJuICAtRUlOVkFMO1xubW0vZGFtb24vY29yZS5jLTExNDQtXHRkc3QtXHUwMDNlbWV0cmljID0gc3JjLVx1MDAzZW1ldHJpYztcbm1tL2RhbW9uL2NvcmUuYzoxMTQ1Olx0ZHN0LVx1MDAzZXRhcmdldF92YWx1ZSA9IHNyYy1cdTAwM2V0YXJnZXRfdmFsdWU7XG5tbS9kYW1vbi9jb3JlLmMtMTE0Ni1cdGlmIChkc3QtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQpXG4tLVxubW0vZGFtb24vY29yZS5jPTExNjU9aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTExODMtXHRcdG5ld19nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoXG5tbS9kYW1vbi9jb3JlLmM6MTE4NDpcdFx0XHRcdHNyY19nb2FsLVx1MDAzZW1ldHJpYywgc3JjX2dvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKTtcbm1tL2RhbW9uL2NvcmUuYy0xMTg1LVx0XHRpZiAoIW5ld19nb2FsKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMDU3PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3F1b3RhX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzA2Ni1cdFx0XHRcdG11bHRfZnJhYyhnb2FsLVx1MDAzZWN1cnJlbnRfdmFsdWUsIDEwMDAwLFxubW0vZGFtb24vY29yZS5jOjMwNjc6XHRcdFx0XHRcdGdvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKSk7XG5tbS9kYW1vbi9jb3JlLmMtMzA2OC1cdH1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTIxNT1zdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTctXHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfbWV0cmljIG1ldHJpYztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjE4Olx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxOS1cdHVuc2lnbmVkIGxvbmcgY3VycmVudF92YWx1ZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTI5MT1zdGF0aWMgc3NpemVfdCB0YXJnZXRfbWV0cmljX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzA5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMTA6c3RhdGljIHNzaXplX3QgdGFyZ2V0X3ZhbHVlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxMS1cdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMTUtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxNjpcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7JWx1XFxuXCYjMzQ7LCBnb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxNy19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzE5OnN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzIwLVx0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzIzLVx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMjQ6XHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZnb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyNS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTQxNT1zdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyID1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxNy1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDE4OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF90YXJnZXRfdmFsdWVfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOTpcdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X3ZhbHVlLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIwLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDMwPXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vc19zeXNmc19xdW90YV9nb2FsX2F0dHJzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQzMS1cdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzMjpcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMzLVx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlX2F0dHIuYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjg0Nz1zdGF0aWMgaW50IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjg1Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODU4Olx0XHRpZiAoIXN5c2ZzX2dvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NTktXHRcdFx0Y29udGludWU7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NjEtXHRcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChzeXNmc19nb2FsLVx1MDAzZW1ldHJpYyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODYyOlx0XHRcdFx0c3lzZnNfZ29hbC1cdTAwM2V0YXJnZXRfdmFsdWUpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NjMtXHRcdGlmICghZ29hbClcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9NzUwPXN0YXRpYyB2b2lkIGRhbW9zX3Rlc3RfY29tbWl0X3F1b3RhX2dvYWxfZm9yKHN0cnVjdCBrdW5pdCAqdGVzdCxcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNzYwLVx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRzdC1cdTAwM2VtZXRyaWMsIHNyYy1cdTAwM2VtZXRyaWMpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjc2MTpcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkc3QtXHUwMDNldGFyZ2V0X3ZhbHVlLCBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlKTtcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03NjItXHRpZiAoc3JjLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUKVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD03ODE9c3RhdGljIHZvaWQgZGFtb3NfdGVzdF9jb21taXRfcXVvdGFfZ29hbChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc4NC1cdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUyxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo3ODU6XHRcdC50YXJnZXRfdmFsdWUgPSAxMDAwLFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc4Ni1cdFx0LmN1cnJlbnRfdmFsdWUgPSAxMjMsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc5Mi1cdFx0XHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo3OTM6XHRcdFx0LnRhcmdldF92YWx1ZSA9IDc4OSxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03OTQtXHRcdFx0LmN1cnJlbnRfdmFsdWUgPSAxMn0pO1xuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03OTctXHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6Nzk4Olx0XHRcdC50YXJnZXRfdmFsdWUgPSAzNDUsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNzk5LVx0XHRcdC5jdXJyZW50X3ZhbHVlID0gNjc4LFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MDQtXHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlAsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODA1Olx0XHRcdC50YXJnZXRfdmFsdWUgPSAxMixcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MDYtXHRcdFx0LmN1cnJlbnRfdmFsdWUgPSAzNDUsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgxMS1cdFx0XHQubWV0cmljID0gREFNT1NfUVVPVEFfTk9ERV9NRU1DR19VU0VEX0JQLFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjgxMjpcdFx0XHQudGFyZ2V0X3ZhbHVlID0gNDU2LFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgxMy1cdFx0XHQuY3VycmVudF92YWx1ZSA9IDU2Nyxcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODE5LVx0XHRcdC5tZXRyaWMgPSBEQU1PU19RVU9UQV9OT0RFX01FTUNHX0ZSRUVfQlAsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODIwOlx0XHRcdC50YXJnZXRfdmFsdWUgPSA4OTAsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODIxLVx0XHRcdC5jdXJyZW50X3ZhbHVlID0gOTAxLFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MjctXHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUyxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo4Mjg6XHRcdFx0LnRhcmdldF92YWx1ZSA9IDIzNCxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MjktXHRcdFx0LmN1cnJlbnRfdmFsdWUgPSAzNDUsXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oPTgzND1zdGF0aWMgdm9pZCBkYW1vc190ZXN0X2NvbW1pdF9xdW90YV9nb2Fsc19mb3Ioc3RydWN0IGt1bml0ICp0ZXN0LFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04NTMtXHRcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChkc3RfZ29hbHNbaV0ubWV0cmljLFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjg1NDpcdFx0XHRcdGRzdF9nb2Fsc1tpXS50YXJnZXRfdmFsdWUpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTg1NS1cdFx0aWYgKCFnb2FsKVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04NzUtXHRcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBnb2FsLVx1MDAzZW1ldHJpYywgc3JjX2dvYWxzW2ldLm1ldHJpYyk7XG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODc2Olx0XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZ29hbC1cdTAwM2V0YXJnZXRfdmFsdWUsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODc3Olx0XHRcdFx0c3JjX2dvYWxzW2kmIzQzOyYjNDM7XS50YXJnZXRfdmFsdWUpO1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTg3OC1cdH1cbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9ODg4PXN0YXRpYyB2b2lkIGRhbW9zX3Rlc3RfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODk0LVx0XHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODk1Olx0XHRcdFx0LnRhcmdldF92YWx1ZSA9IDEyMyxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04OTYtXHRcdFx0XHR9LFxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC05MDEtXHRcdFx0XHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo5MDI6XHRcdFx0XHQudGFyZ2V0X3ZhbHVlID0gMjM0LFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwMy1cdFx0XHRcdH0sXG4tLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwOC1cdFx0XHRcdC5tZXRyaWMgPSBEQU1PU19RVU9UQV9VU0VSX0lOUFVULFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjkwOTpcdFx0XHRcdC50YXJnZXRfdmFsdWUgPSAzNDUsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtOTEwLVx0XHRcdFx0fSxcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtOTE1LVx0XHRcdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6OTE2Olx0XHRcdFx0LnRhcmdldF92YWx1ZSA9IDQ1Nixcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC05MTctXHRcdFx0XHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTUwMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gUXVvdGEgU2NvcmUgQnVnZml4KioKCk9rYXksIHNvIHRoZSBkaXZpc2lvbiBieSB6ZXJvIGlzIGhhcHBlbmluZyBpbnNpZGUgYGRhbW9zX3F1b3RhX3Njb3JlYC4gSSBzZWUgaXQgY2xlYXJseToKCmBgYGMKCQkJc2NvcmUgPSBtYXgoc2NvcmUsCgkJCQltdWx0X2ZyYWMoZ29hbC0mZ3Q7Y3VycmVudF92YWx1ZSwgMTAwMDAsCgkJCQkJZ29hbC0mZ3Q7dGFyZ2V0X3ZhbHVlKSk7CmBgYAoKSWYgYGdvYWwtJmd0O3RhcmdldF92YWx1ZWAgaXMgemVybywgd2UmIzM5O3JlIGRpdmlkaW5nIGJ5IHplcm8uIFNpbXBsZSBlbm91Z2guIFRoZSBwcm9wb3NlZCBwYXRjaCBhZGRyZXNzZXMgdGhpcyBieSBoYXZpbmcgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCByZXR1cm4gYC1FSU5WQUxgIGlmIHRoZSBgc3JjLSZndDt0YXJnZXRfdmFsdWVgIGlzIHplcm8sIHdoaWNoIHNlZW1zIHJlYXNvbmFibGUuCgpOb3csIGxldCYjMzk7cyB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgdGhlIGZ1bGwgcGljdHVyZS4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpcyBjYWxsZWQgZnJvbSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCwgd2hpY2ggdGhlbiBmZWVkcyBpbnRvIGBkYW1vc19jb21taXRfcXVvdGFgLCB3aGljaCBpcyBjYWxsZWQgYnkgYGRhbW9zX2NvbW1pdGAsIHdoaWNoIGlzIHN1YnNlcXVlbnRseSBjYWxsZWQgZnJvbSBgZGFtb25fY29tbWl0X3NjaGVtZXNgLCBhbmQgZmluYWxseSwgYGRhbW9uX2NvbW1pdF9jdHhgLiBUaGUgY3J1Y2lhbCBlbnRyeSBwb2ludCBpcyBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCwgd2hpY2ggY2FsbHMgYGRhbW9uX2NvbW1pdF9jdHhgLiBBaCwgc28gYSB1c2VyIGNhbiB3cml0ZSBkaXJlY3RseSB0byBgdGFyZ2V0X3ZhbHVlYCB0aHJvdWdoIHN5c2ZzLCBhbmQgdGhlbiB0cmlnZ2VyIGBjb21taXRfaW5wdXRgLCB3aGljaCBwcmV2aW91c2x5IGFsbG93ZWQgYHRhcmdldF92YWx1ZWAgdG8gYmUgc2V0IHRvIHplcm8sIGFuZCB0aGUgZGl2aXNpb24gYnkgemVybyB3b3VsZCBvY2N1ciBpbiBgZGFtb3NfcXVvdGFfc2NvcmVgLiBOb3cgaXQgY29ycmVjdGx5IHJldHVybnMgYC1FSU5WQUxgLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBidWcgZml4LCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSB1c2VyLXJlYWNoYWJsZSB2aWEgdGhlIHN5c2ZzIGludGVyZmFjZS4gVGhlIGV4aXN0ZW5jZSBvZiB0aGUgc3lzZnMgaW50ZXJmYWNlIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19EQU1PTl9TWVNGU2AuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvbiB0aGF0IGNvbmZpZyBvcHRpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgaW1wbGljYXRpb25zIGZvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1NZU0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTU2PWNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS2NvbmZpZyBMYWJ5cmludGgqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7QWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gcm91Z2hseSBsaW5lIDY4LiYjMzQ7IFdoeSB0aGF0IGxpbmU/IFdlbGwsIEkgZG9uJiMzOTt0IGtub3cgeWV0LCBidXQgaXQmIzM5O3MgYSBzdGFydGluZyBwb2ludC4gSXQgY291bGQgYmUgd2hlcmUgYSBzcGVjaWZpYyBmZWF0dXJlIGlzIGRlZmluZWQsIGEgY3JpdGljYWwgdmFyaWFibGUgaXMgZGVjbGFyZWQsIG9yIHBlcmhhcHMgd2hlcmUgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgc2V0cyB1cCBzb21ldGhpbmcgcmVsZXZhbnQuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSB0cmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDczNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEQU1PTiBRdW90YSBHb2FsIENoYW5nZXMgYW5kIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBtb2RpZmllcyB0aGUgREFNT04gcXVvdGEgZ29hbCBoYW5kbGluZy4gSXQgbG9va3MgbGlrZSBpdCB0b3VjaGVzIGBEQU1PTl9TWVNGU2AsIHdoaWNoLCBuYXR1cmFsbHksIGRlcGVuZHMgb24gYERBTU9OYCBhbmQgYFNZU0ZTYC4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgIGFuZCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBzcGVjaWZpY2FsbHkuCgpJbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AsIHRoZXJlJiMzOTtzIGFuIGludGVyZXN0aW5nIHJlbW92YWwuIFRoYXQgY2hlY2sgYGlmICgxMDAwMCAmbHQ7IGFjdGl2ZV9tZW1fYnApYCBpcyBnb25lLiBJIGluaXRpYWxseSB0aG91Z2h0IGl0IHdhcyBiZWNhdXNlIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAgZGlkbiYjMzk7dCBjYXJlIGFib3V0IHRoZSB1cHBlciBib3VuZCwgYnV0IHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBBZnRlciBhIGxpdHRsZSBtb3JlIGRpZ2dpbmcsIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgKm5vdyogaGFuZGxlcyB0aGUgaW52YWxpZCB2YWx1ZSBjaGVjaywgcmV0dXJuaW5nIGAtRUlOVkFMYCBpZiBgdGFyZ2V0X3ZhbHVlYCBpcyAwLiBTbyB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFib3V0IHNoaWZ0aW5nIHRoZSBlcnJvciBjaGVjayBmcm9tIHRoZSBxdW90YSBnb2FsICphZGRpdGlvbiogZnVuY3Rpb24gdG8gdGhlICpjb21taXQqIGZ1bmN0aW9uLiBDb25zZXF1ZW50bHksIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgYGFjdGl2ZV9tZW1fYnBgIGlzIG5vbi16ZXJvIHdoZW4gdGhlIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAgaXMgY2FsbGVkLgoKVGhlIHNpdHVhdGlvbiBpcyB2ZXJ5IHNpbWlsYXIgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFRoYXQgY2hlY2sgZm9yIHplcm8gYG5vZGUwX21lbV91c2VkX2JwYCBvciBgbm9kZTBfbWVtX2ZyZWVfYnBgIGlzIGFsc28gZ29uZS4gSXQmIzM5O3MgdGhlIHNhbWUgcmF0aW9uYWxlIGFzIGBtbS9kYW1vbi9scnVfc29ydC5jYDogdGhlIHJlc3BvbnNpYmlsaXR5IGhhcyBzaGlmdGVkIHRvIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAsIHdoaWNoIG5vdyByZXR1cm5zIGAtRUlOVkFMYCBpZiBgdGFyZ2V0X3ZhbHVlYCBpcyAwLiBXYWl0LCBgZGFtb3NfbmV3X3F1b3RhX2dvYWxgIGRvZXNuJiMzOTt0IGFjdHVhbGx5ICpyZXR1cm4qIGAtRUlOVkFMYCwgaXQganVzdCBhbGxvY2F0ZXMgdGhlIGRhdGEuIFRoZSBlcnJvciBpcyBvbmx5IHBvc3NpYmxlIGF0IHRoZSBjb21taXQgc3RlcCB3aGVuIGBkYW1vbl9jb21taXRfY3R4YCBpcyBjYWxsZWQsIGJlY2F1c2UgaXQgZXZlbnR1YWxseSBjYWxscyBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgLiBMZXQmIzM5O3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGBtdGllci5jYCBzYW1wbGUsIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBidWlsZHMgdGhlIGNvbnRleHQgYW5kIHRoZW4gYGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydGAga2lja3MgdGhpbmdzIG9mZiB3aXRoIGEgY2FsbCB0byBgZGFtb25fc3RhcnRgLiBBbmQgYGRhbW9uX3N0YXJ0YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSBjYWxscyBgX19kYW1vbl9jb21taXRfY3R4YCB0byB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVycywgc28geWVzLCB0aGUgY2hlY2sgaXMgbm93IHJlZHVuZGFudC4KClRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIGZvY3VzZWQgYXJvdW5kIGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBhbmQgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AuIFRoaXMgZGVmaW5pdGVseSBsb29rcyBsaWtlIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBXZSBjYW4gZXhwbG9yZSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIGFkZGVkIGVycm9yIGhhbmRsaW5nLgoKVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb25zIEkmIzM5O20gbW9zdCBpbnRlcmVzdGVkIGluIGZvciBmdXp6aW5nIGFyZToKCiogICBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgCiogICBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYAoqICAgYGRhbW9uX2NvbW1pdF9jdHhgCiogICBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YAoqICAgYGRhbW9zX3F1b3RhX3Njb3JlYAoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlaXIgdmlzaWJpbGl0eS4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AgYW5kIGBkYW1vbl9jb21taXRfY3R4YCBhcmUgbm9uLXN0YXRpYy4gYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAgYW5kIGBkYW1vc19xdW90YV9zY29yZWAgYXJlIHN0YXRpYy4gSSB3aWxsIG5vdyBsb29rIG92ZXIgdGhlIGNvZGUgaW4gYG1tL2RhbW9uL2NvcmUuY2AgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xMTM5PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4tLVxubW0vZGFtb24vY29yZS5jLTExNjQtICovXG5tbS9kYW1vbi9jb3JlLmM6MTE2NTppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMTY2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI1NDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIG15IGRvbWFpbiBvZiBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBDb21taXQgQ29udGV4dCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGNoZWNraW5nIHRoZSBgZGFtb25fY29tbWl0X2N0eGAuIEkga25vdyBpdCYjMzk7cyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBvZiB0aGlzIGNvbW1pdCBhbmQgdGhlIHZhcmlvdXMgY29udGV4dHVhbCBhc3BlY3RzIHRoYXQgaW5mbHVlbmNlIHRoZSBjdXJyZW50IG9wZXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB0aGVyZSwgZGl2ZSBpbnRvIHRoZSBkZXRhaWxzIHdpdGhpbiBpdCwgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBJIGV4cGVjdC4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZW5kZWQgYWN0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiBvZiB1bmRlcnN0YW5kaW5nIHRoZSBwcmVzZW50IHN0YWdlIGFuZCBkZXRlcm1pbmluZyBteSBuZXh0IGFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCBkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xODE5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODQ3LSAqL1xubW0vZGFtb24vY29yZS5jOjE4NDg6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTg0OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODYyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgbWVudGFsIG1vZGVsIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3Q6IGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBvaW50IGZvciBhbnkgRHluYW1pYyBBZGFwdGl2ZSBNZW1vcnkgT3B0aW1pemVyIChEQU1PTikgc3lzdGVtIGludGVyYWN0aW5nIHdpdGggc3lzZnMsIGFuZCBpbiBwYXJ0aWN1bGFyIGEgZnVuY3Rpb24gbmFtZSB0aGF0IGxpa2VseSByZWxhdGVzIHRvIHRha2luZyB1c2VyIGlucHV0IGFuZCBjb25maWd1cmluZyB0aGUgbW9uaXRvcmluZy4gR2l2ZW4gdGhlIGZ1bmN0aW9uIG5hbWUsIEkmIzM5O2QgZXhwZWN0IGl0IGlzIHRoZSBwb2ludCB3aGVyZSB0aGUgYWN0dWFsIG1vbml0b3JpbmcgY29uZmlndXJhdGlvbiBpcyBhcHBsaWVkIG9yIGNvbW1pdHRlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtkIGltbWVkaWF0ZWx5IHdhbnQgdG8gY2hlY2s6CgoqICAgKipFcnJvciBIYW5kbGluZzoqKiBBcmUgdGhlcmUgcm9idXN0IGNoZWNrcyBvbiB0aGUgaW5wdXQgdmFsdWVzPyBBcmUgaW52YWxpZCBjb25maWd1cmF0aW9ucyBncmFjZWZ1bGx5IHJlamVjdGVkLCBvciBjYW4gdGhleSBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgY3Jhc2hlcz8KKiAgICoqRGF0YSBWYWxpZGF0aW9uOioqIEFyZSBhbGwgdGhlIGlucHV0IHBhcmFtZXRlcnMgdGhvcm91Z2hseSB2YWxpZGF0ZWQgYWdhaW5zdCByZWFzb25hYmxlIHJhbmdlcyBhbmQgY29uc3RyYWludHM/IFNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBmcmVxdWVudGx5IGFyaXNlIGhlcmUuCiogICAqKkF0b21pY2l0eS9Db25jdXJyZW5jeToqKiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBwcm90ZWN0ZWQgYWdhaW5zdCBjb25jdXJyZW50IGFjY2VzcywgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBtb2RpZnlpbmcgc2hhcmVkIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIERBTU9OJiMzOTtzIG9wZXJhdGlvbj8gQXJlIGxvY2tzIHVzZWQgYXBwcm9wcmlhdGVseSBhbmQgZWZmaWNpZW50bHk/IElzIHRoZXJlIHBvdGVudGlhbCBmb3IgcmFjZSBjb25kaXRpb25zIG9yIGRlYWRsb2Nrcz8KKiAgICoqU2lkZSBFZmZlY3RzOioqIFdoYXQgYXJlIHRoZSBhY3R1YWwgaW1wbGljYXRpb25zIG9mIGNvbW1pdHRpbmcgdGhpcyBpbnB1dD8gRG9lcyBpdCBpbW1lZGlhdGVseSBhZmZlY3QgbW9uaXRvcmluZyBiZWhhdmlvcj8gRG9lcyBpdCByZXF1aXJlIGFueSBiYWNrZ3JvdW5kIHRhc2tzIHRvIGJlIGxhdW5jaGVkIG9yIG1vZGlmaWVkPyBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIG90aGVyIERBTU9OIG1vZHVsZXMgb3Igc3Vic3lzdGVtcz8KKiAgICoqUmVzb3VyY2UgTWFuYWdlbWVudDoqKiBBcmUgdGhlcmUgYW55IHJlc291cmNlIGxlYWtzIHBvc3NpYmxlIGR1cmluZyBjb25maWd1cmF0aW9uIHVwZGF0ZXM/IEFyZSBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgaGFuZGxlZCBjb3JyZWN0bHkgd2l0aGluIHRoaXMgZnVuY3Rpb24sIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIGVycm9ycyBkdXJpbmcgdGhlIGNvbW1pdCBwcm9jZXNzPwoqICAgKipEb2N1bWVudGF0aW9uOioqIEFyZSB0aGVyZSBnb29kIGNvbW1lbnRzIGFuZCBkb2N1bWVudGF0aW9uIGV4cGxhaW5pbmcgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMsIHdoYXQgaW5wdXRzIGFyZSBhY2NlcHRlZCwgYW5kIGFueSBsaW1pdGF0aW9ucyBvciBzaWRlIGVmZmVjdHM/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5hYmlsaXR5IGFuZCBkZWJ1Z2dpbmcuCgpNeSBpbW1lZGlhdGUgZm9sbG93LXVwIHdvdWxkIGJlIHRvIHRyYWNlIHRoZSBmdW5jdGlvbiYjMzk7cyBjYWxsZXJzIGFuZCBjYWxsZWVzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgd2lkZXIgYXJjaGl0ZWN0dXJlIG9mIERBTU9OIGFuZCB0aGUga2VybmVsLiBJJiMzOTtkIHRoZW4gZXhhbWluZSB0aGUgYWN0dWFsIGNvZGUgd2l0aCB0aG9zZSBxdWVzdGlvbnMgaW4gbWluZCwgY2hlY2tpbmcgZm9yIGFueSByZWQgZmxhZ3MsIG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzLCBvciBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3N5c2ZzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYz0yMTIyPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zeXNmc19idWlsZF9jdHgoXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMTMwLSAqL1xubW0vZGFtb24vc3lzZnMuYzoyMTMxOnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXG5tbS9kYW1vbi9zeXNmcy5jLTIxMzIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ2OAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKlByaW9yaXRpemluZyBJbnZlc3RpZ2F0aW9uOiBTeXN0ZW0gQ2FsbHMgaW4gREFNT04qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgREFNT04gY29kZS4gVGhlIGltbWVkaWF0ZSBvYnNlcnZhdGlvbiBpcyB0aGF0IGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0JiMzOTtzIGxvY2FsaXplZCBhbmQgcHJvYmFibHkgbm90IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMuIEdpdmVuIHRoYXQgY29udGV4dCwgSSYjMzk7bSBnb2luZyB0byBzaGlmdCBteSBmb2N1cy4gTXkgc3VzcGljaW9uIGlzIHRoYXQgYSBmdW5jdGlvbiBsaWtlIGBkYW1vbl9zeXNmc19oYW5kbGVfY21kYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGlzIHRoZSBtb3JlIHJlbGV2YW50IHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gZGlnIGludG8gZnVydGhlci4gU2luY2UgaXQgaXMgbm9uLXN0YXRpYywgaXQgaXMgbGlrZWx5IHRoZSBmdW5jdGlvbiB0aGF0IGludGVyYWN0cyB3aXRoIHRoZSBzeXNmcyBsYXllci4gVGhhdCBzaG91bGQgYmUgbXkgbmV4dCBwb2ludCBvZiBmb2N1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3N5c2ZzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYz0yMzM0PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdXBkYXRlX3NjaGVtZXNfdHJpZWRfcmVnaW9ucyhcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjMtICovXG5tbS9kYW1vbi9zeXNmcy5jOjIzNjQ6c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2NS1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODQ5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgYGRhbW9uX3N5c2ZzX2NtZF9zdG9yZWAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRhbW9uX3N5c2ZzX2NtZF9zdG9yZWAgZnVuY3Rpb24uIFRoZSBuYW1lIGl0c2VsZiBpcyBwcmV0dHkgY2xlYXI7IGl0JiMzOTtzIHRoZSBzdG9yZSBmdW5jdGlvbiBmb3IgYSBjb21tYW5kIHdpdGhpbiB0aGUgYHN5c2ZzYCBpbnRlcmZhY2UgcmVsYXRlZCB0byBEQU1PTi4gQnV0IHRoYXQmIzM5O3MganVzdCB0aGUgc3VyZmFjZS4gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBXaGF0IHNwZWNpZmljIGNvbW1hbmRzIGlzIGl0IGhhbmRsaW5nPyBJIG5lZWQgdG8gZGlnIGRlZXBlci4gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBpbnRlcmZhY2U/IFdoYXQga2luZCBvZiBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4sIGFuZCB3aGF0IHZhbGlkYXRpb24gaXMgaW4gcGxhY2U/IEkgaG9wZSB0aGVyZSYjMzk7cyBzb21lIGRlY2VudCBlcnJvciBjaGVja2luZy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGEgcG90ZW50aWFsIHBvaW50IG9mIHZ1bG5lcmFiaWxpdHk7IGEgc3BvdCBzb21lb25lIGNvdWxkIGV4cGxvaXQgdG8gbWFuaXB1bGF0ZSBEQU1PTiBpbiB1bmV4cGVjdGVkIHdheXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB0aG9yb3VnaGx5IHRvIGFzc2VzcyBpdHMgcm9idXN0bmVzcy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbGVycyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIERBTU9OIGluZnJhc3RydWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW4gdGhlIGxhcmdlciBgc3lzZnNgIHN0cnVjdHVyZSB3aXRoaW4gdGhlIGtlcm5lbD8gSG93IGRvZXMgaXQgcmVsYXRlIHRvIG90aGVyIERBTU9OIGNvbnRyb2xzPyBUaGlzIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiwgb3IgYW55IHNpbWlsYXIgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtLCBvcGVyYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBzc2l6ZV90IHN0YXRlX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTIzNjQ9c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTI0MDMtXG5tbS9kYW1vbi9zeXNmcy5jOjI0MDQ6c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbm1tL2RhbW9uL3N5c2ZzLmMtMjQwNS1cdFx0Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MzE3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgREFNT04gQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmb2N1cyBvbiB0aGlzIERBTU9OIGltcGxlbWVudGF0aW9uLiBGb3Igbm93LCBJJiMzOTttIGdvaW5nIHRvIGtlZXAgbXkgbWVudGFsIGZvY3VzIG9uIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGFuZCBgZGFtb25fY29tbWl0X2N0eGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGFyZWFzIEkmIzM5O2xsIGJlIGRpZ2dpbmcgaW50by4gTm93LCBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zIHRoZW1zZWx2ZXMsIEkgbmVlZCB0byBlbmFibGUgdGhlc2Ugc2V0dGluZ3M6IGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9MUlVfU09SVGAsIGFuZCBpbXBvcnRhbnRseSwgYFNBTVBMRV9EQU1PTl9NVElFUmAuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgaW1wbGVtZW50ZWQuIEkgc2hvdWxkIGZpcnN0IGNoZWNrIHdoZXRoZXIgaXTigJlzIGRlZmluZWQgYXMgYSBtb2R1bGUgb3IgYSBib29sZWFuLCBzbyBJIGNhbiBwbGFuIG15IG5leHQgc3RlcHMgYWNjb3JkaW5nbHkuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnPTE3PWNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxuLS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0yOS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NzIxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggYSBib29sZWFuLCBhIHNpbXBsZSBgYm9vbGAuIEJ1dCBob2xkIG9uLCB0aGUgY3JpdGljYWwgdmFyaWFibGUgaGVyZSwgYFNBTVBMRV9EQU1PTl9NVElFUmAsIGFwcGVhcnMgdG8gYmUgY29udGluZ2VudCBvbiBib3RoIGBEQU1PTmAgYW5kIGBEQU1PTl9QQUREUmAuIFRoYXQmIzM5O3MgYSBwb3RlbnRpYWwgZGVwZW5kZW5jeSBjaGFpbiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZC4gQmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogdmFyaWFibGVzIG9yIGNvbmRpdGlvbnMgaW1wYWN0aW5nIGBTQU1QTEVfREFNT05fTVRJRVJgLiBHb3R0YSBiZSB0aG9yb3VnaCB3aXRoIHRoZXNlIHRoaW5ncyB0byBhdm9pZCBicmVha2luZyBzb21ldGhpbmcgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1BBRERSXG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgYnVpbGRzIERBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nLlxuICAzNTpcdFxuICAzNjpcdFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxuICAzNzpcdFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXG4gIDM4Olx0XHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcbiAgMzk6XHRcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTA5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IENoZWNrOiBgU0FNUExFU2AqKgoKT2theSwgc28gdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY3kgZ3JhcGggZm9yIGBTQU1QTEVTYC4gSXQmIzM5O3MgYSBrZXkgY29tcG9uZW50LCBzbyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBjdXJyZW50IHN0YXRlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIGRpcmVjdCBhbmQgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLCBlbnN1cmluZyB0aGVyZSBhcmUgbm8gb2J2aW91cyBjb25mbGljdHMgb3Igb3V0ZGF0ZWQgdmVyc2lvbnMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBzaWducyBvZiBicmVha2luZyBjaGFuZ2VzIG9yIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyB0aGF0IG1pZ2h0IGJlIG1hc2tlZCB3aXRoaW4gdGhlIHdpZGVyIGNvZGUgYmFzZS4gVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAsIGFzIGEgcG9vcmx5IG1hbmFnZWQgZGVwZW5kZW5jeSBoZXJlIGNhbiBwcm9wYWdhdGUgaXNzdWVzIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB3aGV0aGVyIHRoZSBwcm9qZWN0JiMzOTtzIGJ1aWxkIHN5c3RlbSBoYXMgcHJvcGVybHkgcmVzb2x2ZWQgaXQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBlbmRpbmcgdXBkYXRlcyBvciBkZXByZWNhdGlvbnMgZmxhZ2dlZC4gVWx0aW1hdGVseSwgdGhlIHN0YWJpbGl0eSBvZiBgU0FNUExFU2AgZGlyZWN0bHkgaW1wYWN0cyB0aGUgcmVsaWFiaWxpdHkgb2YgdGhlIGVudGlyZSBwcm9kdWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0FNUExFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbnNhbXBsZXMvS2NvbmZpZzoyOm1lbnVjb25maWcgU0FNUExFU1xuc2FtcGxlcy9LY29uZmlnLTMtXHRib29sIFwmIzM0O1NhbXBsZSBrZXJuZWwgY29kZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTM5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBTQU1QTEVTYCBlbmFibGVkLCBvdGhlcndpc2UsIGBTQU1QTEVfREFNT05fTVRJRVJgIHdvbiYjMzk7dCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQsIG5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4gTmV4dCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgZm9yIGBEQU1PTl9MUlVfU09SVGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBoYXMgdGhlIHByZXJlcXVpc2l0ZXMgaXQgbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggZmVhdHVyZXMgb3Igc2V0dGluZ3MgbmVlZCB0byBiZSBpbiBwbGFjZS4gSWYgc29tZXRoaW5nIGlzIG1pc3NpbmcsIEkgd2lsbCBoYXZlIHRvIGZpZ3VyZSBvdXQgYSB3b3JrIGFyb3VuZCBvciBkZWNpZGUgdGhhdCB0aGlzIGZlYXR1cmUgaXMgbm90IGlkZWFsIGluIHRoaXMgc2l0dWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMDpcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxuIDEwMTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4gMTAyOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gMTAzOlx0XHRoZWxwXG4gMTA0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xuIDEwNTpcdFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxuIDEwNjpcdFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxuIDEwNzpcdFxuIDEwODpcdGNvbmZpZyBEQU1PTl9TVEFUXG4gMTA5Olx0XHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3ODgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBEQU1PTiBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIGBEQU1PTl9MUlVfU09SVGAgY2xlYXJseSByZWxpZXMgb24gYERBTU9OX1BBRERSYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJlZm9yZSBkaXZpbmcgZGVlcGVyLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCB0aGUgbGF5IG9mIHRoZSBsYW5kLCBhbmQgcmVmcmVzaCBvdXIga25vd2xlZGdlIG9mIHRoZSBiYXNlIGNvbXBvbmVudHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBmb3IgYERBTU9OX1BBRERSYC4gTm8gdXNlIGdvaW5nIGRvd24gdGhlIHJhYmJpdCBob2xlIG9mIHRoZSBMUlUgc29ydCBpZiB0aGUgZm91bmRhdGlvbiBpcyB1bnN0YWJsZS4gTGV0JiMzOTtzIHRyYWNlIGl0IGJhY2sgYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGxpbmVzIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQ3Olx0Y29uZmlnIERBTU9OX1BBRERSXG4gIDQ4Olx0XHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA1MDpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDUxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDUyOlx0XHRoZWxwXG4gIDUzOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNTQ6XHRcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXG4gIDU1Olx0XG4gIDU2Olx0Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxMzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqRGVwZW5kZW5jaWVzIGFuZCBTeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgREFNT05fUEFERFJgIGlzIGluaGVyZW50bHkgdGllZCB0byBib3RoIGBEQU1PTmAgKHRoZSBEeW5hbWljIEFjY2VzcyBNb25pdG9yaW5nIGFuZCBPcHRpbWl6YXRpb24gb2YgTWVtb3J5IHBhZ2VzKSBhbmQgdGhlIGBNTVVgIChNZW1vcnkgTWFuYWdlbWVudCBVbml0KS4gVGhhdCYjMzk7cyBub3Qgc3VycHJpc2luZzsgcGFnZS1sZXZlbCBhY2Nlc3MgbW9uaXRvcmluZywgYXMgYERBTU9OYCBkb2VzLCBuZWVkcyB0byB1bmRlcnN0YW5kIHBoeXNpY2FsIGFkZHJlc3NlcyBhbmQgaG93IHRoZSBNTVUgdHJhbnNsYXRlcyB0aG9zZSB0byB2aXJ0dWFsIG9uZXMuIEl04oCZcyBwcmV0dHkgZnVuZGFtZW50YWwuCgpOb3csIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgc2VlIHdoYXQgdGhlIHN0b3J5IGlzIHdpdGggYERBTU9OX1NZU0ZTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBTeXNGUyBpbnRlcmZhY2UsIGlmIGVuYWJsZWQsIGludGVycGxheXMgd2l0aCB0aGVzZSBjb3JlIGNvbXBvbmVudHMuIEl0JiMzOTtzIG9mdGVuIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSwgc28ga25vd2luZyBob3cgaXQgY29ubmVjdHMgdG8gdGhlIGludGVybmFscyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBjYW4gYmUgY29udHJvbGxlZCwgbW9uaXRvcmVkLCBhbmQgdHdlYWtlZC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU2MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyB0aGUgREFNT05fU1lTRlMgRGVwZW5kZW5jeSBUcmVlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgREFNT05fU1lTRlNgIGlzIGJ1aWx0IG9uIGJvdGggYERBTU9OYCBhbmQgYFNZU0ZTYC4gTm90IHVuZXhwZWN0ZWQsIHJlYWxseS4gU2VlbXMgbG9naWNhbCB0aGF0IGEgc3lzZnMgaW50ZXJmYWNlIGZvciBhIG1lbW9yeSBtb25pdG9yaW5nIHN5c3RlbSB3b3VsZCBuZWVkIGJvdGggdGhlIGNvcmUgbW9uaXRvcmluZyBtZWNoYW5pc20gKGBEQU1PTmApIGFuZCB0aGUga2VybmVsJiMzOTtzIGZpbGUgc3lzdGVtIGludGVyZmFjZSAoYFNZU0ZTYCkuIE5vdywgdG8gYmUgcmlnb3JvdXMsIEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBvZiBgREFNT05gIGl0c2VsZi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgbG9va3MgbGlrZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsYXRpb25zaGlwcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA1Olx0Y29uZmlnIERBTU9OXG4gICA2Olx0XHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGJ1aWxkcyBhIGZyYW1ld29yayB0aGF0IGFsbG93cyBrZXJuZWwgc3Vic3lzdGVtcyB0byBtb25pdG9yXG4gICA5Olx0XHQgIGFjY2VzcyBmcmVxdWVuY3kgb2YgZWFjaCBtZW1vcnkgcmVnaW9uLiBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWZ1bFxuICAxMDpcdFx0ICBmb3IgcGVyZm9ybWFuY2UtY2VudHJpYyBEUkFNIGxldmVsIG1lbW9yeSBtYW5hZ2VtZW50LlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcbiAgMTM6XHRcdCAgbW9yZSBpbmZvcm1hdGlvbi5cbiAgMTQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5MTEKCQkJCQkJCW91dHB1dDogMTkwCgkJCQkJCQl0aG91Z2h0czogMjg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBEQU1PTiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYWxsIGFib3V0IGhhbmRsaW5nIGEgcG90ZW50aWFsIGRpdmlzaW9uLWJ5LXplcm8gc2NlbmFyaW8gd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIFRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCBhIGNoZWNrIGluIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAuIFNwZWNpZmljYWxseSwgaXQgbWFrZXMgc3VyZSBgc3JjLSZndDt0YXJnZXRfdmFsdWVgIGlzbiYjMzk7dCB6ZXJvOyBpZiBpdCBpcywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIHByZXZlbnRzIHRoYXQgemVybyBmcm9tIGNhdXNpbmcgcHJvYmxlbXMgaW4gYGRhbW9zX3F1b3RhX3Njb3JlYCwgd2hpY2ggaXMgYSBjbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyB0ZWNobmlxdWUuCgpUaGUgZmFjdCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGV4cG9zZWQgdGhyb3VnaCBzeXNmcyBhbmQgaW1wYWN0IGZ1bmN0aW9ucyBsaWtlIGBkYW1vbl9scnVfc29ydGAgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJgIG1lYW5zIHRoaXMgaXNuJiMzOTt0IGp1c3QgYW4gaW50ZXJuYWwgZGV0YWlsOyBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZS4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGJ1ZyBwcmV2ZW50aW9uIG1lYXN1cmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlJiMzOTtkIHdhbnQgdG8gZnV6ei4gV2UgZG9uJiMzOTt0IHdhbnQgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGZyb20gc3VjaCBhIHBhdGNoLgoKTXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IGZvY3VzZXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGFuZCBgZGFtb25fY29tbWl0X2N0eGAuIEkgbmVlZCB0byBjb25maXJtIHRoZXNlIGFyZW4mIzM5O3Qgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggd291bGQgbGltaXQgdGhlaXIgc2NvcGUuIFllcCwgYSBxdWljayBsb29rIGNvbmZpcm1zIGJvdGggYXJlIG5vbi1zdGF0aWM6IGBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylgIGFuZCBgaW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpYC4gVGhhdCYjMzk7cyBnb29kOyBpdCBjb25maXJtcyB0aGF0IHRoZXkgaGF2ZSB0aGUgcG90ZW50aWFsIHRvIGJlIGNhbGxlZCBmcm9tIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUga2VybmVsLCBzbyB0aGlzIGNoYW5nZSYjMzk7cyBpbXBhY3QgaXMgd2lkZXIuCgpBbHNvLCBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSByZWxldmFudCBjb25maWdzOiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUEFERFJgLCBgREFNT05fTFJVX1NPUlRgLCBgU0FNUExFU2AsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYCBmb3IgdGVzdGluZy4KCkFscmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLiBUaGUgcmVzdWx0cyB3aWxsIGJlIHNldCBhcyBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVTJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9zX2NvbW1pdF9xdW90YV9nb2FscyYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBidWcgaW4gYGRhbW9zX3F1b3RhX3Njb3JlYCBieSByZXR1cm5pbmcgYC1FSU5WQUxgIGZyb20gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpZiBgc3JjLVx1MDAzZXRhcmdldF92YWx1ZWAgaXMgMC4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBhcyB3ZWxsIGFzIHRocm91Z2ggdGhlIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlcy4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsIGFuZCBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYywgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFUyYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gYnVnIGluIGBkYW1vc19xdW90YV9zY29yZWAgYnkgcmV0dXJuaW5nIGAtRUlOVkFMYCBmcm9tIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgaWYgYHNyYy1cdTAwM2V0YXJnZXRfdmFsdWVgIGlzIDAuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgYXMgd2VsbCBhcyB0aHJvdWdoIHRoZSBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZXMuIFRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbCBhbmQgcHJldmVudHMgYSBrZXJuZWwgcGFuaWMsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDU6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgdGFyZ2V0X3ZhbHVlYCBpbiBgZGFtb3NfcXVvdGFfZ29hbGAgc3RydWN0dXJlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gSXQgY2VudHJhbGl6ZXMgdGhlIGNoZWNrIGZvciB6ZXJvIGB0YXJnZXRfdmFsdWVgIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVtb3ZlcyByZWR1bmRhbnQgY2hlY2tzIGZyb20gb3RoZXIgcGxhY2VzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGZpZWxkcyBpbnRyb2R1Y2VkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMsIG1lbW9yeSBsZWFrcywgb3IgY3Jhc2hlcyAobGlrZSBkaXZpc2lvbiBieSB6ZXJvKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBLQVNBTiwgb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGIzZjJjODhmNzkzNDNhMGI5N2RkOWQ4ODI0NWZhMzY4MmRmNDVjZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA1OjU3OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDY0NGRhZjVhMTY1NjAuLmMyMDRmNjkwN2M1MTUgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTExMzYsMTUgJiM0MzsxMTM2LDE4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKAogCX0KIH0KIAotc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoCiYjNDM7c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbCgKIAkJc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYykKIHsKJiM0MzsJaWYgKCFzcmMtJmd0O3RhcmdldF92YWx1ZSkKJiM0MzsJCXJldHVybiAgLUVJTlZBTDsKIAlkc3QtJmd0O21ldHJpYyA9IHNyYy0mZ3Q7bWV0cmljOwogCWRzdC0mZ3Q7dGFyZ2V0X3ZhbHVlID0gc3JjLSZndDt0YXJnZXRfdmFsdWU7CiAJaWYgKGRzdC0mZ3Q7bWV0cmljID09IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQpCiAJCWRzdC0mZ3Q7Y3VycmVudF92YWx1ZSA9IHNyYy0mZ3Q7Y3VycmVudF92YWx1ZTsKIAkvKiBrZWVwIGxhc3RfcHNpX3RvdGFsIGFzIGlzLCBzaW5jZSBpdCB3aWxsIGJlIHVwZGF0ZWQgaW4gbmV4dCBjeWNsZSAqLwogCWRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKGRzdCwgc3JjKTsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIC8qKgpAQCAtMTE2MiwxNCAmIzQzOzExNjUsMTcgQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoCiBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYykKIHsKIAlzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0X2dvYWwsICpuZXh0LCAqc3JjX2dvYWwsICpuZXdfZ29hbDsKLQlpbnQgaSA9IDAsIGogPSAwOwomIzQzOwlpbnQgaSA9IDAsIGogPSAwLCBlcnI7CiAKIAlkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZHN0X2dvYWwsIG5leHQsIGRzdCkgewogCQlzcmNfZ29hbCA9IGRhbW9zX250aF9xdW90YV9nb2FsKGkmIzQzOyYjNDM7LCBzcmMpOwotCQlpZiAoc3JjX2dvYWwpCi0JCQlkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpOwotCQllbHNlCiYjNDM7CQlpZiAoc3JjX2dvYWwpIHsKJiM0MzsJCQllcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpOwomIzQzOwkJCWlmIChlcnIpCiYjNDM7CQkJCXJldHVybiBlcnI7CiYjNDM7CQl9IGVsc2UgewogCQkJZGFtb3NfZGVzdHJveV9xdW90YV9nb2FsKGRzdF9nb2FsKTsKJiM0MzsJCX0KIAl9CiAJZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHsKIAkJaWYgKGomIzQzOyYjNDM7ICZsdDsgaSkKQEAgLTExNzgsNyAmIzQzOzExODQsMTEgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpCiAJCQkJc3JjX2dvYWwtJmd0O21ldHJpYywgc3JjX2dvYWwtJmd0O3RhcmdldF92YWx1ZSk7CiAJCWlmICghbmV3X2dvYWwpCiAJCQlyZXR1cm4gLUVOT01FTTsKLQkJZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTsKJiM0MzsJCWVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7CiYjNDM7CQlpZiAoZXJyKSB7CiYjNDM7CQkJZGFtb3NfZnJlZV9xdW90YV9nb2FsKG5ld19nb2FsKTsKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwkJfQogCQlkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTsKIAl9CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuYwppbmRleCBiZDg0NzgyOWE5OTA3Li43ZGY0NWY5YTBiM2FlIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmMKQEAgLTIzMyw4ICYjNDM7MjMzLDYgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLAogCiAJaWYgKCFhY3RpdmVfbWVtX2JwKQogCQlyZXR1cm4gMDsKLQlpZiAoMTAwMDAgJmx0OyBhY3RpdmVfbWVtX2JwKQotCQlyZXR1cm4gLUVJTlZBTDsKIAlnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7CiAJaWYgKCFnb2FsKQogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuYwppbmRleCBkMTEyM2ViYmZhYjkwLi5hYzljMjRiOTJlYWQ4IDEwMDY0NAotLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jCkBAIC0xNTYsOSAmIzQzOzE1Niw2IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSkKIAlpZiAoIXNjaGVtZSkKIAkJZ290byBmcmVlX291dDsKIAlkYW1vbl9zZXRfc2NoZW1lcyhjdHgsICZhbXA7c2NoZW1lLCAxKTsKLQkvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovCi0JaWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApCi0JCWdvdG8gZnJlZV9vdXQ7CiAJcXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKAogCQkJcHJvbW90ZSA/IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlAgOgogCQkJREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzcKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiB0aWdodGVuaW5nIHVwIHNvbWUgdmFsaWRhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcgcmVsYXRlZCB0byBob3cgYHRhcmdldF92YWx1ZWAgaXMgdXNlZCBpbiB0aGUgREFNT04gbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZHJlc3NpbmcgcG90ZW50aWFsIGRpdmlzaW9uLWJ5LXplcm8gaXNzdWVzLCBlaXRoZXIgZGlyZWN0bHkgaW4gYGRhbW9zX3F1b3RhX3N0b3JlKClgIG9yIG90aGVyIGZ1bmN0aW9ucyB3aGVyZSBgdGFyZ2V0X3ZhbHVlYCBpcyB1c2VkLCBvciBjb25zb2xpZGF0aW5nIHRoZSBjaGVjayBpbiBvbmUgcGxhY2UuCgpJIHNlZSB0aGUgY29yZSBjaGFuZ2UgaXMgaW4gYG1tL2RhbW9uL2NvcmUuY2Agd2hlcmUgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBub3cgZXhwbGljaXRseSByZXR1cm5zIGFuIGVycm9yIGlmIGBzcmMtJmd0O3RhcmdldF92YWx1ZWAgaXMgemVyby4gVGhlIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGZ1bmN0aW9uIGlzIGFsc28gYmVpbmcgbW9kaWZpZWQgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGlzIG5ldyBlcnJvci4gSXQmIzM5O3MgYWxzbyByZW1vdmluZyBzb21lIHJlZHVuZGFudCBjaGVja3MgaW4gYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2Agd2l0aGluIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4KCk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgY2hhbmdlcywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggbm93IGFkZHMgYSBjaGVjayBmb3IgYSB6ZXJvIGB0YXJnZXRfdmFsdWVgIHVzaW5nIGBpZiAoIXNyYy0mZ3Q7dGFyZ2V0X3ZhbHVlKSByZXR1cm4gLUVJTlZBTDtgIGluIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAuIEJ1dCBhZnRlciBhIGNsb3NlIHJlYWQsIEkgc2VlIG5vIG5ldyBhbGxvY2F0aW9ucyBvciBmaWVsZHMgYmVpbmcgYWRkZWQuIFRoZXNlIGFyZSBwdXJlbHkgbG9naWNhbCBjaGFuZ2VzIGFuZCBlcnJvci1oYW5kbGluZyBtb2RpZmljYXRpb25zLiBTbywgYWZ0ZXIgYSBxdWljayBtZW50YWwgdHJhY2UgdGhyb3VnaCB0aGUgZXhlY3V0aW9uIHBhdGhzIGFmZmVjdGVkLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCBhbmQgZG9uJiMzOTt0IGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBtb2RpZmljYXRpb25zIC0gaW5wdXQgdmFsaWRhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcsIGFuZCB0aGUgbGFjayBvZiBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBvciB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZSwgSSYjMzk7bSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBmYWxzZS4gVGhlIHBhdGNoIGlzIHNvdW5kIGluIHRoaXMgcmVnYXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgZm9yIGB0YXJnZXRfdmFsdWVgIGluIGBkYW1vc19xdW90YV9nb2FsYCBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBJdCBjZW50cmFsaXplcyB0aGUgY2hlY2sgZm9yIHplcm8gYHRhcmdldF92YWx1ZWAgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCByZW1vdmVzIHJlZHVuZGFudCBjaGVja3MgZnJvbSBvdGhlciBwbGFjZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZmllbGRzIGludHJvZHVjZWQgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycywgbWVtb3J5IGxlYWtzLCBvciBjcmFzaGVzIChsaWtlIGRpdmlzaW9uIGJ5IHplcm8pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcsIEtBU0FOLCBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgdGFyZ2V0X3ZhbHVlYCBpbiBgZGFtb3NfcXVvdGFfZ29hbGAgc3RydWN0dXJlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gSXQgY2VudHJhbGl6ZXMgdGhlIGNoZWNrIGZvciB6ZXJvIGB0YXJnZXRfdmFsdWVgIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVtb3ZlcyByZWR1bmRhbnQgY2hlY2tzIGZyb20gb3RoZXIgcGxhY2VzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGZpZWxkcyBpbnRyb2R1Y2VkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMsIG1lbW9yeSBsZWFrcywgb3IgY3Jhc2hlcyAobGlrZSBkaXZpc2lvbiBieSB6ZXJvKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBLQVNBTiwgb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MDUuMjAxNjA0ODM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1NDA1ODc4NTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgdmFsaWRhdGlvbiBsb2dpYyBmb3IgYHRhcmdldF92YWx1ZWAgaW4gYGRhbW9zX3F1b3RhX2dvYWxgIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIEl0IGNlbnRyYWxpemVzIHRoZSBjaGVjayBmb3IgemVybyBgdGFyZ2V0X3ZhbHVlYCB0byBwcmV2ZW50IGRpdmlzaW9uIGJ5IHplcm8gb3IgaW52YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIHJlbW92ZXMgcmVkdW5kYW50IGNoZWNrcyBmcm9tIG90aGVyIHBsYWNlcy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBmaWVsZHMgaW50cm9kdWNlZCB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWMgZXJyb3JzLCBtZW1vcnkgbGVha3MsIG9yIGNyYXNoZXMgKGxpa2UgZGl2aXNpb24gYnkgemVybyksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdGluZywgS0FTQU4sIG9yIG90aGVyIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkaXZpc2lvbiBieSB6ZXJvIGJ1ZyBpbiBgZGFtb3NfcXVvdGFfc2NvcmVgIGJ5IHJldHVybmluZyBgLUVJTlZBTGAgZnJvbSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgIGlmIGBzcmMtXFx1MDAzZXRhcmdldF92YWx1ZWAgaXMgMC4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBhcyB3ZWxsIGFzIHRocm91Z2ggdGhlIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlcy4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsIGFuZCBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYywgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MDUuMjAxNjEwMTM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjc3MDczNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YjNmMmM4OGY3OTM0M2EwYjk3ZGQ5ZDg4MjQ1ZmEzNjgyZGY0NWNlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDA1OjU3OjA0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xcbmluZGV4IDY0NGRhZjVhMTY1NjAuLmMyMDRmNjkwN2M1MTUgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXFxuKysrIGIvbW0vZGFtb24vY29yZS5jXFxuQEAgLTExMzYsMTUgKzExMzYsMTggQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxuIFxcdH1cXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxuK3N0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxuIFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXFxuIHtcXG4rXFx0aWYgKCFzcmMtXFx1MDAzZXRhcmdldF92YWx1ZSlcXG4rXFx0XFx0cmV0dXJuICAtRUlOVkFMO1xcbiBcXHRkc3QtXFx1MDAzZW1ldHJpYyA9IHNyYy1cXHUwMDNlbWV0cmljO1xcbiBcXHRkc3QtXFx1MDAzZXRhcmdldF92YWx1ZSA9IHNyYy1cXHUwMDNldGFyZ2V0X3ZhbHVlO1xcbiBcXHRpZiAoZHN0LVxcdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVClcXG4gXFx0XFx0ZHN0LVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gc3JjLVxcdTAwM2VjdXJyZW50X3ZhbHVlO1xcbiBcXHQvKiBrZWVwIGxhc3RfcHNpX3RvdGFsIGFzIGlzLCBzaW5jZSBpdCB3aWxsIGJlIHVwZGF0ZWQgaW4gbmV4dCBjeWNsZSAqL1xcbiBcXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihkc3QsIHNyYyk7XFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtMTE2MiwxNCArMTE2NSwxNyBAQCBzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcXG4gaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxuIHtcXG4gXFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7XFxuLVxcdGludCBpID0gMCwgaiA9IDA7XFxuK1xcdGludCBpID0gMCwgaiA9IDAsIGVycjtcXG4gXFxuIFxcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShkc3RfZ29hbCwgbmV4dCwgZHN0KSB7XFxuIFxcdFxcdHNyY19nb2FsID0gZGFtb3NfbnRoX3F1b3RhX2dvYWwoaSsrLCBzcmMpO1xcbi1cXHRcXHRpZiAoc3JjX2dvYWwpXFxuLVxcdFxcdFxcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XFxuLVxcdFxcdGVsc2VcXG4rXFx0XFx0aWYgKHNyY19nb2FsKSB7XFxuK1xcdFxcdFxcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XFxuK1xcdFxcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChkc3RfZ29hbCk7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoc3JjX2dvYWwsIG5leHQsIHNyYykge1xcbiBcXHRcXHRpZiAoaisrIFxcdTAwM2MgaSlcXG5AQCAtMTE3OCw3ICsxMTg0LDExIEBAIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxcbiBcXHRcXHRcXHRcXHRzcmNfZ29hbC1cXHUwMDNlbWV0cmljLCBzcmNfZ29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKTtcXG4gXFx0XFx0aWYgKCFuZXdfZ29hbClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLVxcdFxcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XFxuK1xcdFxcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0ZGFtb3NfZnJlZV9xdW90YV9nb2FsKG5ld19nb2FsKTtcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0fVxcbiBcXHRcXHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcXG5pbmRleCBiZDg0NzgyOWE5OTA3Li43ZGY0NWY5YTBiM2FlIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXFxuQEAgLTIzMyw4ICsyMzMsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXFxuIFxcbiBcXHRpZiAoIWFjdGl2ZV9tZW1fYnApXFxuIFxcdFxcdHJldHVybiAwO1xcbi1cXHRpZiAoMTAwMDAgXFx1MDAzYyBhY3RpdmVfbWVtX2JwKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApO1xcbiBcXHRpZiAoIWdvYWwpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcXG5pbmRleCBkMTEyM2ViYmZhYjkwLi5hYzljMjRiOTJlYWQ4IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbkBAIC0xNTYsOSArMTU2LDYgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxcbiBcXHRpZiAoIXNjaGVtZSlcXG4gXFx0XFx0Z290byBmcmVlX291dDtcXG4gXFx0ZGFtb25fc2V0X3NjaGVtZXMoY3R4LCBcXHUwMDI2c2NoZW1lLCAxKTtcXG4tXFx0LyogemVybyB0YXJnZXQgdmFsdWUgY2F1c2VzIGRpdmlzaW9uIGJ5IHplcm8gaW4gZGFtb3NfcXVvdGFfc3RvcmUoKSAqL1xcbi1cXHRpZiAoIW5vZGUwX21lbV91c2VkX2JwIHx8ICFub2RlMF9tZW1fZnJlZV9icClcXG4tXFx0XFx0Z290byBmcmVlX291dDtcXG4gXFx0cXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxcbiBcXHRcXHRcXHRwcm9tb3RlID8gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCA6XFxuIFxcdFxcdFxcdERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjA1LjYzMDUxMzI2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1NzE1NDIyOTYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9MUlVfU09SVFwiLFxuICAgIFwiU0FNUExFU1wiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkaXZpc2lvbiBieSB6ZXJvIGJ1ZyBpbiBgZGFtb3NfcXVvdGFfc2NvcmVgIGJ5IHJldHVybmluZyBgLUVJTlZBTGAgZnJvbSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgIGlmIGBzcmMtXFx1MDAzZXRhcmdldF92YWx1ZWAgaXMgMC4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLCBhcyB3ZWxsIGFzIHRocm91Z2ggdGhlIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlcy4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsIGFuZCBwcmV2ZW50cyBhIGtlcm5lbCBwYW5pYywgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGIzZjJjODhmNzkzNDNhMGI5N2RkOWQ4ODI0NWZhMzY4MmRmNDVjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDA1OjU3OjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA2NDRkYWY1YTE2NTYwLi5jMjA0ZjY5MDdjNTE1IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xMTM2LDE1ICsxMTM2LDE4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbitzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxuIFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxuIHtcbitcdGlmICghc3JjLVx1MDAzZXRhcmdldF92YWx1ZSlcbitcdFx0cmV0dXJuICAtRUlOVkFMO1xuIFx0ZHN0LVx1MDAzZW1ldHJpYyA9IHNyYy1cdTAwM2VtZXRyaWM7XG4gXHRkc3QtXHUwMDNldGFyZ2V0X3ZhbHVlID0gc3JjLVx1MDAzZXRhcmdldF92YWx1ZTtcbiBcdGlmIChkc3QtXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQpXG4gXHRcdGRzdC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gc3JjLVx1MDAzZWN1cnJlbnRfdmFsdWU7XG4gXHQvKiBrZWVwIGxhc3RfcHNpX3RvdGFsIGFzIGlzLCBzaW5jZSBpdCB3aWxsIGJlIHVwZGF0ZWQgaW4gbmV4dCBjeWNsZSAqL1xuIFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIC8qKlxuQEAgLTExNjIsMTQgKzExNjUsMTcgQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4gaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4ge1xuIFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7XG4tXHRpbnQgaSA9IDAsIGogPSAwO1xuK1x0aW50IGkgPSAwLCBqID0gMCwgZXJyO1xuIFxuIFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGRzdF9nb2FsLCBuZXh0LCBkc3QpIHtcbiBcdFx0c3JjX2dvYWwgPSBkYW1vc19udGhfcXVvdGFfZ29hbChpKyssIHNyYyk7XG4tXHRcdGlmIChzcmNfZ29hbClcbi1cdFx0XHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xuLVx0XHRlbHNlXG4rXHRcdGlmIChzcmNfZ29hbCkge1xuK1x0XHRcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiBlcnI7XG4rXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZGFtb3NfZGVzdHJveV9xdW90YV9nb2FsKGRzdF9nb2FsKTtcbitcdFx0fVxuIFx0fVxuIFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHtcbiBcdFx0aWYgKGorKyBcdTAwM2MgaSlcbkBAIC0xMTc4LDcgKzExODQsMTEgQEAgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG4gXHRcdFx0XHRzcmNfZ29hbC1cdTAwM2VtZXRyaWMsIHNyY19nb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG4gXHRcdGlmICghbmV3X2dvYWwpXG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG4rXHRcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRkYW1vc19mcmVlX3F1b3RhX2dvYWwobmV3X2dvYWwpO1xuK1x0XHRcdHJldHVybiBlcnI7XG4rXHRcdH1cbiBcdFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoZHN0LCBuZXdfZ29hbCk7XG4gXHR9XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuaW5kZXggYmQ4NDc4MjlhOTkwNy4uN2RmNDVmOWEwYjNhZSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcbisrKyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbkBAIC0yMzMsOCArMjMzLDYgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxuIFxuIFx0aWYgKCFhY3RpdmVfbWVtX2JwKVxuIFx0XHRyZXR1cm4gMDtcbi1cdGlmICgxMDAwMCBcdTAwM2MgYWN0aXZlX21lbV9icClcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7XG4gXHRpZiAoIWdvYWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZDExMjNlYmJmYWI5MC4uYWM5YzI0YjkyZWFkOCAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuKysrIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5AQCAtMTU2LDkgKzE1Niw2IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcbiBcdGlmICghc2NoZW1lKVxuIFx0XHRnb3RvIGZyZWVfb3V0O1xuIFx0ZGFtb25fc2V0X3NjaGVtZXMoY3R4LCBcdTAwMjZzY2hlbWUsIDEpO1xuLVx0LyogemVybyB0YXJnZXQgdmFsdWUgY2F1c2VzIGRpdmlzaW9uIGJ5IHplcm8gaW4gZGFtb3NfcXVvdGFfc3RvcmUoKSAqL1xuLVx0aWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApXG4tXHRcdGdvdG8gZnJlZV9vdXQ7XG4gXHRxdW90YV9nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoXG4gXHRcdFx0cHJvbW90ZSA/IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlAgOlxuIFx0XHRcdERBTU9TX1FVT1RBX05PREVfTUVNX0ZSRUVfQlAsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzowNS42MzA1MTYxMDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA2MzU5MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIGFmZmVjdGluZyBEQU1PTidzIGNvcmUgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRoZSBxdW90YSBtYW5hZ2VtZW50IGFuZCBzYW1wbGluZyB3aXRoaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHRoZSBMUlUgc29ydGluZyBpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AsIGFuZCB0aGUgbXVsdGktdGllciBzYW1wbGluZyBleGFtcGxlIGluIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBMb29rcyBsaWtlIGl0J3MgYSByZWxhdGl2ZWx5IGZvY3VzZWQgY2hhbmdlLCBhbmQgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBhbHRlcmF0aW9ucy5cblxuRmlyc3QsIHRoZSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgIGZ1bmN0aW9uIGlzIGJlaW5nIG1vZGlmaWVkIHRvIHJldHVybiBhbiBlcnJvciB3aGVuIGBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlOyBhIHplcm8gdGFyZ2V0IHByZXN1bWFibHkgbWVhbnMgbm8gcXVvdGEsIGFuZCBleHBsaWNpdGx5IHJldHVybmluZyBhbiBlcnJvciBpcyBhIGNsZWFyZXIgd2F5IHRvIHNpZ25hbCB0aGF0IHRoaXMgc2hvdWxkbid0IGJlIGFsbG93ZWQuIFRoYXQgZXJyb3IgdGhlbiBnZXRzIHByb3BhZ2F0ZWQgdXAgdG8gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AuIEdvb2QsIG1ha2VzIGZvciBjbGVhbmVyIGVycm9yIGhhbmRsaW5nLlxuXG5OZXh0LCB0aGUgcGF0Y2ggcmVtb3ZlcyBhIHNlZW1pbmdseSBhcmJpdHJhcnkgY2hlY2ssIGBpZiAoMTAwMDAgXHUwMDNjIGFjdGl2ZV9tZW1fYnApYCwgd2l0aGluIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY2hlY2sgd2FzIGRvaW5nLiBXYXMgaXQgYSBzYWZlZ3VhcmQgYWdhaW5zdCBhbiBleHRyZW1lIHZhbHVlLCBhIHR1bmluZyBwYXJhbWV0ZXIsIG9yIGFuIG92ZXJzaWdodD8gTXkgZmlyc3Qgc3RlcCBpcyBnb2luZyB0byBiZSB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB3aHkgdGhpcyBjaGVjayB3YXMgZGVlbWVkIHVubmVjZXNzYXJ5LlxuXG5GaW5hbGx5LCB0aGV5J3ZlIHJlbW92ZWQgYGlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKWAgd2l0aGluIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YC4gVGhpcyBpcyBhbHNvIGludHJpZ3VpbmcuIFRoaXMgaW1wbGllcyBhIHJlbGF4YXRpb24gb2YgYSBjb25kaXRpb24gdXNlZCBpbiB0aGUgTVRpZXIgc2FtcGxpbmcuIElzIHRoaXMgYSBzaW1wbGlmaWNhdGlvbiwgYSBidWcgZml4LCBvciBhIGNoYW5nZSBpbiBob3cgdGhlIHNhbXBsaW5nIGlzIGludGVuZGVkIHRvIGJlaGF2ZT8gSXQgcmVxdWlyZXMgYSBjbG9zZXIgbG9vayBhdCB0aGUgc2FtcGxpbmcgbG9naWMgYW5kIGhvdyB0aGlzIGNvbmRpdGlvbiB3YXMgb3JpZ2luYWxseSB1c2VkLlxuXG5VbHRpbWF0ZWx5LCBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjYXJlZnVsbHkgY29uc2lkZXIgd2hhdCBEQU1PTiBjb25maWcgb3B0aW9ucyBleGlzdCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbid0IGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuIEknbGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGFuZ2UgaXMgaW4gbGluZSB3aXRoIHRoZSBkZXNpZ24gb2YgREFNT04uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoxMC40MzY4Nzk2NDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NDAwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoxMC40ODQzMjYwNDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQxNzA0NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXMgb2YgYERBTU9OX0xSVV9TT1JUYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYERBTU9OX0xSVV9TT1JUYCByZWxpZXMgb24uIFRoYXQncyBteSBzdGFydGluZyBwb2ludC4gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIGV2ZW4gY29uc2lkZXIgbW9kaWZ5aW5nIGl0LCBvcHRpbWl6aW5nIGl0LCBvciBpbnRlZ3JhdGluZyBpdCB3aXRoIHNvbWV0aGluZyBlbHNlLiBJdCdzIHRoZSBmaXJzdCBzdGVwIGluIGFueSBkZWJ1Z2dpbmcgb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBpZGVudGlmaWVyIGFuZCBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIGlucHV0IGFuZCBvdXRwdXQgaW50ZXJhY3Rpb25zLiBUaGlzIGxpa2VseSBpbnZvbHZlcyBkZWx2aW5nIGludG8gdGhlIGNvZGUgYW5kIGV4YW1pbmluZyBpdHMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscy4gS25vd2luZyB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZnVuY3Rpb25zIGl0IGxldmVyYWdlcyBpcyBwYXJhbW91bnQuIFBlcmhhcHMgaXQncyBhIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlLCBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29tcG9uZW50IG9yIGV2ZW4gYW5vdGhlciBwaWVjZSBvZiBjb2RlLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MTMuNTI2MDMyOTYxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODcwMzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTl9MUlVfU09SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9ODg9Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG4tLVxcbm1tL2RhbW9uL0tjb25maWctOTktXFxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MTMuNTc0OTA4ODA5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NDEyNTc0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byBEQU1PTl9MUlVfU09SVCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgREFNT05fTFJVX1NPUlRgLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSwgc3BlY2lmaWNhbGx5IGBtbS9kYW1vbi9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGRlcGVuZGVuY3kgbG9naWMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgREFNT04gYXJlIGRlZmluZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBgREFNT05fTFJVX1NPUlRgIGFuZCBvdGhlciBjb25maWd1cmF0aW9uIHN5bWJvbHMgbGFpZCBvdXQgY2xlYXJseSBpbiB0aGF0IGZpbGUuIEknbSBnb2luZyB0byBzY2FuIHRocm91Z2ggaXQsIGxvb2tpbmcgZm9yIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMsIGBkZXBlbmRzIG9uYCBjbGF1c2VzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGluZm9ybWF0aW9uIHRoYXQgcmV2ZWFscyB3aGljaCBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGBEQU1PTl9MUlVfU09SVGAgdG8gZXZlbiBiZSBjb25zaWRlcmVkIGEgdmlhYmxlIG9wdGlvbi4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgYW5hbHl6aW5nIHRoZSBEQU1PTiBjb25maWd1cmF0aW9uLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGhpZXJhcmNoeS4gVGhpcyB3aWxsIGd1aWRlIG15IHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoxNi44MzkwMzgwMTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHRjb25maWcgREFNT05fTFJVX1NPUlRcXG4gMTAxOlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuIDEwMjpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuIDEwMzpcXHRcXHRoZWxwXFxuIDEwNDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xcbiAxMDU6XFx0XFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxcbiAxMDY6XFx0XFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxcbiAxMDc6XFx0XFxuIDEwODpcXHRjb25maWcgREFNT05fU1RBVFxcbiAxMDk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVxcXCJcXG4gMTEwOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gMTExOlxcdFxcdGhlbHBcXG4gMTEyOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIGFjY2VzcyBtb25pdG9yaW5nIHN0YXRpc3RpY3Mgc3Vic3lzdGVtLlxcbiAxMTM6XFx0XFx0ICBJdCBydW5zIERBTU9OIGFuZCBleHBvc2UgYWNjZXNzIG1vbml0b3JpbmcgcmVzdWx0cyBpbiBzaW1wbGUgc3RhdFxcbiAxMTQ6XFx0XFx0ICBtZXRyaWNzLlxcbiAxMTU6XFx0XFxuIDExNjpcXHRjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG4gMTE3OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcXFwiXFxuIDExODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1NUQVRcXG4gMTE5OlxcdFxcdGRlZmF1bHQgREFNT05fU1RBVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoxNi44MzkxMTczOTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYwNTE0OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBJbnRlcmRlcGVuZGVuY2llcyBpbiBEQU1PTioqXG5cbkFscmlnaHQsIHNvIHRoZSBgREFNT05fTFJVX1NPUlRgIGZ1bmN0aW9uLCBhcyBJIHN1c3BlY3RlZCwgaXMgcmVsaWFudCBvbiBgREFNT05fUEFERFJgLiBHaXZlbiBteSBleHBlcmllbmNlIHdpdGggREFNT04sIEkga25vdyBob3cgY3JpdGljYWwgdGhlc2UgbG93LWxldmVsIGFkZHJlc3Mgc3BhY2VzIGFyZS4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhhdCBkZXBlbmRlbmN5LiBUaGVyZWZvcmUsIEkgbmVlZCB0byBpbW1lZGlhdGVseSBzaGlmdCBteSBmb2N1cyB0byBkaXNzZWN0aW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERBTU9OX1BBRERSYCBpdHNlbGYuIFdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlPyBXaGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIHJlbHlpbmcgb24gKml0Kj8gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byBuYWlsIGRvd24gdG8gZW5zdXJlIHN0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeSB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbSwgc28gdW5kZXJzdGFuZGluZyB0aGUgZmxvdyBmcm9tIGBEQU1PTl9QQUREUmAgaXMgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBkZXBlbmRlbmN5IHRyZWUgY2xlYXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMzNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MjAuMTk5NjM3MDkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDc6XFx0Y29uZmlnIERBTU9OX1BBRERSXFxuICA0ODpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDUwOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbiAgNTE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXFxuICA1NDpcXHRcXHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyMC4xOTk3MTczNDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgxNzIyMTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipDaGVja2luZyBEQU1PTidzIEZvdW5kYXRpb24qKlxuXG5SaWdodCwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgREFNT05gIGlzIHBsYXlpbmcgbmljZSB3aXRoIGV2ZXJ5dGhpbmcgaXQgbmVlZHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyBgREFNT05gJ3MgZGVwZW5kZW5jeSBsYW5kc2NhcGUgbG9vayBsaWtlIHJpZ2h0IG5vdz9cIiBJIGNhbid0IGJ1aWxkIGFueXRoaW5nIHN0YWJsZSwgb3IgZXZlbiB1bmRlcnN0YW5kIHByb2JsZW1zIHdoZW4gdGhleSBhcmlzZSwgaWYgSSBkb24ndCBrbm93IHRoZSB0b29scyBgREFNT05gIHJlbGllcyBvbi4gU28sIGEgcXVpY2sgY2hlY2stdXAgb24gdGhvc2UgZGVwZW5kZW5jaWVzIGlzIGluIG9yZGVyLiBJdOKAmXMgdGhlIGZvdW5kYXRpb24gdXBvbiB3aGljaCBldmVyeXRoaW5nIGVsc2Ugc3RhbmRzLiBXZSBoYXZlIHRvIG1ha2Ugc3VyZSBpdCdzIHNvbGlkIGJlZm9yZSBwcm9jZWVkaW5nLiBMZXQncyBtYWtlIHN1cmUgdGhpbmdzIGFyZSBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MjMuMDE2OTQyODU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgNTpcXHRjb25maWcgREFNT05cXG4gICA2OlxcdFxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxcbiAgIDk6XFx0XFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcXG4gIDEwOlxcdFxcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcXG4gIDEzOlxcdFxcdCAgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyMy4wMTcwMjEzMTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwMTU0OTQ4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBEQU1PTiBwYXRjaCwgYW5kIG15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGBEQU1PTmAsIGBEQU1PTl9QQUREUmAsIGFuZCBgREFNT05fTFJVX1NPUlRgIGFyZSB0aGUga2V5IGNvbmZpZ3MgaW52b2x2ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlc2Ugc2V0dGluZ3MgZW5hYmxlIGFuZCBob3cgdGhleSBpbXBhY3QgdGhlIG92ZXJhbGwgREFNT04gYmVoYXZpb3IuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgc3RhcnRpbmcgd2l0aCBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCwgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHQgdmFsdWVzLiBJIHN1c3BlY3QgdGhlcmUgd2lsbCBiZSBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyB0aGVyZSB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBvZiB0aGUgY29kZS4gVGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggYWxzbyBtb2RpZmllcyBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBpcyBpbXBvcnRhbnQgdG9vIOKAkyB0aGF0IHdpbGwgcHJvYmFibHkgcG9pbnQgdG93YXJkcyBhIHByYWN0aWNhbCB1c2UtY2FzZSBvciBwZXJmb3JtYW5jZSBtb2RpZmljYXRpb24gcmVsYXRlZCB0byB0aWVyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDc2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyNi42MTg1NzM5MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTMxODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10aWVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vTWFrZWZpbGU9ND1vYmotJChDT05GSUdfU0FNUExFX0RBTU9OX1BSQ0wpICs9IHByY2wub1xcbnNhbXBsZXMvZGFtb24vTWFrZWZpbGU6NTpvYmotJChDT05GSUdfU0FNUExFX0RBTU9OX01USUVSKSArPSBtdGllci5vXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNy1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6ODojZGVmaW5lIHByX2ZtdChmbXQpIFxcXCJkYW1vbl9zYW1wbGVfbXRpZXI6IFxcXCIgZm10XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTktXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTctI2VuZGlmXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4OiNkZWZpbmUgTU9EVUxFX1BBUkFNX1BSRUZJWCBcXFwiZGFtb25fc2FtcGxlX210aWVyLlxcXCJcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTktXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MzY9bW9kdWxlX3BhcmFtKG5vZGUwX21lbV9mcmVlX2JwLCB1bG9uZywgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM3LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzozODpzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM5LVxcdFxcdGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApO1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDI6XFx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQzLVxcdC5nZXQgPSBwYXJhbV9nZXRfYm9vbCxcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzItXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3Ni1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTc3OnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3OC17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgxLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODI6XFx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCh0cnVlKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgzLVxcdGlmICghY3R4KVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4NS1cXHRjdHhzWzBdID0gY3R4O1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODY6XFx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChmYWxzZSk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Ny1cXHRpZiAoIWN0eCkge1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwMC1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjAxOnN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwMi17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjA3LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMDg6c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlKFxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMDktXFx0XFx0Y29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjQtXFx0aWYgKGVuYWJsZWQpIHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjI1OlxcdFxcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjYtXFx0XFx0aWYgKGVycilcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjktXFx0fVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMzA6XFx0ZGFtb25fc2FtcGxlX210aWVyX3N0b3AoKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjMxLVxcdHJldHVybiAwO1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzMy1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM0OnN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzNS17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjQ0LVxcdGlmIChlbmFibGVkKSB7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjI0NTpcXHRcXHRlcnIgPSBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQoKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjQ2LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjUxLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNTI6bW9kdWxlX2luaXQoZGFtb25fc2FtcGxlX210aWVyX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyNi42NjY3MTQyNTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY3ODMyNjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBTQU1QTEVfREFNT05fTVRJRVJgIGlzIGNvbmZpZ3VyZWQuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSdzIHN0cnVjdHVyZSwgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYHNhbXBsZXMvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gc2FtcGxlIGNvZGUuIEknbGwgdGFrZSBhIGxvb2sgaW4gdGhlcmUgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgc3BlY2lmaWMgb3B0aW9uIGlzIGRlZmluZWQsIGlmIGl0J3MgZGVwZW5kZW50IG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucywgYW5kIHdoYXQgaXRzIGRlZmF1bHQgdmFsdWVzIG1pZ2h0IGJlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgc2FtcGxlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYW5kIGhvdyBpdHMgYmVoYXZpb3IgY2FuIGJlIG1vZGlmaWVkIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1NzoyOS4zNDUwNDM4ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTI3NTE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0FNUExFX0RBTU9OX01USUVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MjkuMzkzOTg1NjZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwNDAxMzU1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIEtjb25maWcgRmlsZSBmb3IgdGhlIERhbW9uIFNhbXBsZSoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gYW5kIGNvbmZpZ3VyYXRpb24sIHRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB3aGVuIGV4cGxvcmluZyBhIG5ldyBzYW1wbGUgbGlrZSBcImRhbW9uLlwiIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkZWZpbmVkIGhlcmUgdGhhdCBjb250cm9sIHdoZXRoZXIgRGFtb24gaXMgYnVpbHQgaW50byB0aGUga2VybmVsLCBidWlsdCBhcyBhIG1vZHVsZSwgb3IgZXZlbiBjb21wbGV0ZWx5IGRpc2FibGVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIGFueSBkZWZhdWx0IHNldHRpbmdzLCBhbmQgb2YgY291cnNlLCB0aGUgdXNlci1mYWNpbmcgc3ltYm9scyB0aGF0IHdpbGwgYmUgZXhwb3NlZCBpbiB0aGUgYC5jb25maWdgIGZpbGUuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhlIERhbW9uIHNhbXBsZSBhbmQgaG93IGl0IGludGVncmF0ZXMgKG9yIGRvZXNuJ3QpIHdpdGggdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2UgdG8gd29yayBmcm9tLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzI5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MzIuNTk4MDA0MjQ1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODcxNDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0FNUExFX0RBTU9OX01USUVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjMyLjY0NjcyNzk0M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODM1NDMyNjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIGBTQU1QTEVfREFNT05fTVRJRVJgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgU0FNUExFX0RBTU9OX01USUVSYC4gVGhpcyBpc24ndCBqdXN0IGEgc2ltcGxlIGV4ZXJjaXNlIGluIGxvb2tpbmcgdXAgYSBtYW5pZmVzdCBmaWxlLCB0aG91Z2guIEkgbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGluIGxheWVycy4gRmlyc3QsIEkgbmVlZCB0byBjb25zaWRlciBhbGwgcG9zc2libGUgZGVwZW5kZW5jaWVzLCBib3RoIGRpcmVjdCBhbmQgaW5kaXJlY3QuIFdoYXQgYXJlIHRoZSBvYnZpb3VzIGxpYnJhcmllcywgbW9kdWxlcywgYW5kIHNlcnZpY2VzIHRoYXQgaXQgZXhwbGljaXRseSBjYWxscz8gVGhlbiwgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIHRocm91Z2ggY29uZmlndXJhdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGFwcGFyZW50IGZyb20gdGhlIGNvZGUgaXRzZWxmPyBJIGFsc28gbmVlZCB0byB0aGluayBhYm91dCBydW50aW1lIGRlcGVuZGVuY2llcyAtIGV4dGVybmFsIHNlcnZpY2VzIGl0IG1pZ2h0IGNvbW11bmljYXRlIHdpdGguIFxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIGRlcGVuZGVuY3kuIEEgbG93LWxldmVsIGxpYnJhcnkgY291bGQgbWVhbiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBpZiBpdCBpc24ndCBvcHRpbWl6ZWQsIHdoZXJlYXMgYSBkZXBlbmRlbmN5IG9uIGFuIGV4dGVybmFsIEFQSSBjb3VsZCBpbnRyb2R1Y2Ugc3RhYmlsaXR5IG9yIGxhdGVuY3kgaXNzdWVzLiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgdmVyc2lvbiBjb21wYXRpYmlsaXR5IGFzIHdlbGwuIFdpbGwgdGhlc2UgZGVwZW5kZW5jaWVzIGNyZWF0ZSBjb25mbGljdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIG9yIHdpdGggZnV0dXJlIGRldmVsb3BtZW50P1xuXG5JJ2xsIHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIG1ldGhvZHMsIHRyYWNpbmcgdGhlIGNhbGwgc3RhY2tzIGFuZCBpbnNwZWN0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG1vcmUgZXNvdGVyaWMgb25lcywgaWYgbmVlZGVkLiBUaGVuIEnigJlsbCBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbWFwIG9mIHdoYXQgbWlnaHQgaGFwcGVuIGlmIG9uZSBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgZmFpbHMg4oCTIHdoYXQgYXJlIHRoZSBmYXVsdC10b2xlcmFudCBtZWFzdXJlcyBpbiBwbGFjZSwgYW5kIHdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY2FzY2FkaW5nIGZhaWx1cmVzP1xuXG5cbiIsIklucHV0VG9rZW5zIjo4MDY5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6MzYuNDgyMTYzNzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjM2LjQ4MjIzNDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMDc5OTA3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIGZvY3VzZWQgb24gdGhvc2UgYERBTU9OYCBjb25maWd1cmF0aW9ucyDigJMgYERBTU9OYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX0xSVV9TT1JUYCwgYW5kIGBTQU1QTEVfREFNT05fTVRJRVJgLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJwbGF5LCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBwYXRjaCBpbiBxdWVzdGlvbi4gTXkgbWFpbiBjb25jZXJuIGlzIHRoYXQgdGhlc2UgY29uZmlndXJhdGlvbnMgZGVmaW5lIHRoZSBzY29wZSBhbmQgcGFyYW1ldGVycyBvZiB0aGUgREFNT04gbW9uaXRvcmluZyBhbmQgYWN0aW9uaW5nLCBzbyBhbnkgY2hhbmdlcyBpbnZvbHZpbmcgdGhlbSBpcyBzaWduaWZpY2FudCwgZXZlbiBpZiBzZWVtaW5nbHkgbWlub3IuXG5cblRoZSBwYXRjaCdzIGNvcmUgY2hhbmdlIGlzIHR3b2ZvbGQuIEZpcnN0LCBpdCByZW1vdmVzIGEgY2hlY2sgd2l0aGluIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgLiBUaGlzIGRlc2VydmVzIGltbWVkaWF0ZSBhdHRlbnRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGF0IGNoZWNrIHdhcyB0aGVyZSBpbml0aWFsbHkgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgb2YgaXRzIHJlbW92YWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBtYXkgaGF2ZSBiZWVuIGFkZGVkIGZvciBhIHJlYXNvbiBhbmQgdGh1cyBpdHMgcmVtb3ZhbCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGNhcmVmdWxseSBldmFsdWF0ZS4gVGhpcyBhZmZlY3RzIHRoZSBsb2dpYyBvZiBhZGRpbmcgcXVvdGEgZ29hbHMsIHdoaWNoIGlzIGZ1bmRhbWVudGFsIHRvIERBTU9OJ3Mgb3BlcmF0aW9uLlxuXG5TZWNvbmQsIHRoZSBtb2RpZmljYXRpb24gdG8gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCB0byByZXR1cm4gYC1FSU5WQUxgIGlmIGBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyAwIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoaXMgZXhwbGljaXRseSBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgdGhlIHF1b3RhIGdvYWwgY29tbWl0bWVudCBsb2dpYy4gUmV0dXJuaW5nIGAtRUlOVkFMYCBpbmRpY2F0ZXMgYSB2YWxpZGF0aW9uIGZhaWx1cmUgb3IgYW4gaW52YWxpZCBpbnB1dCwgaW1wbHlpbmcgdGhlIGNvZGUgbm93IGNvbnNpZGVycyBhIHplcm8gYHRhcmdldF92YWx1ZWAgYW4gZXJyb3IgY29uZGl0aW9uIHdoZXJlIGl0IHdhc24ndCBiZWZvcmUuIEl0IGlzIGxpa2VseSBhIGdvb2QgY2hhbmdlLCBlbnN1cmluZyB0aGF0IGEgdmFsaWQgdGFyZ2V0IHZhbHVlIGlzIHByb3ZpZGVkIHRvIHByZXZlbnQgZnV0dXJlLCB1bmV4cGVjdGVkIGlzc3Vlcy5cblxuTm93LCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucywgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLiBJJ20gZ29pbmcgdG8gZXhhbWluZSB0aGUgY29kZSBhcm91bmQgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBhbmQgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2Agd2l0aGluIGBtbS9kYW1vbi9jb3JlLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UgYW5kIGl0cyBpbXBhY3Qgb24gdGhlIHF1b3RhIG1hbmFnZW1lbnQgYW5kIG92ZXJhbGwgREFNT04gYmVoYXZpb3IuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSB0YXJnZXQgdmFsdWUgaXMgc2V0LCB3aGVyZSBpdCBjb21lcyBmcm9tLCBhbmQgd2hhdCBjb25zZXF1ZW5jZXMgdGhlIG5ldyBgLUVJTlZBTGAgcmV0dXJuIGhhcyB1cCB0aGUgY2FsbCBjaGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU5MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjQxLjQ4MzAzNTg1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0Mjk4MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MTEzOT1zdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNTMtLyoqXFxubW0vZGFtb24vY29yZS5jOjExNTQ6ICogZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKCkgLSBDb21taXQgREFNT1MgcXVvdGEgZ29hbHMgdG8gYW5vdGhlciBxdW90YS5cXG5tbS9kYW1vbi9jb3JlLmMtMTE1NS0gKiBAZHN0OlxcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT1MgcXVvdGEuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTE2NTppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE2Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTE5Nz1zdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIwMy1cXHRkc3QtXFx1MDAzZXN6ID0gc3JjLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmM6MTIwNDpcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjA1LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjQxLjUyNzQ3MTY3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzc4MzU4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKlRyYWNpbmcgdGhlIFF1b3RhIExvZ2ljKipcblxuQWxyaWdodCwgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoaXMgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgaHVuY2ggaXMgdG8gdHJhY2UgaXRzIGNhbGwgc3RhY2suIE9rYXksIHNvIGl0J3MgY2FsbGVkIGJ5IGBkYW1vc19jb21taXRfcXVvdGFgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBuYW1pbmcgY29udmVudGlvbiB0byBicmVhayB0aGlzIHVwLiBBbmQgKnRoYXQqIGZ1bmN0aW9uLCBgZGFtb3NfY29tbWl0X3F1b3RhYCwgaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGBkYW1vc19jb21taXRgLiBSaWdodCwgc28gdGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXc7IHRoZSBxdW90YSBnb2FscyBjb21wdXRhdGlvbiBpcyBwYXJ0IG9mIHRoZSBxdW90YSBsb2dpYywgd2hpY2ggaXMgYW4gaW50ZWdyYWwgcGFydCBvZiB0aGUgb3ZlcmFsbCBjb21taXQgcHJvY2Vzcy4gVGhpcyBnaXZlcyBtZSBhIG1hcCBvZiB0aGUgbGFuZHNjYXBlOyBOb3csIEkgY2FuIHN0YXJ0IHRvIGZvcm11bGF0ZSBhIGh5cG90aGVzaXMgYWJvdXQgd2hhdCB0aGUgZGlmZmVyZW50IGdvYWxzIGl0IHVzZXMgYXJlIGluIHRoZSBvdmVyYWxsIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUxMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjQ0LjYwNTMxMDgwOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3NTg1MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfY29tbWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MTEwOD1zdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX250aF9xdW90YV9nb2FsKFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMjAtXFxubW0vZGFtb24vY29yZS5jOjExMjE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxubW0vZGFtb24vY29yZS5jLTExMjItXFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTM4LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTM5OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxubW0vZGFtb24vY29yZS5jLTExNDAtXFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTQ4LVxcdC8qIGtlZXAgbGFzdF9wc2lfdG90YWwgYXMgaXMsIHNpbmNlIGl0IHdpbGwgYmUgdXBkYXRlZCBpbiBuZXh0IGN5Y2xlICovXFxubW0vZGFtb24vY29yZS5jOjExNDk6XFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTUwLVxcdHJldHVybiAwO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNTMtLyoqXFxubW0vZGFtb24vY29yZS5jOjExNTQ6ICogZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKCkgLSBDb21taXQgREFNT1MgcXVvdGEgZ29hbHMgdG8gYW5vdGhlciBxdW90YS5cXG5tbS9kYW1vbi9jb3JlLmMtMTE1NS0gKiBAZHN0OlxcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT1MgcXVvdGEuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTE2NTppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE2Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE3Mi1cXHRcXHRpZiAoc3JjX2dvYWwpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MTE3MzpcXHRcXHRcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTc0LVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE4Ni1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9jb3JlLmM6MTE4NzpcXHRcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbChuZXdfZ29hbCwgc3JjX2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTg4LVxcdFxcdGlmIChlcnIpIHtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTk2LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTk3OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE5OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIwMy1cXHRkc3QtXFx1MDAzZXN6ID0gc3JjLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmM6MTIwNDpcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjA1LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTIyOD1zdGF0aWMgc3RydWN0IGRhbW9zX2ZpbHRlciAqZGFtb3NfbnRoX29wc19maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjM5LVxcbm1tL2RhbW9uL2NvcmUuYzoxMjQwOnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKFxcbm1tL2RhbW9uL2NvcmUuYy0xMjQxLVxcdFxcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyNjAtXFxubW0vZGFtb24vY29yZS5jOjEyNjE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcihcXG5tbS9kYW1vbi9jb3JlLmMtMTI2Mi1cXHRcXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkc3QsIHN0cnVjdCBkYW1vc19maWx0ZXIgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjY2LVxcdGRzdC1cXHUwMDNlYWxsb3cgPSBzcmMtXFx1MDAzZWFsbG93O1xcbm1tL2RhbW9uL2NvcmUuYzoxMjY3OlxcdGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKGRzdCwgc3JjKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI2OC19XFxubW0vZGFtb24vY29yZS5jLTEyNjktXFxubW0vZGFtb24vY29yZS5jOjEyNzA6c3RhdGljIGludCBkYW1vc19jb21taXRfY29yZV9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTI3MS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI3Ny1cXHRcXHRpZiAoc3JjX2ZpbHRlcilcXG5tbS9kYW1vbi9jb3JlLmM6MTI3ODpcXHRcXHRcXHRkYW1vc19jb21taXRfZmlsdGVyKGRzdF9maWx0ZXIsIHNyY19maWx0ZXIpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjc5LVxcdFxcdGVsc2VcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjkxLVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbm1tL2RhbW9uL2NvcmUuYzoxMjkyOlxcdFxcdGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKG5ld19maWx0ZXIsIHNyY19maWx0ZXIpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjkzLVxcdFxcdGRhbW9zX2FkZF9maWx0ZXIoZHN0LCBuZXdfZmlsdGVyKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjk3LVxcbm1tL2RhbW9uL2NvcmUuYzoxMjk4OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X29wc19maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTI5OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTMwNS1cXHRcXHRpZiAoc3JjX2ZpbHRlcilcXG5tbS9kYW1vbi9jb3JlLmM6MTMwNjpcXHRcXHRcXHRkYW1vc19jb21taXRfZmlsdGVyKGRzdF9maWx0ZXIsIHNyY19maWx0ZXIpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMzA3LVxcdFxcdGVsc2VcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzE5LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbm1tL2RhbW9uL2NvcmUuYzoxMzIwOlxcdFxcdGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKG5ld19maWx0ZXIsIHNyY19maWx0ZXIpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMzIxLVxcdFxcdGRhbW9zX2FkZF9maWx0ZXIoZHN0LCBuZXdfZmlsdGVyKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMzUyPXN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX3Byb2JlX3BhcmFtcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM4MC0vKlxcbm1tL2RhbW9uL2NvcmUuYzoxMzgxOiAqIGRhbW9zX2NvbW1pdF9kZXN0cygpIC0gQ29weSBtaWdyYXRpb24gZGVzdGluYXRpb25zIGZyb20gQHNyYyB0byBAZHN0Llxcbm1tL2RhbW9uL2NvcmUuYy0xMzgyLSAqIEBkc3Q6XFx0RGVzdGluYXRpb24gc3RydWN0dXJlIHRvIHVwZGF0ZS5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzk2LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMzk3OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2Rlc3RzKHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTEzOTgtXFx0XFx0c3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDI3LVxcbm1tL2RhbW9uL2NvcmUuYzoxNDI4OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2ZpbHRlcnMoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNDI5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDMxLVxcbm1tL2RhbW9uL2NvcmUuYzoxNDMyOlxcdGVyciA9IGRhbW9zX2NvbW1pdF9jb3JlX2ZpbHRlcnMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xNDMzLVxcdGlmIChlcnIpXFxubW0vZGFtb24vY29yZS5jLTE0MzQtXFx0XFx0cmV0dXJuIGVycjtcXG5tbS9kYW1vbi9jb3JlLmM6MTQzNTpcXHRlcnIgPSBkYW1vc19jb21taXRfb3BzX2ZpbHRlcnMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xNDM2LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTQ0Mj1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9udGhfc2NoZW1lKGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ1My1cXG5tbS9kYW1vbi9jb3JlLmM6MTQ1NDpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdChzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE0NTUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0NjEtXFxubW0vZGFtb24vY29yZS5jOjE0NjI6XFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhKFxcdTAwMjZkc3QtXFx1MDAzZXF1b3RhLCBcXHUwMDI2c3JjLVxcdTAwM2VxdW90YSk7XFxubW0vZGFtb24vY29yZS5jLTE0NjMtXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDY4LVxcbm1tL2RhbW9uL2NvcmUuYzoxNDY5OlxcdGVyciA9IGRhbW9zX2NvbW1pdF9kZXN0cyhcXHUwMDI2ZHN0LVxcdTAwM2VtaWdyYXRlX2Rlc3RzLCBcXHUwMDI2c3JjLVxcdTAwM2VtaWdyYXRlX2Rlc3RzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTQ3MC1cXHRpZiAoZXJyKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0NzItXFxubW0vZGFtb24vY29yZS5jOjE0NzM6XFx0ZXJyID0gZGFtb3NfY29tbWl0X2ZpbHRlcnMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xNDc0LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTQ4MT1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0ODgtXFx0XFx0aWYgKHNyY19zY2hlbWUpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MTQ4OTpcXHRcXHRcXHRlcnIgPSBkYW1vc19jb21taXQoZHN0X3NjaGVtZSwgc3JjX3NjaGVtZSk7XFxubW0vZGFtb24vY29yZS5jLTE0OTAtXFx0XFx0XFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNTA2LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbm1tL2RhbW9uL2NvcmUuYzoxNTA3OlxcdFxcdGVyciA9IGRhbW9zX2NvbW1pdChuZXdfc2NoZW1lLCBzcmNfc2NoZW1lKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTUwOC1cXHRcXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjQ0LjY1MTA3NDIzN1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk1MzE5MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgRGVlcCBpbnRvIERBTU9OIENvbW1pdCBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRhbW9uX2NvbW1pdF9zY2hlbWVzYC4gRnJvbSB0aGUgY29kZSwgaXQncyBjbGVhciB0aGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24gd2l0aGluIERBTU9OJ3MgY29tbWl0IHBoYXNlLiBJdCdzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBkYW1vbl9jb21taXRfY3R4YCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGFjdHVhbCBhcHBsaWNhdGlvbiBvZiB0aGUgY29tbWl0IG9wZXJhdGlvbnMsIG9uY2UgdGhlIGNvbnRleHQgZm9yIHRoZSBjb21taXQgaGFzIGJlZW4gZXN0YWJsaXNoZWQuIFRoaXMgbWVhbnMgaXQncyB0aGUgY29yZSBvZiBob3cgREFNT04gZGVjaWRlcyAqaG93KiB0byBjaGFuZ2UgbWVtb3J5IHN0YXRlcyBiYXNlZCBvbiB0aGUgZGVjaXNpb25zIG1hZGUgaW4gdGhlIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgKmluc2lkZSogYGRhbW9uX2NvbW1pdF9zY2hlbWVzYCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb250ZXh0IGRhdGEuIElzIGl0IGl0ZXJhdGluZyB0aHJvdWdoIGEgbGlzdCBvZiBzY2hlbWVzPyBBcmUgdGhlc2UgZGlmZmVyZW50IG9wdGltaXphdGlvbiBzdHJhdGVnaWVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBpbXBhY3RzIGhlcmU/IEkgbmVlZCB0byBsb29rIGRlZXBlciBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGFtb25fY29tbWl0X3NjaGVtZXNgIGFuZCBkZXRlcm1pbmUgaXRzIHBhcmFtZXRlcnMuIEknbSBnb2luZyB0byBkZXRlcm1pbmUgd2hhdCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyB1c2VkIGFzIHdlbGwsIGluIG9yZGVyIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMDcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1Nzo0OC4wNDYzOTU4MzZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODAwMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz0xNzI4PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNzYwLVxcbm1tL2RhbW9uL2NvcmUuYzoxNzYxOnN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNzYyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xODE5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4MjYtXFx0XFx0cmV0dXJuIE5VTEw7XFxubW0vZGFtb24vY29yZS5jOjE4Mjc6XFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBkc3QpO1xcbm1tL2RhbW9uL2NvcmUuYy0xODI4LVxcdGlmIChlcnIpIHtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODM1LS8qKlxcbm1tL2RhbW9uL2NvcmUuYzoxODM2OiAqIGRhbW9uX2NvbW1pdF9jdHgoKSAtIENvbW1pdCBwYXJhbWV0ZXJzIG9mIGEgREFNT04gY29udGV4dCB0byBhbm90aGVyLlxcbm1tL2RhbW9uL2NvcmUuYy0xODM3LSAqIEBkc3Q6XFx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PTiBjb250ZXh0Llxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4NDctICovXFxubW0vZGFtb24vY29yZS5jOjE4NDg6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE4NDkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4NTUtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxubW0vZGFtb24vY29yZS5jOjE4NTY6XFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KHRlc3RfY3R4LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xODU3LVxcdGlmIChlcnIpXFxubW0vZGFtb24vY29yZS5jLTE4NTgtXFx0XFx0Z290byBvdXQ7XFxubW0vZGFtb24vY29yZS5jOjE4NTk6XFx0ZXJyID0gX19kYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTg2MC1vdXQ6XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTk0NT1zdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE5NjYtXFxubW0vZGFtb24vY29yZS5jOjE5Njc6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xOTY4LVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTE5ODQ9aW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk5NS1cXG5tbS9kYW1vbi9jb3JlLmM6MTk5NjpcXHRcXHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGN0eHNbaV0pO1xcbm1tL2RhbW9uL2NvcmUuYy0xOTk3LVxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KHRlc3RfY3R4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6NDguMDkwMjAwNDg1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzEwMDc2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBEQU1PTiBTeXNmcyBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIGBkYW1vbl9jb21taXRfY3R4YCBpcyBvdXQgdGhlcmUsIGJlaW5nIHVzZWQgYnkgdGhlIHN5c2ZzIGludGVyZmFjZS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHdvdWxkIGJlIGluIHRoZSBjb3JlIHN5c2ZzIGZpbGVzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IGVpdGhlciBgbW0vZGFtb24vc3lzZnMuY2Agb3IsIGlmIHRoZSBjb250ZXh0IGlzIG1vcmUgYWJvdXQgdGhlIHNjaGVtYXMgdGhlbXNlbHZlcywgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24sIHVzYWdlLCBhbmQgYW55IGFzc29jaWF0ZWQgZGV0YWlscyBhYm91dCBgZGFtb25fY29tbWl0X2N0eGAuIEkga25vdyB0aGF0IHRoZXNlIGZpbGVzIG9mdGVuIHByb3ZpZGUgdGhlIGxpbmthZ2UgYmV0d2VlbiB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UgKHN5c2ZzKSBhbmQgdGhlIERBTU9OIGNvcmUuIEkgd2lsbCBhbHNvIGJlIGxvb2tpbmcgZm9yIHVzYWdlIGluIG90aGVyIERBTU9OIGNvcmUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxNTgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1Nzo1Mi45NjEyMTA0OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3OTgxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fY29tbWl0X2N0eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTE3Mjg9c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NjAtXFxubW0vZGFtb24vY29yZS5jOjE3NjE6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE3NjIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTE4MTk9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTgyNi1cXHRcXHRyZXR1cm4gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmM6MTgyNzpcXHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIGRzdCk7XFxubW0vZGFtb24vY29yZS5jLTE4MjgtXFx0aWYgKGVycikge1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4MzUtLyoqXFxubW0vZGFtb24vY29yZS5jOjE4MzY6ICogZGFtb25fY29tbWl0X2N0eCgpIC0gQ29tbWl0IHBhcmFtZXRlcnMgb2YgYSBEQU1PTiBjb250ZXh0IHRvIGFub3RoZXIuXFxubW0vZGFtb24vY29yZS5jLTE4MzctICogQGRzdDpcXHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9OIGNvbnRleHQuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg0Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTg0ODppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTg0OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg1NS1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9jb3JlLmM6MTg1NjpcXHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgodGVzdF9jdHgsIHNyYyk7XFxubW0vZGFtb24vY29yZS5jLTE4NTctXFx0aWYgKGVycilcXG5tbS9kYW1vbi9jb3JlLmMtMTg1OC1cXHRcXHRnb3RvIG91dDtcXG5tbS9kYW1vbi9jb3JlLmM6MTg1OTpcXHRlcnIgPSBfX2RhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xODYwLW91dDpcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xOTQ1PXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni1cXG5tbS9kYW1vbi9jb3JlLmM6MTk2NzpzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYyk7XFxubW0vZGFtb24vY29yZS5jLTE5NjgtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTk4ND1pbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTk1LVxcbm1tL2RhbW9uL2NvcmUuYzoxOTk2OlxcdFxcdGVyciA9IF9fZGFtb25fY29tbWl0X2N0eCh0ZXN0X2N0eCwgY3R4c1tpXSk7XFxubW0vZGFtb24vY29yZS5jLTE5OTctXFx0XFx0ZGFtb25fZGVzdHJveV9jdHgodGVzdF9jdHgpO1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0yNzE9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTMzNS1cXHRcXHRnb3RvIG91dDtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjMzNjpcXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGN0eCwgcGFyYW1fY3R4KTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTMzNy1vdXQ6XFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmM9MTk0PXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmMtMjYyLVxcdFxcdGdvdG8gb3V0O1xcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNjM6XFx0ZXJyID0gZGFtb25fY29tbWl0X2N0eChjdHgsIHBhcmFtX2N0eCk7XFxubW0vZGFtb24vcmVjbGFpbS5jLTI2NC1vdXQ6XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIxMzE9c3RhdGljIGludCBkYW1vbl9zeXNmc19jb21taXRfaW5wdXQodm9pZCAqZGF0YSlcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjE0NS1cXHRcXHRyZXR1cm4gUFRSX0VSUihwYXJhbV9jdHgpO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjE0NjpcXHRlcnIgPSBkYW1vbl9jb21taXRfY3R4KGtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCwgcGFyYW1fY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIxNDctXFx0ZGFtb25fZGVzdHJveV9jdHgocGFyYW1fY3R4KTtcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD0xMzA5PXN0YXRpYyB2b2lkIGRhbW9uX3Rlc3RfY29tbWl0X2N0eChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTMyMi1cXHRzcmMtXFx1MDAzZW1pbl9yZWdpb25fc3ogPSA0MDk2O1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDoxMzIzOlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkYW1vbl9jb21taXRfY3R4KGRzdCwgc3JjKSwgMCk7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEzMjQtXFx0c3JjLVxcdTAwM2VtaW5fcmVnaW9uX3N6ID0gNDA5NTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6MTMyNTpcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGFtb25fY29tbWl0X2N0eChkc3QsIHNyYyksIC1FSU5WQUwpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC0xMzI2LVxcdHNyYy1cXHUwMDNlbWluX3JlZ2lvbl9zeiA9IDQwOTY7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTEzMjctXFx0c3JjLVxcdTAwM2VwYXVzZSA9IHRydWU7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjEzMjg6XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGRhbW9uX2NvbW1pdF9jdHgoZHN0LCBzcmMpLCAwKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtMTMyOS1cXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBkc3QtXFx1MDAzZXBhdXNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTc6NTMuMDA1MDEzOTI5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMDI2Nzg0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBDb21taXQgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBoZXJlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhlIERBTU9OIHN5c3RlbSdzIGNvbW1pdCBtZWNoYW5pc20gaXMgdHJpZ2dlcmVkLiBJdCBsb29rcyBsaWtlIHRoZSBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBmdW5jdGlvbiBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgY2FsbGluZyBgZGFtb25fY29tbWl0X2N0eGAuIE5vdywgYmVjYXVzZSB0aGlzIGlzIHRoZSBzeXNmcyBpbnRlcmZhY2UsIGl0IG1lYW5zIHVzZXJzcGFjZSBjYW4gZGlyZWN0bHkgaW5mbHVlbmNlIHRoZSBleGVjdXRpb24gb2YgYGRhbW9uX2NvbW1pdF9jdHhgLCB3aGljaCB0aGVuIGxlYWRzIHRvIGBkYW1vbl9jb21taXRfcXVvdGFfZ29hbGAuIFRoYXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kIGZvciBleHRlcm5hbCBjb250cm9sLlxuXG5GdXJ0aGVybW9yZSwgSSd2ZSBub3RpY2VkIHRoYXQgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgIGFuZCBgZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzYCBhbHNvIHRyaWdnZXIgdGhlIHNhbWUgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBhcm91bmQgYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAsIGluIGBtbS9kYW1vbi9zeXNmcy5jYCB0byBiZXR0ZXIgc2VlIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNhbGxzLCBhbmQgaG93IHRoZSBvdmVyYWxsIGNvbW1pdCBwcm9jZXNzIHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1Nzo1OS4zMDc2OTUyMTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTYyNDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9zeXNmcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MjEyMj1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc3lzZnNfYnVpbGRfY3R4KFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMTI1LS8qXFxubW0vZGFtb24vc3lzZnMuYzoyMTI2OiAqIGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCgpIC0gQ29tbWl0IHVzZXIgaW5wdXRzIHRvIGEgcnVubmluZyBrZGFtb25kLlxcbm1tL2RhbW9uL3N5c2ZzLmMtMjEyNy0gKiBAa2RhbW9uZDpcXHRUaGUga29iamVjdCB3cmFwcGVyIGZvciB0aGUgYXNzb2NpYXRlZCBrZGFtb25kLlxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMTMwLSAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjEzMTpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCh2b2lkICpkYXRhKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjEzMi17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIzNjQ9c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3Ni1cXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jOjIzNzc6XFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfY29tbWl0X2lucHV0LCBrZGFtb25kKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzgtXFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFM6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU3OjU5LjM1NzY2MzgyMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDczNDU3NjY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEEgQnVnIEZpeCBpbiBRdW90YSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIHRoZSBmaXJzdCB0aGluZyBJJ20gc2VlaW5nIGlzIHRoYXQgdGhlIHN5c2ZzIGludGVyZmFjZSBpcyByZWFjaGFibGUsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gdGhlIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgZnVuY3Rpb24uIEl0J3Mgbm93IGdvaW5nIHRvIHJldHVybiBgLUVJTlZBTGAgaWYgdGhlIGBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyB6ZXJvLiBUaGF0J3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0IGltbWVkaWF0ZWx5IHNldHMgb2ZmIGFsYXJtIGJlbGxzIGFib3V0IHBvdGVudGlhbCBhcml0aG1ldGljIGlzc3Vlcy5cblxuUmlnaHQsIHRoZSByZWFzb24gZm9yIHRoaXMgaXMgY2xlYXJseSBzdGF0ZWQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlOiBcInplcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKClcIi4gQmluZ28hIFNvLCB3ZSdyZSB0YWxraW5nIGFib3V0IGEgYnVnIGZpeC4gQSBkaXZpc2lvbi1ieS16ZXJvLCBhbHdheXMgYSBmdW4gb25lLiBMZXQncyBzZWUuLi4gdGhlIHBhdGNoIGlzIGludGVuZGVkIHRvIGFkZHJlc3MgdGhhdCBzY2VuYXJpby5cblxuTm93LCBteSBuZXh0IG1vdmUgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRhbW9zX3F1b3RhX3N0b3JlYCwgb3IgYW55dGhpbmcgc2ltaWxhciB0byBpdCwgYW5kIHRyYWNlIHRoZSB2YWx1ZSB0byBjb25maXJtIHRoaXMgYXMgYSBidWcuIEkga25vdyB0aGF0IEkgbXVzdCBsb29rIGNsb3NlbHkgZm9yIGhvdyBgc3JjLVx1MDAzZXRhcmdldF92YWx1ZWAgaXMgdXNlZCwgc3BlY2lmaWNhbGx5IGluIGEgZGl2aXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTcwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU4OjI0LjA5MjI0NDQyN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwMjkxMjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX3F1b3RhX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6MjQuMTUwMjgzODg2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODg1NDkzNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIGEgU3VzcGVjdCBEaXZpc2lvbiBieSBaZXJvKipcblxuT2theSwgbGV0IG1lIHNlZS4uLiB0aGUgY29tbWl0IG1lc3NhZ2UgZmxhZ3MgYSBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIHdpdGhpbiBgZGFtb3NfcXVvdGFfc3RvcmUoKWAgd2hlbiB0aGUgdGFyZ2V0IHZhbHVlIGlzIHplcm8uIEJ1dCwgd2FpdCBhIG1pbnV0ZSwgdGhlIGFjdHVhbCBwYXRjaCBzaG93cyBhIGNoZWNrIGZvciBudWxsIHBvaW50ZXJzLCBgbm9kZTBfbWVtX3VzZWRfYnBgIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgLCBhbmQgYSBgZ290byBmcmVlX291dDtgIGlmIGVpdGhlciBhcmUgbnVsbC4gVGhhdCBkb2Vzbid0IGRpcmVjdGx5IHNjcmVhbSBcImRpdmlzaW9uIGJ5IHplcm9cIiBpbiBgZGFtb3NfcXVvdGFfc3RvcmUoKWAuIEhtbSwgdGhlIGNvbW1lbnQgaXRzZWxmIGFwcGVhcnMgdG8gYmUgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuLi4gSW50ZXJlc3RpbmcuXG5cbkl0IHNlZW1zIEknbSBiYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlLiBUaGlzIGxpa2VseSBpbXBsaWVzIHRoZSBwcm9ibGVtIHN0ZW1zIGZyb20gYSBkaWZmZXJlbnQgZnVuY3Rpb24sIHBvdGVudGlhbGx5IGEgZnVuY3Rpb24gc2ltaWxhciB0byBgZGFtb3NfcXVvdGFfc2NvcmVgLCBvciB3aXRoaW4gYW4gaW5kaXJlY3QgY2FsbCBjaGFpbi4gVGhlIGNoZWNrIHRoYXQgdGhlIHBhdGNoIGludHJvZHVjZXMgaXMgYXR0ZW1wdGluZyB0byBwcmV2ZW50IHRoZSBkaXZpc2lvbi4gTm93IEkgbmVlZCB0byB0cmFjayBkb3duIGV4YWN0bHkgKndoZXJlKiB0aGUgZGl2aXNpb24gaXMgb2NjdXJyaW5nLCBpZiBub3QgaW4gdGhlIHRhcmdldCBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIHNlcXVlbmNlIGFuZCBsb29rIGF0IHRoZSB2YXJpYWJsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTc3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU4OjI4LjgzODgzODY0OFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNDg3MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFyZ2V0X3ZhbHVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9NjI3PXN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmMtNjI4LVxcdFxcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljLFxcbm1tL2RhbW9uL2NvcmUuYzo2Mjk6XFx0XFx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWUpXFxubW0vZGFtb24vY29yZS5jLTYzMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjM2LVxcdGdvYWwtXFx1MDAzZW1ldHJpYyA9IG1ldHJpYztcXG5tbS9kYW1vbi9jb3JlLmM6NjM3OlxcdGdvYWwtXFx1MDAzZXRhcmdldF92YWx1ZSA9IHRhcmdldF92YWx1ZTtcXG5tbS9kYW1vbi9jb3JlLmMtNjM4LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZnb2FsLVxcdTAwM2VsaXN0KTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMTM5PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE0MS17XFxubW0vZGFtb24vY29yZS5jOjExNDI6XFx0aWYgKCFzcmMtXFx1MDAzZXRhcmdldF92YWx1ZSlcXG5tbS9kYW1vbi9jb3JlLmMtMTE0My1cXHRcXHRyZXR1cm4gIC1FSU5WQUw7XFxubW0vZGFtb24vY29yZS5jLTExNDQtXFx0ZHN0LVxcdTAwM2VtZXRyaWMgPSBzcmMtXFx1MDAzZW1ldHJpYztcXG5tbS9kYW1vbi9jb3JlLmM6MTE0NTpcXHRkc3QtXFx1MDAzZXRhcmdldF92YWx1ZSA9IHNyYy1cXHUwMDNldGFyZ2V0X3ZhbHVlO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTQ2LVxcdGlmIChkc3QtXFx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9VU0VSX0lOUFVUKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTExNjU9aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE4My1cXHRcXHRuZXdfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYzoxMTg0OlxcdFxcdFxcdFxcdHNyY19nb2FsLVxcdTAwM2VtZXRyaWMsIHNyY19nb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTg1LVxcdFxcdGlmICghbmV3X2dvYWwpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzA1Nz1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19xdW90YV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzA2Ni1cXHRcXHRcXHRcXHRtdWx0X2ZyYWMoZ29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSwgMTAwMDAsXFxubW0vZGFtb24vY29yZS5jOjMwNjc6XFx0XFx0XFx0XFx0XFx0Z29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKSk7XFxubW0vZGFtb24vY29yZS5jLTMwNjgtXFx0fVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyMTU9c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTctXFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWM7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMTg6XFx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWU7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTktXFx0dW5zaWduZWQgbG9uZyBjdXJyZW50X3ZhbHVlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyOTE9c3RhdGljIHNzaXplX3QgdGFyZ2V0X21ldHJpY19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzEwOnN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzExLVxcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMTUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMTY6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJWx1XFxcXG5cXFwiLCBnb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE3LX1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxOTpzdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMjAtXFx0XFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzIzLVxcdFxcdFxcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzI0OlxcdGludCBlcnIgPSBrc3RydG91bChidWYsIDAsIFxcdTAwMjZnb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzI1LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MTU9c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF9tZXRyaWNfYXR0ciA9XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxNy1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDE5OlxcdFxcdF9fQVRUUl9SV19NT0RFKHRhcmdldF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjAtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTQzMD1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hdHRyc1tdID0ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMxLVxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF9tZXRyaWNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDMyOlxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF92YWx1ZV9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MzMtXFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZV9hdHRyLmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjg0Nz1zdGF0aWMgaW50IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODU3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODU4OlxcdFxcdGlmICghc3lzZnNfZ29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODU5LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NjEtXFx0XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKHN5c2ZzX2dvYWwtXFx1MDAzZW1ldHJpYyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg2MjpcXHRcXHRcXHRcXHRzeXNmc19nb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODYzLVxcdFxcdGlmICghZ29hbClcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD03NTA9c3RhdGljIHZvaWQgZGFtb3NfdGVzdF9jb21taXRfcXVvdGFfZ29hbF9mb3Ioc3RydWN0IGt1bml0ICp0ZXN0LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc2MC1cXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZHN0LVxcdTAwM2VtZXRyaWMsIHNyYy1cXHUwMDNlbWV0cmljKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6NzYxOlxcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkc3QtXFx1MDAzZXRhcmdldF92YWx1ZSwgc3JjLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03NjItXFx0aWYgKHNyYy1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQpXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg9NzgxPXN0YXRpYyB2b2lkIGRhbW9zX3Rlc3RfY29tbWl0X3F1b3RhX2dvYWwoc3RydWN0IGt1bml0ICp0ZXN0KVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc4NC1cXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfU09NRV9NRU1fUFNJX1VTLFxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo3ODU6XFx0XFx0LnRhcmdldF92YWx1ZSA9IDEwMDAsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc4Ni1cXHRcXHQuY3VycmVudF92YWx1ZSA9IDEyMyxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03OTItXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjc5MzpcXHRcXHRcXHQudGFyZ2V0X3ZhbHVlID0gNzg5LFxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC03OTQtXFx0XFx0XFx0LmN1cnJlbnRfdmFsdWUgPSAxMn0pO1xcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc5Ny1cXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6Nzk4OlxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAzNDUsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTc5OS1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDY3OCxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MDQtXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNX1VTRURfQlAsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjgwNTpcXHRcXHRcXHQudGFyZ2V0X3ZhbHVlID0gMTIsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgwNi1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDM0NSxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MTEtXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfVVNFRF9CUCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODEyOlxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSA0NTYsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgxMy1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDU2NyxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MTktXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX05PREVfTUVNQ0dfRlJFRV9CUCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODIwOlxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSA4OTAsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgyMS1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDkwMSxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04MjctXFx0XFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX1NPTUVfTUVNX1BTSV9VUyxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODI4OlxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAyMzQsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTgyOS1cXHRcXHRcXHQuY3VycmVudF92YWx1ZSA9IDM0NSxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD04MzQ9c3RhdGljIHZvaWQgZGFtb3NfdGVzdF9jb21taXRfcXVvdGFfZ29hbHNfZm9yKHN0cnVjdCBrdW5pdCAqdGVzdCxcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04NTMtXFx0XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKGRzdF9nb2Fsc1tpXS5tZXRyaWMsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjg1NDpcXHRcXHRcXHRcXHRkc3RfZ29hbHNbaV0udGFyZ2V0X3ZhbHVlKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODU1LVxcdFxcdGlmICghZ29hbClcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC04NzUtXFx0XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGdvYWwtXFx1MDAzZW1ldHJpYywgc3JjX2dvYWxzW2ldLm1ldHJpYyk7XFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjg3NjpcXHRcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZ29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlLFxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaDo4Nzc6XFx0XFx0XFx0XFx0c3JjX2dvYWxzW2krK10udGFyZ2V0X3ZhbHVlKTtcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtODc4LVxcdH1cXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD04ODg9c3RhdGljIHZvaWQgZGFtb3NfdGVzdF9jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTg5NC1cXHRcXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6ODk1OlxcdFxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAxMjMsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTg5Ni1cXHRcXHRcXHRcXHR9LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwMS1cXHRcXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6OTAyOlxcdFxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAyMzQsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwMy1cXHRcXHRcXHRcXHR9LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkwOC1cXHRcXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6OTA5OlxcdFxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSAzNDUsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkxMC1cXHRcXHRcXHRcXHR9LFxcbi0tXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkxNS1cXHRcXHRcXHRcXHQubWV0cmljID0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVCxcXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0Lmg6OTE2OlxcdFxcdFxcdFxcdC50YXJnZXRfdmFsdWUgPSA0NTYsXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTkxNy1cXHRcXHRcXHRcXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1ODoyOC44ODc5OTU0MzdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAzOTg0NDE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gUXVvdGEgU2NvcmUgQnVnZml4KipcblxuT2theSwgc28gdGhlIGRpdmlzaW9uIGJ5IHplcm8gaXMgaGFwcGVuaW5nIGluc2lkZSBgZGFtb3NfcXVvdGFfc2NvcmVgLiBJIHNlZSBpdCBjbGVhcmx5OlxuXG5gYGBjXG5cdFx0XHRzY29yZSA9IG1heChzY29yZSxcblx0XHRcdFx0bXVsdF9mcmFjKGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSwgMTAwMDAsXG5cdFx0XHRcdFx0Z29hbC1cdTAwM2V0YXJnZXRfdmFsdWUpKTtcbmBgYFxuXG5JZiBgZ29hbC1cdTAwM2V0YXJnZXRfdmFsdWVgIGlzIHplcm8sIHdlJ3JlIGRpdmlkaW5nIGJ5IHplcm8uIFNpbXBsZSBlbm91Z2guIFRoZSBwcm9wb3NlZCBwYXRjaCBhZGRyZXNzZXMgdGhpcyBieSBoYXZpbmcgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCByZXR1cm4gYC1FSU5WQUxgIGlmIHRoZSBgc3JjLVx1MDAzZXRhcmdldF92YWx1ZWAgaXMgemVybywgd2hpY2ggc2VlbXMgcmVhc29uYWJsZS5cblxuTm93LCBsZXQncyB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgdGhlIGZ1bGwgcGljdHVyZS4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpcyBjYWxsZWQgZnJvbSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCwgd2hpY2ggdGhlbiBmZWVkcyBpbnRvIGBkYW1vc19jb21taXRfcXVvdGFgLCB3aGljaCBpcyBjYWxsZWQgYnkgYGRhbW9zX2NvbW1pdGAsIHdoaWNoIGlzIHN1YnNlcXVlbnRseSBjYWxsZWQgZnJvbSBgZGFtb25fY29tbWl0X3NjaGVtZXNgLCBhbmQgZmluYWxseSwgYGRhbW9uX2NvbW1pdF9jdHhgLiBUaGUgY3J1Y2lhbCBlbnRyeSBwb2ludCBpcyBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCwgd2hpY2ggY2FsbHMgYGRhbW9uX2NvbW1pdF9jdHhgLiBBaCwgc28gYSB1c2VyIGNhbiB3cml0ZSBkaXJlY3RseSB0byBgdGFyZ2V0X3ZhbHVlYCB0aHJvdWdoIHN5c2ZzLCBhbmQgdGhlbiB0cmlnZ2VyIGBjb21taXRfaW5wdXRgLCB3aGljaCBwcmV2aW91c2x5IGFsbG93ZWQgYHRhcmdldF92YWx1ZWAgdG8gYmUgc2V0IHRvIHplcm8sIGFuZCB0aGUgZGl2aXNpb24gYnkgemVybyB3b3VsZCBvY2N1ciBpbiBgZGFtb3NfcXVvdGFfc2NvcmVgLiBOb3cgaXQgY29ycmVjdGx5IHJldHVybnMgYC1FSU5WQUxgLlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGJ1ZyBmaXgsIGFuZCBpdCdzIGRlZmluaXRlbHkgdXNlci1yZWFjaGFibGUgdmlhIHRoZSBzeXNmcyBpbnRlcmZhY2UuIFRoZSBleGlzdGVuY2Ugb2YgdGhlIHN5c2ZzIGludGVyZmFjZSBpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfREFNT05fU1lTRlNgLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvbiB0aGF0IGNvbmZpZyBvcHRpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgaW1wbGljYXRpb25zIGZvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1MDAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6MzQuOTI3ODQyNDI3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDE5OTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05fU1lTRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTU2PWNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxcbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy02OS1cXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxcbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1ODozNC45NzIwNDY4MzZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNTg3ODczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFieXJpbnRoKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEknbSB0aGlua2luZywgXCJBbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHJvdWdobHkgbGluZSA2OC5cIiBXaHkgdGhhdCBsaW5lPyBXZWxsLCBJIGRvbid0IGtub3cgeWV0LCBidXQgaXQncyBhIHN0YXJ0aW5nIHBvaW50LiBJdCBjb3VsZCBiZSB3aGVyZSBhIHNwZWNpZmljIGZlYXR1cmUgaXMgZGVmaW5lZCwgYSBjcml0aWNhbCB2YXJpYWJsZSBpcyBkZWNsYXJlZCwgb3IgcGVyaGFwcyB3aGVyZSBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBzZXRzIHVwIHNvbWV0aGluZyByZWxldmFudC4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgdHJhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzk4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6MzcuOTc3OTI3NzM3WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNjg6XFx0Y29uZmlnIERBTU9OX1NZU0ZTXFxuICA2OTpcXHRcXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxuICA3MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IFNZU0ZTXFxuICA3MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA3MjpcXHRcXHRoZWxwXFxuICA3MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxcbiAgNzQ6XFx0XFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcXG4gIDc3OlxcdFxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1ODozNy45NzgwMDI3MzdaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyMzgxOTE5NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqREFNT04gUXVvdGEgR29hbCBDaGFuZ2VzIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaG93IGl0IG1vZGlmaWVzIHRoZSBEQU1PTiBxdW90YSBnb2FsIGhhbmRsaW5nLiBJdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgYERBTU9OX1NZU0ZTYCwgd2hpY2gsIG5hdHVyYWxseSwgZGVwZW5kcyBvbiBgREFNT05gIGFuZCBgU1lTRlNgLiBUaGUgY29kZSBjaGFuZ2VzIGFyZSBpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AgYW5kIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIHNwZWNpZmljYWxseS5cblxuSW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgLCB0aGVyZSdzIGFuIGludGVyZXN0aW5nIHJlbW92YWwuIFRoYXQgY2hlY2sgYGlmICgxMDAwMCBcdTAwM2MgYWN0aXZlX21lbV9icClgIGlzIGdvbmUuIEkgaW5pdGlhbGx5IHRob3VnaHQgaXQgd2FzIGJlY2F1c2UgYGRhbW9zX25ld19xdW90YV9nb2FsYCBkaWRuJ3QgY2FyZSBhYm91dCB0aGUgdXBwZXIgYm91bmQsIGJ1dCB0aGF0J3Mgbm90IHF1aXRlIHJpZ2h0LiBBZnRlciBhIGxpdHRsZSBtb3JlIGRpZ2dpbmcsIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgKm5vdyogaGFuZGxlcyB0aGUgaW52YWxpZCB2YWx1ZSBjaGVjaywgcmV0dXJuaW5nIGAtRUlOVkFMYCBpZiBgdGFyZ2V0X3ZhbHVlYCBpcyAwLiBTbyB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFib3V0IHNoaWZ0aW5nIHRoZSBlcnJvciBjaGVjayBmcm9tIHRoZSBxdW90YSBnb2FsICphZGRpdGlvbiogZnVuY3Rpb24gdG8gdGhlICpjb21taXQqIGZ1bmN0aW9uLiBDb25zZXF1ZW50bHksIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgYGFjdGl2ZV9tZW1fYnBgIGlzIG5vbi16ZXJvIHdoZW4gdGhlIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAgaXMgY2FsbGVkLlxuXG5UaGUgc2l0dWF0aW9uIGlzIHZlcnkgc2ltaWxhciBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gVGhhdCBjaGVjayBmb3IgemVybyBgbm9kZTBfbWVtX3VzZWRfYnBgIG9yIGBub2RlMF9tZW1fZnJlZV9icGAgaXMgYWxzbyBnb25lLiBJdCdzIHRoZSBzYW1lIHJhdGlvbmFsZSBhcyBgbW0vZGFtb24vbHJ1X3NvcnQuY2A6IHRoZSByZXNwb25zaWJpbGl0eSBoYXMgc2hpZnRlZCB0byBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgLCB3aGljaCBub3cgcmV0dXJucyBgLUVJTlZBTGAgaWYgYHRhcmdldF92YWx1ZWAgaXMgMC4gV2FpdCwgYGRhbW9zX25ld19xdW90YV9nb2FsYCBkb2Vzbid0IGFjdHVhbGx5ICpyZXR1cm4qIGAtRUlOVkFMYCwgaXQganVzdCBhbGxvY2F0ZXMgdGhlIGRhdGEuIFRoZSBlcnJvciBpcyBvbmx5IHBvc3NpYmxlIGF0IHRoZSBjb21taXQgc3RlcCB3aGVuIGBkYW1vbl9jb21taXRfY3R4YCBpcyBjYWxsZWQsIGJlY2F1c2UgaXQgZXZlbnR1YWxseSBjYWxscyBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgYG10aWVyLmNgIHNhbXBsZSwgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGJ1aWxkcyB0aGUgY29udGV4dCBhbmQgdGhlbiBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCBraWNrcyB0aGluZ3Mgb2ZmIHdpdGggYSBjYWxsIHRvIGBkYW1vbl9zdGFydGAuIEFuZCBgZGFtb25fc3RhcnRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGNhbGxzIGBfX2RhbW9uX2NvbW1pdF9jdHhgIHRvIHZhbGlkYXRlIHRoZSBwYXJhbWV0ZXJzLCBzbyB5ZXMsIHRoZSBjaGVjayBpcyBub3cgcmVkdW5kYW50LlxuXG5UaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBmb2N1c2VkIGFyb3VuZCBgbW0vZGFtb24vY29yZS5jYCwgc3BlY2lmaWNhbGx5IGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgYW5kIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLiBUaGlzIGRlZmluaXRlbHkgbG9va3MgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UgY2FuIGV4cGxvcmUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBhZGRlZCBlcnJvciBoYW5kbGluZy5cblxuVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb25zIEknbSBtb3N0IGludGVyZXN0ZWQgaW4gZm9yIGZ1enppbmcgYXJlOlxuXG4qICAgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYFxuKiAgIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgXG4qICAgYGRhbW9uX2NvbW1pdF9jdHhgXG4qICAgYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGBcbiogICBgZGFtb3NfcXVvdGFfc2NvcmVgXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlaXIgdmlzaWJpbGl0eS4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AgYW5kIGBkYW1vbl9jb21taXRfY3R4YCBhcmUgbm9uLXN0YXRpYy4gYGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dGAgYW5kIGBkYW1vc19xdW90YV9zY29yZWAgYXJlIHN0YXRpYy4gSSB3aWxsIG5vdyBsb29rIG92ZXIgdGhlIGNvZGUgaW4gYG1tL2RhbW9uL2NvcmUuY2AgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzM0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6NDkuMjE2MTk3MjgzWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI3MDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTExMzk9c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTY0LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMTY1OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xMTY2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6NDkuMjU5NDcyOTAyWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NTYyMzYzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXAgaW4gbXkgZG9tYWluIG9mIGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgQ29tbWl0IENvbnRleHQqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGNoZWNraW5nIHRoZSBgZGFtb25fY29tbWl0X2N0eGAuIEkga25vdyBpdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlIG9mIHRoaXMgY29tbWl0IGFuZCB0aGUgdmFyaW91cyBjb250ZXh0dWFsIGFzcGVjdHMgdGhhdCBpbmZsdWVuY2UgdGhlIGN1cnJlbnQgb3BlcmF0aW9uLiBJJ20gZ29pbmcgdG8gc3RhcnQgdGhlcmUsIGRpdmUgaW50byB0aGUgZGV0YWlscyB3aXRoaW4gaXQsIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gSSBleHBlY3QuIEknbSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZW5kZWQgYWN0aW9ucy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LiBJdCdzIHRoZSBseW5jaHBpbiBvZiB1bmRlcnN0YW5kaW5nIHRoZSBwcmVzZW50IHN0YWdlIGFuZCBkZXRlcm1pbmluZyBteSBuZXh0IGFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NDQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1ODo1Mi4yMTU3MTE1NzRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTg1MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgZGFtb25fY29tbWl0X2N0eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTE4MTk9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg0Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTg0ODppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTg0OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU4OjUyLjI1OTMwMjM3MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDUwNDE3MTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgbWVudGFsIG1vZGVsIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3Q6IGBkYW1vbl9zeXNmc19jb21taXRfaW5wdXRgLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBvaW50IGZvciBhbnkgRHluYW1pYyBBZGFwdGl2ZSBNZW1vcnkgT3B0aW1pemVyIChEQU1PTikgc3lzdGVtIGludGVyYWN0aW5nIHdpdGggc3lzZnMsIGFuZCBpbiBwYXJ0aWN1bGFyIGEgZnVuY3Rpb24gbmFtZSB0aGF0IGxpa2VseSByZWxhdGVzIHRvIHRha2luZyB1c2VyIGlucHV0IGFuZCBjb25maWd1cmluZyB0aGUgbW9uaXRvcmluZy4gR2l2ZW4gdGhlIGZ1bmN0aW9uIG5hbWUsIEknZCBleHBlY3QgaXQgaXMgdGhlIHBvaW50IHdoZXJlIHRoZSBhY3R1YWwgbW9uaXRvcmluZyBjb25maWd1cmF0aW9uIGlzIGFwcGxpZWQgb3IgY29tbWl0dGVkLiBTcGVjaWZpY2FsbHksIEknZCBpbW1lZGlhdGVseSB3YW50IHRvIGNoZWNrOlxuXG4qICAgKipFcnJvciBIYW5kbGluZzoqKiBBcmUgdGhlcmUgcm9idXN0IGNoZWNrcyBvbiB0aGUgaW5wdXQgdmFsdWVzPyBBcmUgaW52YWxpZCBjb25maWd1cmF0aW9ucyBncmFjZWZ1bGx5IHJlamVjdGVkLCBvciBjYW4gdGhleSBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgY3Jhc2hlcz9cbiogICAqKkRhdGEgVmFsaWRhdGlvbjoqKiBBcmUgYWxsIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHRob3JvdWdobHkgdmFsaWRhdGVkIGFnYWluc3QgcmVhc29uYWJsZSByYW5nZXMgYW5kIGNvbnN0cmFpbnRzPyBTZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgZnJlcXVlbnRseSBhcmlzZSBoZXJlLlxuKiAgICoqQXRvbWljaXR5L0NvbmN1cnJlbmN5OioqIEhvdyBpcyB0aGlzIGZ1bmN0aW9uIHByb3RlY3RlZCBhZ2FpbnN0IGNvbmN1cnJlbnQgYWNjZXNzLCBlc3BlY2lhbGx5IGlmIGl0J3MgbW9kaWZ5aW5nIHNoYXJlZCBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byBEQU1PTidzIG9wZXJhdGlvbj8gQXJlIGxvY2tzIHVzZWQgYXBwcm9wcmlhdGVseSBhbmQgZWZmaWNpZW50bHk/IElzIHRoZXJlIHBvdGVudGlhbCBmb3IgcmFjZSBjb25kaXRpb25zIG9yIGRlYWRsb2Nrcz9cbiogICAqKlNpZGUgRWZmZWN0czoqKiBXaGF0IGFyZSB0aGUgYWN0dWFsIGltcGxpY2F0aW9ucyBvZiBjb21taXR0aW5nIHRoaXMgaW5wdXQ/IERvZXMgaXQgaW1tZWRpYXRlbHkgYWZmZWN0IG1vbml0b3JpbmcgYmVoYXZpb3I/IERvZXMgaXQgcmVxdWlyZSBhbnkgYmFja2dyb3VuZCB0YXNrcyB0byBiZSBsYXVuY2hlZCBvciBtb2RpZmllZD8gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCBvdGhlciBEQU1PTiBtb2R1bGVzIG9yIHN1YnN5c3RlbXM/XG4qICAgKipSZXNvdXJjZSBNYW5hZ2VtZW50OioqIEFyZSB0aGVyZSBhbnkgcmVzb3VyY2UgbGVha3MgcG9zc2libGUgZHVyaW5nIGNvbmZpZ3VyYXRpb24gdXBkYXRlcz8gQXJlIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgZGVhbGxvY2F0aW9ucyBoYW5kbGVkIGNvcnJlY3RseSB3aXRoaW4gdGhpcyBmdW5jdGlvbiwgZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgZXJyb3JzIGR1cmluZyB0aGUgY29tbWl0IHByb2Nlc3M/XG4qICAgKipEb2N1bWVudGF0aW9uOioqIEFyZSB0aGVyZSBnb29kIGNvbW1lbnRzIGFuZCBkb2N1bWVudGF0aW9uIGV4cGxhaW5pbmcgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMsIHdoYXQgaW5wdXRzIGFyZSBhY2NlcHRlZCwgYW5kIGFueSBsaW1pdGF0aW9ucyBvciBzaWRlIGVmZmVjdHM/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5hYmlsaXR5IGFuZCBkZWJ1Z2dpbmcuXG5cbk15IGltbWVkaWF0ZSBmb2xsb3ctdXAgd291bGQgYmUgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJ3MgY2FsbGVycyBhbmQgY2FsbGVlcyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIHdpZGVyIGFyY2hpdGVjdHVyZSBvZiBEQU1PTiBhbmQgdGhlIGtlcm5lbC4gSSdkIHRoZW4gZXhhbWluZSB0aGUgYWN0dWFsIGNvZGUgd2l0aCB0aG9zZSBxdWVzdGlvbnMgaW4gbWluZCwgY2hlY2tpbmcgZm9yIGFueSByZWQgZmxhZ3MsIG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzLCBvciBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODYyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6NTYuNzA5NzIxOFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NjQ3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vc3lzZnMuYz0yMTIyPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zeXNmc19idWlsZF9jdHgoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIxMzAtICovXFxubW0vZGFtb24vc3lzZnMuYzoyMTMxOnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0KHZvaWQgKmRhdGEpXFxubW0vZGFtb24vc3lzZnMuYy0yMTMyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTg6NTYuNzU2NTkxOTM5WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTcwMTM0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKlByaW9yaXRpemluZyBJbnZlc3RpZ2F0aW9uOiBTeXN0ZW0gQ2FsbHMgaW4gREFNT04qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIGNvZGUuIFRoZSBpbW1lZGlhdGUgb2JzZXJ2YXRpb24gaXMgdGhhdCBgZGFtb25fc3lzZnNfY29tbWl0X2lucHV0YCBpcyBkZWZpbmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBpdCdzIGxvY2FsaXplZCBhbmQgcHJvYmFibHkgbm90IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMuIEdpdmVuIHRoYXQgY29udGV4dCwgSSdtIGdvaW5nIHRvIHNoaWZ0IG15IGZvY3VzLiBNeSBzdXNwaWNpb24gaXMgdGhhdCBhIGZ1bmN0aW9uIGxpa2UgYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgLCBvciBzb21ldGhpbmcgc2ltaWxhciwgaXMgdGhlIG1vcmUgcmVsZXZhbnQgcGllY2Ugb2YgdGhlIHB1enpsZSB0byBkaWcgaW50byBmdXJ0aGVyLiBTaW5jZSBpdCBpcyBub24tc3RhdGljLCBpdCBpcyBsaWtlbHkgdGhlIGZ1bmN0aW9uIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlIHN5c2ZzIGxheWVyLiBUaGF0IHNob3VsZCBiZSBteSBuZXh0IHBvaW50IG9mIGZvY3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ2OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjAxLjY3MzYwNzk2M1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwOTg4ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9zeXNmcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MjMzND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnMoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjMtICovXFxubW0vZGFtb24vc3lzZnMuYzoyMzY0OnN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZChlbnVtIGRhbW9uX3N5c2ZzX2NtZCBjbWQsXFxubW0vZGFtb24vc3lzZnMuYy0yMzY1LVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTowMS43MjE3MTU2NzFaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTAyNzU4NTIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgYGRhbW9uX3N5c2ZzX2NtZF9zdG9yZWAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkYW1vbl9zeXNmc19jbWRfc3RvcmVgIGZ1bmN0aW9uLiBUaGUgbmFtZSBpdHNlbGYgaXMgcHJldHR5IGNsZWFyOyBpdCdzIHRoZSBzdG9yZSBmdW5jdGlvbiBmb3IgYSBjb21tYW5kIHdpdGhpbiB0aGUgYHN5c2ZzYCBpbnRlcmZhY2UgcmVsYXRlZCB0byBEQU1PTi4gQnV0IHRoYXQncyBqdXN0IHRoZSBzdXJmYWNlLiBXaGF0J3MgdGhlIGNvbnRleHQgaGVyZT8gV2hhdCBzcGVjaWZpYyBjb21tYW5kcyBpcyBpdCBoYW5kbGluZz8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIHRoaXMgaW50ZXJmYWNlPyBXaGF0IGtpbmQgb2YgZGF0YSBpcyBiZWluZyB3cml0dGVuLCBhbmQgd2hhdCB2YWxpZGF0aW9uIGlzIGluIHBsYWNlPyBJIGhvcGUgdGhlcmUncyBzb21lIGRlY2VudCBlcnJvciBjaGVja2luZy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgYSBwb3RlbnRpYWwgcG9pbnQgb2YgdnVsbmVyYWJpbGl0eTsgYSBzcG90IHNvbWVvbmUgY291bGQgZXhwbG9pdCB0byBtYW5pcHVsYXRlIERBTU9OIGluIHVuZXhwZWN0ZWQgd2F5cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHRob3JvdWdobHkgdG8gYXNzZXNzIGl0cyByb2J1c3RuZXNzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGxlcnMgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBEQU1PTiBpbmZyYXN0cnVjdHVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMuIFdoZXJlIGRvZXMgdGhpcyBmaXQgaW4gdGhlIGxhcmdlciBgc3lzZnNgIHN0cnVjdHVyZSB3aXRoaW4gdGhlIGtlcm5lbD8gSG93IGRvZXMgaXQgcmVsYXRlIHRvIG90aGVyIERBTU9OIGNvbnRyb2xzPyBUaGlzIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiwgb3IgYW55IHNpbWlsYXIgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtLCBvcGVyYXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OToxMC43NDkzMDM3OTNaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTg3Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgc3NpemVfdCBzdGF0ZV9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9zeXNmcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MjM2ND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yNDAzLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjQwNDpzdGF0aWMgc3NpemVfdCBzdGF0ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjQwNS1cXHRcXHRjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MTAuNzk1Mjk3MTUyWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODU4OTY3NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgREFNT04gQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhpcyBEQU1PTiBpbXBsZW1lbnRhdGlvbi4gRm9yIG5vdywgSSdtIGdvaW5nIHRvIGtlZXAgbXkgbWVudGFsIGZvY3VzIG9uIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGFuZCBgZGFtb25fY29tbWl0X2N0eGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGFyZWFzIEknbGwgYmUgZGlnZ2luZyBpbnRvLiBOb3csIGZvciB0aGUgY29uZmlndXJhdGlvbnMgdGhlbXNlbHZlcywgSSBuZWVkIHRvIGVuYWJsZSB0aGVzZSBzZXR0aW5nczogYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX0xSVV9TT1JUYCwgYW5kIGltcG9ydGFudGx5LCBgU0FNUExFX0RBTU9OX01USUVSYC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IGBTQU1QTEVfREFNT05fTVRJRVJgIGlzIGltcGxlbWVudGVkLiBJIHNob3VsZCBmaXJzdCBjaGVjayB3aGV0aGVyIGl04oCZcyBkZWZpbmVkIGFzIGEgbW9kdWxlIG9yIGEgYm9vbGVhbiwgc28gSSBjYW4gcGxhbiBteSBuZXh0IHN0ZXBzIGFjY29yZGluZ2x5LiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzE3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MTQuNDgxMTk3NTUyWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY4MjMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0FNUExFX0RBTU9OX01USUVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjE0LjUzNDg4NjY3MVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQyMjY2Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoZWNraW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0J3MgZGVhbGluZyB3aXRoIGEgYm9vbGVhbiwgYSBzaW1wbGUgYGJvb2xgLiBCdXQgaG9sZCBvbiwgdGhlIGNyaXRpY2FsIHZhcmlhYmxlIGhlcmUsIGBTQU1QTEVfREFNT05fTVRJRVJgLCBhcHBlYXJzIHRvIGJlIGNvbnRpbmdlbnQgb24gYm90aCBgREFNT05gIGFuZCBgREFNT05fUEFERFJgLiBUaGF0J3MgYSBwb3RlbnRpYWwgZGVwZW5kZW5jeSBjaGFpbiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZC4gQmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHZhcmlhYmxlcyBvciBjb25kaXRpb25zIGltcGFjdGluZyBgU0FNUExFX0RBTU9OX01USUVSYC4gR290dGEgYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSB0aGluZ3MgdG8gYXZvaWQgYnJlYWtpbmcgc29tZXRoaW5nIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDcyMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjE4LjI3NzE1NjI3OVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjkyMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjE4LjI3NzI4Nzc3OVoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAwNjc3NzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2s6IGBTQU1QTEVTYCoqXG5cbk9rYXksIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGZvciBgU0FNUExFU2AuIEl0J3MgYSBrZXkgY29tcG9uZW50LCBzbyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBjdXJyZW50IHN0YXRlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBpdHMgZGlyZWN0IGFuZCBpbmRpcmVjdCBkZXBlbmRlbmNpZXMsIGVuc3VyaW5nIHRoZXJlIGFyZSBubyBvYnZpb3VzIGNvbmZsaWN0cyBvciBvdXRkYXRlZCB2ZXJzaW9ucyB0aGF0IGNvdWxkIGludHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgYnJlYWtpbmcgY2hhbmdlcyBvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgdGhhdCBtaWdodCBiZSBtYXNrZWQgd2l0aGluIHRoZSB3aWRlciBjb2RlIGJhc2UuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLCBhcyBhIHBvb3JseSBtYW5hZ2VkIGRlcGVuZGVuY3kgaGVyZSBjYW4gcHJvcGFnYXRlIGlzc3VlcyB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEknbGwgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB3aGV0aGVyIHRoZSBwcm9qZWN0J3MgYnVpbGQgc3lzdGVtIGhhcyBwcm9wZXJseSByZXNvbHZlZCBpdCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcGVuZGluZyB1cGRhdGVzIG9yIGRlcHJlY2F0aW9ucyBmbGFnZ2VkLiBVbHRpbWF0ZWx5LCB0aGUgc3RhYmlsaXR5IG9mIGBTQU1QTEVTYCBkaXJlY3RseSBpbXBhY3RzIHRoZSByZWxpYWJpbGl0eSBvZiB0aGUgZW50aXJlIHByb2R1Y3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTA5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OToyMS44Nzc5Njg4NTJaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjkzNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5zYW1wbGVzL0tjb25maWc6MjptZW51Y29uZmlnIFNBTVBMRVNcXG5zYW1wbGVzL0tjb25maWctMy1cXHRib29sIFxcXCJTYW1wbGUga2VybmVsIGNvZGVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjIxLjkyODY2OTkxMVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzNzYwMjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBTQU1QTEVTYCBlbmFibGVkLCBvdGhlcndpc2UsIGBTQU1QTEVfREFNT05fTVRJRVJgIHdvbid0IGZ1bmN0aW9uLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkLCBub3RoaW5nIHN1cnByaXNpbmcgdGhlcmUuIE5leHQsIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgZm9yIGBEQU1PTl9MUlVfU09SVGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBoYXMgdGhlIHByZXJlcXVpc2l0ZXMgaXQgbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBvciBzZXR0aW5ncyBuZWVkIHRvIGJlIGluIHBsYWNlLiBJZiBzb21ldGhpbmcgaXMgbWlzc2luZywgSSB3aWxsIGhhdmUgdG8gZmlndXJlIG91dCBhIHdvcmsgYXJvdW5kIG9yIGRlY2lkZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBub3QgaWRlYWwgaW4gdGhpcyBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1Mzk1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MjQuODcyNDM0MDQzWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTAwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAwOlxcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbiAxMDE6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG4gMTAyOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gMTAzOlxcdFxcdGhlbHBcXG4gMTA0OlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXFxuIDEwNTpcXHRcXHQgIHByb3RlY3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAoaG90KSBwYWdlcyB3aGlsZSByYXJlbHkgYWNjZXNzZWQgKGNvbGQpXFxuIDEwNjpcXHRcXHQgIHBhZ2VzIHJlY2xhaW1lZCBmaXJzdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuXFxuIDEwNzpcXHRcXG4gMTA4OlxcdGNvbmZpZyBEQU1PTl9TVEFUXFxuIDEwOTpcXHRcXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OToyNC44NzI1MTQwNDNaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5NzQyMTM4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBEQU1PTiBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gYERBTU9OX0xSVV9TT1JUYCBjbGVhcmx5IHJlbGllcyBvbiBgREFNT05fUEFERFJgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBCZWZvcmUgZGl2aW5nIGRlZXBlciwgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBsYXkgb2YgdGhlIGxhbmQsIGFuZCByZWZyZXNoIG91ciBrbm93bGVkZ2Ugb2YgdGhlIGJhc2UgY29tcG9uZW50cy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgZm9yIGBEQU1PTl9QQUREUmAuIE5vIHVzZSBnb2luZyBkb3duIHRoZSByYWJiaXQgaG9sZSBvZiB0aGUgTFJVIHNvcnQgaWYgdGhlIGZvdW5kYXRpb24gaXMgdW5zdGFibGUuIExldCdzIHRyYWNlIGl0IGJhY2sgYW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGxpbmVzIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc4OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MjkuMjY5OTM4NzIzWiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDc6XFx0Y29uZmlnIERBTU9OX1BBRERSXFxuICA0ODpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDUwOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbiAgNTE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXFxuICA1NDpcXHRcXHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OToyOS4yNzAwMTQ5MTNaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NDc2NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgU3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBEQU1PTl9QQUREUmAgaXMgaW5oZXJlbnRseSB0aWVkIHRvIGJvdGggYERBTU9OYCAodGhlIER5bmFtaWMgQWNjZXNzIE1vbml0b3JpbmcgYW5kIE9wdGltaXphdGlvbiBvZiBNZW1vcnkgcGFnZXMpIGFuZCB0aGUgYE1NVWAgKE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQpLiBUaGF0J3Mgbm90IHN1cnByaXNpbmc7IHBhZ2UtbGV2ZWwgYWNjZXNzIG1vbml0b3JpbmcsIGFzIGBEQU1PTmAgZG9lcywgbmVlZHMgdG8gdW5kZXJzdGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgYW5kIGhvdyB0aGUgTU1VIHRyYW5zbGF0ZXMgdGhvc2UgdG8gdmlydHVhbCBvbmVzLiBJdOKAmXMgcHJldHR5IGZ1bmRhbWVudGFsLlxuXG5Ob3csIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgc2VlIHdoYXQgdGhlIHN0b3J5IGlzIHdpdGggYERBTU9OX1NZU0ZTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBTeXNGUyBpbnRlcmZhY2UsIGlmIGVuYWJsZWQsIGludGVycGxheXMgd2l0aCB0aGVzZSBjb3JlIGNvbXBvbmVudHMuIEl0J3Mgb2Z0ZW4gdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlLCBzbyBrbm93aW5nIGhvdyBpdCBjb25uZWN0cyB0byB0aGUgaW50ZXJuYWxzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGNhbiBiZSBjb250cm9sbGVkLCBtb25pdG9yZWQsIGFuZCB0d2Vha2VkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTMxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTozMi42MjQ3ODI0NzNaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2OCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2ODpcXHRjb25maWcgREFNT05fU1lTRlNcXG4gIDY5OlxcdFxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4gIDcwOlxcdFxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgU1lTRlNcXG4gIDcxOlxcdFxcdGRlZmF1bHQgREFNT05cXG4gIDcyOlxcdFxcdGhlbHBcXG4gIDczOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3IgREFNT04uICBUaGUgdXNlciBzcGFjZSBjYW4gdXNlXFxuICA3NDpcXHRcXHQgIHRoZSBpbnRlcmZhY2UgZm9yIGFyYml0cmFyeSBkYXRhIGFjY2VzcyBtb25pdG9yaW5nLlxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbiAgNzc6XFx0XFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjMyLjYyNDg2NzAxM1oiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg4NDI5MjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIERBTU9OX1NZU0ZTIERlcGVuZGVuY3kgVHJlZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBEQU1PTl9TWVNGU2AgaXMgYnVpbHQgb24gYm90aCBgREFNT05gIGFuZCBgU1lTRlNgLiBOb3QgdW5leHBlY3RlZCwgcmVhbGx5LiBTZWVtcyBsb2dpY2FsIHRoYXQgYSBzeXNmcyBpbnRlcmZhY2UgZm9yIGEgbWVtb3J5IG1vbml0b3Jpbmcgc3lzdGVtIHdvdWxkIG5lZWQgYm90aCB0aGUgY29yZSBtb25pdG9yaW5nIG1lY2hhbmlzbSAoYERBTU9OYCkgYW5kIHRoZSBrZXJuZWwncyBmaWxlIHN5c3RlbSBpbnRlcmZhY2UgKGBTWVNGU2ApLiBOb3csIHRvIGJlIHJpZ29yb3VzLCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERBTU9OYCBpdHNlbGYuIExldCdzIHNlZSB3aGF0IHRoYXQgbG9va3MgbGlrZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxhdGlvbnNoaXBzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU2MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6MzUuNTEzMjk4OTA3WiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgNTpcXHRjb25maWcgREFNT05cXG4gICA2OlxcdFxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxcbiAgIDk6XFx0XFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcXG4gIDEwOlxcdFxcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcXG4gIDEzOlxcdFxcdCAgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTozNS41MTMzNzE0NjdaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE5MTM0ODY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgREFNT04gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIHN0cmFpZ2h0Zm9yd2FyZDogaXQncyBhbGwgYWJvdXQgaGFuZGxpbmcgYSBwb3RlbnRpYWwgZGl2aXNpb24tYnktemVybyBzY2VuYXJpbyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIGEgY2hlY2sgaW4gYGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsYC4gU3BlY2lmaWNhbGx5LCBpdCBtYWtlcyBzdXJlIGBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlYCBpc24ndCB6ZXJvOyBpZiBpdCBpcywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIHByZXZlbnRzIHRoYXQgemVybyBmcm9tIGNhdXNpbmcgcHJvYmxlbXMgaW4gYGRhbW9zX3F1b3RhX3Njb3JlYCwgd2hpY2ggaXMgYSBjbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyB0ZWNobmlxdWUuXG5cblRoZSBmYWN0IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgZXhwb3NlZCB0aHJvdWdoIHN5c2ZzIGFuZCBpbXBhY3QgZnVuY3Rpb25zIGxpa2UgYGRhbW9uX2xydV9zb3J0YCBhbmQgYGRhbW9uX3NhbXBsZV9tdGllcmAgbWVhbnMgdGhpcyBpc24ndCBqdXN0IGFuIGludGVybmFsIGRldGFpbDsgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQncyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlLiBHaXZlbiB0aGF0IGl0J3MgYSBidWcgcHJldmVudGlvbiBtZWFzdXJlLCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlJ2Qgd2FudCB0byBmdXp6LiBXZSBkb24ndCB3YW50IGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBmcm9tIHN1Y2ggYSBwYXRjaC5cblxuTXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IGZvY3VzZXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgIGFuZCBgZGFtb25fY29tbWl0X2N0eGAuIEkgbmVlZCB0byBjb25maXJtIHRoZXNlIGFyZW4ndCBzdGF0aWMgZnVuY3Rpb25zLCB3aGljaCB3b3VsZCBsaW1pdCB0aGVpciBzY29wZS4gWWVwLCBhIHF1aWNrIGxvb2sgY29uZmlybXMgYm90aCBhcmUgbm9uLXN0YXRpYzogYGludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKWAgYW5kIGBpbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylgLiBUaGF0J3MgZ29vZDsgaXQgY29uZmlybXMgdGhhdCB0aGV5IGhhdmUgdGhlIHBvdGVudGlhbCB0byBiZSBjYWxsZWQgZnJvbSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGtlcm5lbCwgc28gdGhpcyBjaGFuZ2UncyBpbXBhY3QgaXMgd2lkZXIuXG5cbkFsc28sIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGUgcmVsZXZhbnQgY29uZmlnczogYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX0xSVV9TT1JUYCwgYFNBTVBMRVNgLCBhbmQgYFNBTVBMRV9EQU1PTl9NVElFUmAgZm9yIHRlc3RpbmcuXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIFRoZSByZXN1bHRzIHdpbGwgYmUgc2V0IGFzIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5MTEsIk91dHB1dFRva2VucyI6MTkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDU6NTk6NDIuNzA0NzIzOTk0WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwMTQ3NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gYnVnIGluIGBkYW1vc19xdW90YV9zY29yZWAgYnkgcmV0dXJuaW5nIGAtRUlOVkFMYCBmcm9tIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgaWYgYHNyYy1cXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyAwLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIGFzIHdlbGwgYXMgdGhyb3VnaCB0aGUgREFNT04gTFJVIHNvcnQgYW5kIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGVzLiBUaGUgY2hhbmdlIGlzIGZ1bmN0aW9uYWwgYW5kIHByZXZlbnRzIGEga2VybmVsIHBhbmljLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gYnVnIGluIGBkYW1vc19xdW90YV9zY29yZWAgYnkgcmV0dXJuaW5nIGAtRUlOVkFMYCBmcm9tIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbGAgaWYgYHNyYy1cXHUwMDNldGFyZ2V0X3ZhbHVlYCBpcyAwLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIGFzIHdlbGwgYXMgdGhyb3VnaCB0aGUgREFNT04gTFJVIHNvcnQgYW5kIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGVzLiBUaGUgY2hhbmdlIGlzIGZ1bmN0aW9uYWwgYW5kIHByZXZlbnRzIGEga2VybmVsIHBhbmljLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTo0Mi43ODQ3NDcxNTFaIiwiU2VxIjo2NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MjI3MjYwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNTo1OTo0Mi43ODUyNTEzNzFaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzgyMjIxNjk2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgdGFyZ2V0X3ZhbHVlYCBpbiBgZGFtb3NfcXVvdGFfZ29hbGAgc3RydWN0dXJlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gSXQgY2VudHJhbGl6ZXMgdGhlIGNoZWNrIGZvciB6ZXJvIGB0YXJnZXRfdmFsdWVgIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVtb3ZlcyByZWR1bmRhbnQgY2hlY2tzIGZyb20gb3RoZXIgcGxhY2VzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGZpZWxkcyBpbnRyb2R1Y2VkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMsIG1lbW9yeSBsZWFrcywgb3IgY3Jhc2hlcyAobGlrZSBkaXZpc2lvbiBieSB6ZXJvKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBLQVNBTiwgb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YjNmMmM4OGY3OTM0M2EwYjk3ZGQ5ZDg4MjQ1ZmEzNjgyZGY0NWNlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDU6NTc6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDY0NGRhZjVhMTY1NjAuLmMyMDRmNjkwN2M1MTUgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTExMzYsMTUgKzExMzYsMTggQEAgc3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxuK3N0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG4gXHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG4ge1xuK1x0aWYgKCFzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlKVxuK1x0XHRyZXR1cm4gIC1FSU5WQUw7XG4gXHRkc3QtXHUwMDNlbWV0cmljID0gc3JjLVx1MDAzZW1ldHJpYztcbiBcdGRzdC1cdTAwM2V0YXJnZXRfdmFsdWUgPSBzcmMtXHUwMDNldGFyZ2V0X3ZhbHVlO1xuIFx0aWYgKGRzdC1cdTAwM2VtZXRyaWMgPT0gREFNT1NfUVVPVEFfVVNFUl9JTlBVVClcbiBcdFx0ZHN0LVx1MDAzZWN1cnJlbnRfdmFsdWUgPSBzcmMtXHUwMDNlY3VycmVudF92YWx1ZTtcbiBcdC8qIGtlZXAgbGFzdF9wc2lfdG90YWwgYXMgaXMsIHNpbmNlIGl0IHdpbGwgYmUgdXBkYXRlZCBpbiBuZXh0IGN5Y2xlICovXG4gXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihkc3QsIHNyYyk7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gLyoqXG5AQCAtMTE2MiwxNCArMTE2NSwxNyBAQCBzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbiBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbiB7XG4gXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0X2dvYWwsICpuZXh0LCAqc3JjX2dvYWwsICpuZXdfZ29hbDtcbi1cdGludCBpID0gMCwgaiA9IDA7XG4rXHRpbnQgaSA9IDAsIGogPSAwLCBlcnI7XG4gXG4gXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZHN0X2dvYWwsIG5leHQsIGRzdCkge1xuIFx0XHRzcmNfZ29hbCA9IGRhbW9zX250aF9xdW90YV9nb2FsKGkrKywgc3JjKTtcbi1cdFx0aWYgKHNyY19nb2FsKVxuLVx0XHRcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKGRzdF9nb2FsLCBzcmNfZ29hbCk7XG4tXHRcdGVsc2VcbitcdFx0aWYgKHNyY19nb2FsKSB7XG4rXHRcdFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTtcbitcdFx0XHRpZiAoZXJyKVxuK1x0XHRcdFx0cmV0dXJuIGVycjtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZHN0X2dvYWwpO1xuK1x0XHR9XG4gXHR9XG4gXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoc3JjX2dvYWwsIG5leHQsIHNyYykge1xuIFx0XHRpZiAoaisrIFx1MDAzYyBpKVxuQEAgLTExNzgsNyArMTE4NCwxMSBAQCBpbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbiBcdFx0XHRcdHNyY19nb2FsLVx1MDAzZW1ldHJpYywgc3JjX2dvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKTtcbiBcdFx0aWYgKCFuZXdfZ29hbClcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTtcbitcdFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTtcbitcdFx0aWYgKGVycikge1xuK1x0XHRcdGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChuZXdfZ29hbCk7XG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0fVxuIFx0XHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcbiBcdH1cbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCBiZDg0NzgyOWE5OTA3Li43ZGY0NWY5YTBiM2FlIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xuKysrIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuQEAgLTIzMyw4ICsyMzMsNiBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXG4gXG4gXHRpZiAoIWFjdGl2ZV9tZW1fYnApXG4gXHRcdHJldHVybiAwO1xuLVx0aWYgKDEwMDAwIFx1MDAzYyBhY3RpdmVfbWVtX2JwKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQLCBhY3RpdmVfbWVtX2JwKTtcbiBcdGlmICghZ29hbClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5pbmRleCBkMTEyM2ViYmZhYjkwLi5hYzljMjRiOTJlYWQ4IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbkBAIC0xNTYsOSArMTU2LDYgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxuIFx0aWYgKCFzY2hlbWUpXG4gXHRcdGdvdG8gZnJlZV9vdXQ7XG4gXHRkYW1vbl9zZXRfc2NoZW1lcyhjdHgsIFx1MDAyNnNjaGVtZSwgMSk7XG4tXHQvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovXG4tXHRpZiAoIW5vZGUwX21lbV91c2VkX2JwIHx8ICFub2RlMF9tZW1fZnJlZV9icClcbi1cdFx0Z290byBmcmVlX291dDtcbiBcdHF1b3RhX2dvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChcbiBcdFx0XHRwcm9tb3RlID8gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCA6XG4gXHRcdFx0REFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjQyLjc4NTI1MjQ3MVoiLCJTZXEiOjY3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODIyMTk1NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGZvY3VzZWQgb24gdGlnaHRlbmluZyB1cCBzb21lIHZhbGlkYXRpb24gYW5kIGVycm9yIGhhbmRsaW5nIHJlbGF0ZWQgdG8gaG93IGB0YXJnZXRfdmFsdWVgIGlzIHVzZWQgaW4gdGhlIERBTU9OIG1lbW9yeSBtYW5hZ2VtZW50IHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZHJlc3NpbmcgcG90ZW50aWFsIGRpdmlzaW9uLWJ5LXplcm8gaXNzdWVzLCBlaXRoZXIgZGlyZWN0bHkgaW4gYGRhbW9zX3F1b3RhX3N0b3JlKClgIG9yIG90aGVyIGZ1bmN0aW9ucyB3aGVyZSBgdGFyZ2V0X3ZhbHVlYCBpcyB1c2VkLCBvciBjb25zb2xpZGF0aW5nIHRoZSBjaGVjayBpbiBvbmUgcGxhY2UuXG5cbkkgc2VlIHRoZSBjb3JlIGNoYW5nZSBpcyBpbiBgbW0vZGFtb24vY29yZS5jYCB3aGVyZSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgIG5vdyBleHBsaWNpdGx5IHJldHVybnMgYW4gZXJyb3IgaWYgYHNyYy1cdTAwM2V0YXJnZXRfdmFsdWVgIGlzIHplcm8uIFRoZSBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzYCBmdW5jdGlvbiBpcyBhbHNvIGJlaW5nIG1vZGlmaWVkIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhpcyBuZXcgZXJyb3IuIEl0J3MgYWxzbyByZW1vdmluZyBzb21lIHJlZHVuZGFudCBjaGVja3MgaW4gYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2Agd2l0aGluIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC5cblxuTXkgcHJpbWFyeSBjb25jZXJuLCBhcyBhbHdheXMgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2VzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBub3cgYWRkcyBhIGNoZWNrIGZvciBhIHplcm8gYHRhcmdldF92YWx1ZWAgdXNpbmcgYGlmICghc3JjLVx1MDAzZXRhcmdldF92YWx1ZSkgcmV0dXJuIC1FSU5WQUw7YCBpbiBgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxgLiBCdXQgYWZ0ZXIgYSBjbG9zZSByZWFkLCBJIHNlZSBubyBuZXcgYWxsb2NhdGlvbnMgb3IgZmllbGRzIGJlaW5nIGFkZGVkLiBUaGVzZSBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hhbmdlcyBhbmQgZXJyb3ItaGFuZGxpbmcgbW9kaWZpY2F0aW9ucy4gU28sIGFmdGVyIGEgcXVpY2sgbWVudGFsIHRyYWNlIHRocm91Z2ggdGhlIGV4ZWN1dGlvbiBwYXRocyBhZmZlY3RlZCwgSSdtIGNvbmZpZGVudCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCBhbmQgZG9uJ3QgZXhwb3NlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgbW9kaWZpY2F0aW9ucyAtIGlucHV0IHZhbGlkYXRpb24gYW5kIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGxhY2sgb2YgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUsIEknbSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBmYWxzZS4gVGhlIHBhdGNoIGlzIHNvdW5kIGluIHRoaXMgcmVnYXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM3LCJPdXRwdXRUb2tlbnMiOjE2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA1OjU5OjUwLjYwNzQ1MTU3OVoiLCJTZXEiOjY4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGZvciBgdGFyZ2V0X3ZhbHVlYCBpbiBgZGFtb3NfcXVvdGFfZ29hbGAgc3RydWN0dXJlcyB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbS4gSXQgY2VudHJhbGl6ZXMgdGhlIGNoZWNrIGZvciB6ZXJvIGB0YXJnZXRfdmFsdWVgIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVtb3ZlcyByZWR1bmRhbnQgY2hlY2tzIGZyb20gb3RoZXIgcGxhY2VzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGZpZWxkcyBpbnRyb2R1Y2VkIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMsIG1lbW9yeSBsZWFrcywgb3IgY3Jhc2hlcyAobGlrZSBkaXZpc2lvbiBieSB6ZXJvKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBLQVNBTiwgb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgZm9yIGB0YXJnZXRfdmFsdWVgIGluIGBkYW1vc19xdW90YV9nb2FsYCBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBJdCBjZW50cmFsaXplcyB0aGUgY2hlY2sgZm9yIHplcm8gYHRhcmdldF92YWx1ZWAgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCByZW1vdmVzIHJlZHVuZGFudCBjaGVja3MgZnJvbSBvdGhlciBwbGFjZXMuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZmllbGRzIGludHJvZHVjZWQgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycywgbWVtb3J5IGxlYWtzLCBvciBjcmFzaGVzIChsaWtlIGRpdmlzaW9uIGJ5IHplcm8pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcsIEtBU0FOLCBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[1] Phase: Succeeded StartedAt: 2026-08-13 06:00:02 +0000 UTC FinishedAt: 2026-08-13 06:00:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 06:00:02 +0000 UTC FinishedAt: 2026-08-13 06:00:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2] Phase: Succeeded StartedAt: 2026-08-13 06:00:02 +0000 UTC FinishedAt: 2026-08-13 09:49:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:00:02 +0000 UTC FinishedAt: 2026-08-13 09:49:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:00:02 +0000 UTC FinishedAt: 2026-08-13 06:00:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:00:02 +0000 UTC FinishedAt: 2026-08-13 06:00:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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-workflowp5b4j/series-workflowp5b4j-convert-artifact-1457622985/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:00:12 +0000 UTC FinishedAt: 2026-08-13 06:21:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:00:12 +0000 UTC FinishedAt: 2026-08-13 06:21:18 +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:*da741cdc-072e-457b-bbb4-991c21ea0722,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-workflowp5b4j/series-workflowp5b4j-convert-artifact-1457622985/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": "d24ba40b-f735-4572-ac10-f7a23774d3ef", "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-workflowp5b4j/series-workflowp5b4j-build-action-3051556519/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:00:12 +0000 UTC FinishedAt: 2026-08-13 06:21:08 +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:*da741cdc-072e-457b-bbb4-991c21ea0722,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-workflowp5b4j/series-workflowp5b4j-convert-artifact-1457622985/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": "d24ba40b-f735-4572-ac10-f7a23774d3ef", "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-workflowp5b4j/series-workflowp5b4j-build-action-3051556519/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:21:18 +0000 UTC FinishedAt: 2026-08-13 06:21:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:21:18 +0000 UTC FinishedAt: 2026-08-13 06:21:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:21:18 +0000 UTC FinishedAt: 2026-08-13 06:21:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:21:18 +0000 UTC FinishedAt: 2026-08-13 06:21:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-workflowp5b4j/series-workflowp5b4j-convert-artifact-1618192092/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:21:28 +0000 UTC FinishedAt: 2026-08-13 06:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:21:28 +0000 UTC FinishedAt: 2026-08-13 06:23:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d24ba40b-f735-4572-ac10-f7a23774d3ef,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-workflowp5b4j/series-workflowp5b4j-build-action-3051556519/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-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:23:46 +0000 UTC FinishedAt: 2026-08-13 06:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:23:46 +0000 UTC FinishedAt: 2026-08-13 06:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:23:46 +0000 UTC FinishedAt: 2026-08-13 06:45:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:23:46 +0000 UTC FinishedAt: 2026-08-13 06:45:08 +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:*da741cdc-072e-457b-bbb4-991c21ea0722,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-workflowp5b4j/series-workflowp5b4j-convert-artifact-1618192092/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": "65dc1fda-de66-4b11-a36d-03922419549f", "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-workflowp5b4j/series-workflowp5b4j-build-action-1931111224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:23:46 +0000 UTC FinishedAt: 2026-08-13 06:44:43 +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:*da741cdc-072e-457b-bbb4-991c21ea0722,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-workflowp5b4j/series-workflowp5b4j-convert-artifact-1618192092/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": "65dc1fda-de66-4b11-a36d-03922419549f", "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-workflowp5b4j/series-workflowp5b4j-build-action-1931111224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:45:08 +0000 UTC FinishedAt: 2026-08-13 06:45:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:45:08 +0000 UTC FinishedAt: 2026-08-13 06:45:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:45:08 +0000 UTC FinishedAt: 2026-08-13 06:47:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:45:08 +0000 UTC FinishedAt: 2026-08-13 06:47:14 +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:*65dc1fda-de66-4b11-a36d-03922419549f,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-workflowp5b4j/series-workflowp5b4j-build-action-1931111224/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-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:24 +0000 UTC FinishedAt: 2026-08-13 09:49:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:24 +0000 UTC FinishedAt: 2026-08-13 09:49:23 +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":["damos_commit_quota_goals","damon_commit_ctx"],"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:*d24ba40b-f735-4572-ac10-f7a23774d3ef,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*65dc1fda-de66-4b11-a36d-03922419549f,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-workflowp5b4j/series-workflowp5b4j-build-action-3051556519/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-workflowp5b4j/series-workflowp5b4j-build-action-1931111224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:24 +0000 UTC FinishedAt: 2026-08-13 06:47:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:24 +0000 UTC FinishedAt: 2026-08-13 06:47:31 +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":["damos_commit_quota_goals","damon_commit_ctx"],"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-workflowp5b4j/series-workflowp5b4j-convert-artifact-2420004517/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:24 +0000 UTC FinishedAt: 2026-08-13 06:47:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:24 +0000 UTC FinishedAt: 2026-08-13 06:47:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:25 +0000 UTC FinishedAt: 2026-08-13 06:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:35 +0000 UTC FinishedAt: 2026-08-13 09:49:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp5b4j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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":["damos_commit_quota_goals","damon_commit_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9eba1ecd48e4d85eacdb2a351de4f8cc1527c395","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"7ca26948-a40a-48c4-b654-c2c6d6487f05","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-08-13 06:47:35 +0000 UTC FinishedAt: 2026-08-13 09:49:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d24ba40b-f735-4572-ac10-f7a23774d3ef,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*65dc1fda-de66-4b11-a36d-03922419549f,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-workflowp5b4j/series-workflowp5b4j-build-action-3051556519/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-workflowp5b4j/series-workflowp5b4j-build-action-1931111224/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-workflowp5b4j/series-workflowp5b4j-convert-artifact-2420004517/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,}