Name: series-workflowglwvc Phase: Succeeded StartedAt: 2026-07-13 21:24:12 +0000 UTC FinishedAt: 2026-07-14 01:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[0] Phase: Succeeded StartedAt: 2026-07-13 21:24:12 +0000 UTC FinishedAt: 2026-07-13 21:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 21:24:12 +0000 UTC FinishedAt: 2026-07-13 21:45:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_EVENTS", "NF_CONNTRACK_AMANDA", "NF_CONNTRACK_FTP", "NF_CONNTRACK_IRC", "NF_CONNTRACK_TFTP", "NF_CONNTRACK_NETBIOS_NS", "NF_CONNTRACK_SNMP", "NF_CT_NETLINK", "NF_NAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_EVENTS", "NF_CONNTRACK_AMANDA", "NF_CONNTRACK_FTP", "NF_CONNTRACK_IRC", "NF_CONNTRACK_TFTP", "NF_CONNTRACK_NETBIOS_NS", "NF_CONNTRACK_SNMP", "NF_CT_NETLINK", "NF_NAT" ], "series_id": "aeb64e34-1a72-4d14-8009-2e407f82c084" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "amanda_help", "nf_conntrack_broadcast_help", "nf_ct_expect_event_report", "nf_ct_expect_init", "ctnetlink_alloc_expect", "tftp_help", "nf_nat_ftp" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19FVkVOVFMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0FNQU5EQSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfRlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19JUkMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1RGVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX05FVEJJT1NfTlMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NOTVAmIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbWFuZGFfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAmIzM0OywKICAgICYjMzQ7bmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydCYjMzQ7LAogICAgJiMzNDtuZl9jdF9leHBlY3RfaW5pdCYjMzQ7LAogICAgJiMzNDtjdG5ldGxpbmtfYWxsb2NfZXhwZWN0JiMzNDssCiAgICAmIzM0O3RmdHBfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfZnRwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyAoYW1hbmRhLCBmdHAsIGlyYywgdGZ0cCwgYnJvYWRjYXN0LCBuZXRsaW5rKSBhbmQgdGhlIGV4cGVjdGF0aW9uL2V2ZW50IGNhY2hlIGxvZ2ljLiBJdCBjYWNoZXMgYGV2ZW50X21hc2tgIGluIHRoZSBleHBlY3RhdGlvbiBvYmplY3QgYXQgY3JlYXRpb24gdGltZSBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQgdXAgZnJvbSB0aGUgbWFzdGVyIGNvbm5lY3Rpb24mIzM5O3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNlMWYwNWZhMDQ5OTliMDMwNDYxZGJhNWY1ZjY1MGQ4ZWU1ZGMwYTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAyMTo0MTo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmhcbmluZGV4IDE3MTk5ODdlOGZkODM4Li5kZWI1NjBiYjc5YzQzMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5oXG5AQCAtOSw2ICYjNDM7OSw3IEBAXG4gXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfYW1hbmRhX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgICAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oXG5pbmRleCA3YjYyNDQ2Y2NlYzRmNC4uNzEyNzAyMTgzYjk0NzMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuaFxuQEAgLTI4LDYgJiM0MzsyOCw3IEBAIHN0cnVjdCBuZl9jdF9mdHBfbWFzdGVyIHtcbiAgKiBjb25uZWN0aW9uIHdlIHNob3VsZCBleHBlY3QuICovXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfZnRwX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdCAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgIGVudW0gbmZfY3RfZnRwX3R5cGUgdHlwZSxcbiBcdFx0ICAgdW5zaWduZWQgaW50IHByb3RvZmYsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oXG5pbmRleCBjZTA3MjUwYWZiNGU5ZS4uYzczYjNiNDRhMGI3ZWYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaFxuQEAgLTEwLDYgJiM0MzsxMCw3IEBAXG4gXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfaXJjX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdCAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbmluZGV4IGUzZDE3MzljNTU3ZDE1Li44MDJjYjdmYzE5Y2RlYyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbkBAIC0xOSw2ICYjNDM7MTksNyBAQCBzdHJ1Y3QgdGZ0cGhkciB7XG4gXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfdGZ0cF9ob29rX2ZuKHN0cnVjdCBza19idWZmICpza2IsXG4mIzQzO1x0XHQgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHQgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgICBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxuaW5kZXggYzAyNDM0NWM5YmQ4NjIuLjVkMGY1YjJmMTJhNzI0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxuQEAgLTQyLDYgJiM0Mzs0Miw5IEBAIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0IHtcbiBcdC8qIEV4cGVjdGF0aW9uIGNsYXNzICovXG4gXHR1bnNpZ25lZCBpbnQgY2xhc3M7XG4gXG4mIzQzO1x0LyogRXZlbnQgZmlsdGVyIG1hc2sgKi9cbiYjNDM7XHR1MTYgZXZlbnRfbWFzaztcbiYjNDM7XG4gXHQvKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIHNldHVwIGFuZCBpbnNlcnRpb24gKi9cbiBcdHZvaWQgKCpleHBlY3Rmbikoc3RydWN0IG5mX2Nvbm4gKm5ldyxcbiBcdFx0XHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmNcbmluZGV4IDA2ZDZlYzEyYzg2ZGZhLi4xNGFlNjYwNDkxZjM2MCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuY1xuQEAgLTE1MSw3ICYjNDM7MTUxLDcgQEAgc3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0XHRuZl9uYXRfYW1hbmRhID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9hbWFuZGFfaG9vayk7XG4gXHRcdGlmIChuZl9uYXRfYW1hbmRhIFx1MDAyNlx1MDAyNiBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSylcbi1cdFx0XHRyZXQgPSBuZl9uYXRfYW1hbmRhKHNrYiwgY3RpbmZvLCBwcm90b2ZmLFxuJiM0MztcdFx0XHRyZXQgPSBuZl9uYXRfYW1hbmRhKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZixcbiBcdFx0XHRcdFx0ICAgIG9mZiAtIGRhdGFvZmYsIGxlbiwgZXhwKTtcbiBcdFx0ZWxzZSBpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XG4gXHRcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jXG5pbmRleCA2ZmY5NTRmMWJmYjg3Yy4uMDkyMmUzMGI2YWIwNzAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNcbkBAIC0xNCw2ICYjNDM7MTQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oXHUwMDNlXG4gXG4gaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0c3RydWN0IG5mX2Nvbm4gKmN0LFxuQEAgLTI3LDYgJiM0MzsyOCw3IEBAIGludCBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xuIFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xuIFx0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscCA9IG5mY3RfaGVscChjdCk7XG4mIzQzO1x0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcbiBcdF9fYmUzMiBtYXNrID0gMDtcbiBcbiBcdGlmICghaGVscClcbkBAIC03OSw2ICYjNDM7ODEsMTAgQEAgaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuICNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXG4gXHRleHAtXHUwMDNlem9uZSA9IGN0LVx1MDAzZXpvbmU7XG4gI2VuZGlmXG4mIzQzO1x0ZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpO1xuJiM0MztcdGlmIChlY2FjaGUpXG4mIzQzO1x0XHRleHAtXHUwMDNlZXZlbnRfbWFzayA9IGVjYWNoZS1cdTAwM2VleHBtYXNrO1xuJiM0MztcbiBcdG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCk7XG4gXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xuaW5kZXggOWRmMTU5NDQ4Yjg5NzkuLjRjN2QxNzk5MTU4ZDJhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXG5AQCAtMjQ1LDcgJiM0MzsyNDUsNiBAQCB2b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXhwZWN0X2V2ZW50cyBldmVudCxcbiB7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBuZl9jdF9leHBfbmV0KGV4cCk7XG4gXHRzdHJ1Y3QgbmZfY3RfZXZlbnRfbm90aWZpZXIgKm5vdGlmeTtcbi1cdHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplO1xuIFxuIFx0bG9ja2RlcF9uZmN0X2V4cGVjdF9sb2NrX2hlbGQoKTtcbiBcbkBAIC0yNTQsMTEgJiM0MzsyNTMsNyBAQCB2b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXhwZWN0X2V2ZW50cyBldmVudCxcbiBcdGlmICghbm90aWZ5KVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4tXHRlID0gbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVx1MDAzZW1hc3Rlcik7XG4tXHRpZiAoIWUpXG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cbi1cdGlmIChlLVx1MDAzZWV4cG1hc2sgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBldmVudCkpIHtcbiYjNDM7XHRpZiAoZXhwLVx1MDAzZWV2ZW50X21hc2sgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBldmVudCkpIHtcbiBcdFx0c3RydWN0IG5mX2V4cF9ldmVudCBpdGVtID0ge1xuIFx0XHRcdC5leHBcdD0gZXhwLFxuIFx0XHRcdC5wb3J0aWRcdD0gcG9ydGlkLFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbmluZGV4IDdhZTY4ZDYwNTg2YTIzLi5jZDlhZjM2MjBhZjU4NyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuQEAgLTMzMCw2ICYjNDM7MzMwLDcgQEAgdm9pZCBuZl9jdF9leHBlY3RfaW5pdChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLCB1bnNpZ25lZCBpbnQgY2xhc3MsXG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqaGVscGVyID0gTlVMTDtcbiBcdHN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC1cdTAwM2VtYXN0ZXI7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSByZWFkX3BuZXQoXHUwMDI2Y3QtXHUwMDNlY3RfbmV0KTtcbiYjNDM7XHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xuIFx0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcbiBcdGludCBsZW47XG4gXG5AQCAtMzQyLDYgJiM0MzszNDMsMTAgQEAgdm9pZCBuZl9jdF9leHBlY3RfaW5pdChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLCB1bnNpZ25lZCBpbnQgY2xhc3MsXG4gXHRleHAtXHUwMDNlY2xhc3MgPSBjbGFzcztcbiBcdGV4cC1cdTAwM2VleHBlY3RmbiA9IE5VTEw7XG4gXG4mIzQzO1x0ZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpO1xuJiM0MztcdGlmIChlY2FjaGUpXG4mIzQzO1x0XHRleHAtXHUwMDNlZXZlbnRfbWFzayA9IGVjYWNoZS1cdTAwM2VleHBtYXNrO1xuJiM0MztcbiBcdGhlbHAgPSBuZmN0X2hlbHAoY3QpO1xuIFx0aWYgKGhlbHApXG4gXHRcdGhlbHBlciA9IHJjdV9kZXJlZmVyZW5jZShoZWxwLVx1MDAzZWhlbHBlcik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuY1xuaW5kZXggZjM5NDQ1OThjMTcyNmYuLmY0ZmUxM2ZkMGU3MDJhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jXG5AQCAtNTE1LDcgJiM0Mzs1MTUsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIChwb3NzaWJseSBjaGFuZ2VkKSBleHBlY3RhdGlvbiBpdHNlbGYuICovXG4gXHRuZl9uYXRfZnRwID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9mdHBfaG9vayk7XG4gXHRpZiAobmZfbmF0X2Z0cCBcdTAwMjZcdTAwMjYgY3QtXHUwMDNlc3RhdHVzIFx1MDAyNiBJUFNfTkFUX01BU0spXG4tXHRcdHJldCA9IG5mX25hdF9mdHAoc2tiLCBjdGluZm8sIHNlYXJjaFtkaXJdW2ldLmZ0cHR5cGUsXG4mIzQzO1x0XHRyZXQgPSBuZl9uYXRfZnRwKHNrYiwgY3QsIGN0aW5mbywgc2VhcmNoW2Rpcl1baV0uZnRwdHlwZSxcbiBcdFx0XHRcdCBwcm90b2ZmLCBtYXRjaG9mZiwgbWF0Y2hsZW4sIGV4cCk7XG4gXHRlbHNlIHtcbiBcdFx0LyogQ2FuJiMzOTt0IGV4cGVjdCB0aGlzPyAgQmVzdCB0byBkcm9wIHBhY2tldCBub3cuICovXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuY1xuaW5kZXggNGU2YmFmZTQxNDM3NTIuLjkyMzYwOTYzNzU3YTk3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jXG5AQCAtMjMxLDcgJiM0MzsyMzEsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXG4gXHRcdFx0bmZfbmF0X2lyYyA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaXJjX2hvb2spO1xuIFx0XHRcdGlmIChuZl9uYXRfaXJjIFx1MDAyNlx1MDAyNiBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSylcbi1cdFx0XHRcdHJldCA9IG5mX25hdF9pcmMoc2tiLCBjdGluZm8sIHByb3RvZmYsXG4mIzQzO1x0XHRcdFx0cmV0ID0gbmZfbmF0X2lyYyhza2IsIGN0LCBjdGluZm8sIHByb3RvZmYsXG4gXHRcdFx0XHRcdFx0IGFkZHJfYmVnX3AgLSBpYl9wdHIsXG4gXHRcdFx0XHRcdFx0IGFkZHJfZW5kX3AgLSBhZGRyX2JlZ19wLFxuIFx0XHRcdFx0XHRcdCBleHApO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuaW5kZXggMzFjYmIxYjU1YjllNmMuLmZjM2Y2MDA5OWFmM2I1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbkBAIC0zNTI0LDYgJiM0MzszNTI0LDcgQEAgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcbiB7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSByZWFkX3BuZXQoXHUwMDI2Y3QtXHUwMDNlY3RfbmV0KTtcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfaGVscGVyICpoZWxwZXI7XG4mIzQzO1x0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHA7XG4gXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwO1xuIFx0dTMyIGNsYXNzID0gMDtcbkBAIC0zNTc1LDYgJiM0MzszNTc2LDEwIEBAIGN0bmV0bGlua19hbGxvY19leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGNkYVtdLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gXHRleHAtXHUwMDNlbWFzay5zcmMudTMgPSBtYXNrLVx1MDAzZXNyYy51MztcbiBcdGV4cC1cdTAwM2VtYXNrLnNyYy51LmFsbCA9IG1hc2stXHUwMDNlc3JjLnUuYWxsO1xuIFxuJiM0MztcdGVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcbiYjNDM7XHRpZiAoZWNhY2hlKVxuJiM0MztcdFx0ZXhwLVx1MDAzZWV2ZW50X21hc2sgPSBlY2FjaGUtXHUwMDNlZXhwbWFzaztcbiYjNDM7XG4gXHRpZiAoY2RhW0NUQV9FWFBFQ1RfTkFUXSkge1xuIFx0XHRlcnIgPSBjdG5ldGxpbmtfcGFyc2VfZXhwZWN0X25hdChjZGFbQ1RBX0VYUEVDVF9OQVRdLFxuIFx0XHRcdFx0XHRcdCBleHAsIG5mX2N0X2wzbnVtKGN0KSk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jXG5pbmRleCBhNjk1NTllZGY5YjM2My4uZTY3MmQ3NGE2ODE3ZWEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuY1xuQEAgLTY5LDcgJiM0Mzs2OSw3IEBAIHN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRcdG5mX25hdF90ZnRwID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF90ZnRwX2hvb2spO1xuIFx0XHRpZiAobmZfbmF0X3RmdHAgXHUwMDI2XHUwMDI2IGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKVxuLVx0XHRcdHJldCA9IG5mX25hdF90ZnRwKHNrYiwgY3RpbmZvLCBleHApO1xuJiM0MztcdFx0XHRyZXQgPSBuZl9uYXRfdGZ0cChza2IsIGN0LCBjdGluZm8sIGV4cCk7XG4gXHRcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xuIFx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvblwmIzM0Oyk7XG4gXHRcdFx0cmV0ID0gTkZfRFJPUDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jXG5pbmRleCA4ZjEwNTQ5MjBhODU3MS4uMzMwNDE1ODA5NDI1Y2UgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcbkBAIC0yNiw2ICYjNDM7MjYsNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19uYXRfaGVscGVyIG5hdF9oZWxwZXJfYW1hbmRhID1cbiBcdE5GX0NUX05BVF9IRUxQRVJfSU5JVChOQVRfSEVMUEVSX05BTUUpO1xuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztcdFx0XHQgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHRcdCBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0XHQgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRcdFx0IHVuc2lnbmVkIGludCBtYXRjaG9mZixcbkBAIC00NiwxNSAmIzQzOzQ3LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0LyogVHJ5IHRvIGdldCBzYW1lIHBvcnQ6IGlmIG5vdCwgdHJ5IHRvIGNoYW5nZSBpdC4gKi9cbiBcdHBvcnQgPSBuZl9uYXRfZXhwX2ZpbmRfcG9ydChleHAsIG50b2hzKGV4cC1cdTAwM2VzYXZlZF9wcm90by50Y3AucG9ydCkpO1xuIFx0aWYgKHBvcnQgPT0gMCkge1xuLVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgXCYjMzQ7YWxsIHBvcnRzIGluIHVzZVwmIzM0Oyk7XG4mIzQzO1x0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2FsbCBwb3J0cyBpbiB1c2VcJiMzNDspO1xuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdH1cbiBcbiBcdHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIFwmIzM0OyV1XCYjMzQ7LCBwb3J0KTtcbi1cdGlmICghbmZfbmF0X21hbmdsZV91ZHBfcGFja2V0KHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgY3RpbmZvLFxuJiM0MztcdGlmICghbmZfbmF0X21hbmdsZV91ZHBfcGFja2V0KHNrYiwgY3QsIGN0aW5mbyxcbiBcdFx0XHRcdCAgICAgIHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbixcbiBcdFx0XHRcdCAgICAgIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlcikpKSB7XG4tXHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtXHUwMDNlbWFzdGVyLCBcJiMzNDtjYW5ub3QgbWFuZ2xlIHBhY2tldFwmIzM0Oyk7XG4mIzQzO1x0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBtYW5nbGUgcGFja2V0XCYjMzQ7KTtcbiBcdFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChleHApO1xuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jXG5pbmRleCBjOTJhNDM2ZDljNDg2ZS4uMjVkMjBlMjk3MGFlMWIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmNcbkBAIC02MSw2ICYjNDM7NjEsNyBAQCBzdGF0aWMgaW50IG5mX25hdF9mdHBfZm10X2NtZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZnRwX3R5cGUgdHlwZSxcbiAvKiBTbywgdGhpcyBwYWNrZXQgaGFzIGhpdCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBtYXRjaGluZyBjb2RlLlxuICAgIE1hbmdsZSBpdCwgYW5kIGNoYW5nZSB0aGUgZXhwZWN0YXRpb24gdG8gbWF0Y2ggdGhlIG5ldyB2ZXJzaW9uLiAqL1xuIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHRcdCAgICAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0XHQgICAgICAgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbkBAIC03MSw3ICYjNDM7NzIsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHVuaW9uIG5mX2luZXRfYWRkciBuZXdhZGRyO1xuIFx0dV9pbnQxNl90IHBvcnQ7XG4gXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xuLVx0c3RydWN0IG5mX2Nvbm4gKmN0ID0gZXhwLVx1MDAzZW1hc3RlcjtcbiBcdGNoYXIgYnVmZmVyW3NpemVvZihcJiMzNDt8MXx8NjU1MzV8XCYjMzQ7KSAmIzQzOyBJTkVUNl9BRERSU1RSTEVOXTtcbiBcdHVuc2lnbmVkIGludCBidWZsZW47XG4gXG5AQCAtODgsNyAmIzQzOzg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRwb3J0ID0gbmZfbmF0X2V4cF9maW5kX3BvcnQoZXhwLCBudG9ocyhleHAtXHUwMDNlc2F2ZWRfcHJvdG8udGNwLnBvcnQpKTtcbiBcdGlmIChwb3J0ID09IDApIHtcbi1cdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cdTAwM2VtYXN0ZXIsIFwmIzM0O2FsbCBwb3J0cyBpbiB1c2VcJiMzNDspO1xuJiM0MztcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcJiMzNDthbGwgcG9ydHMgaW4gdXNlXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIE5GX0RST1A7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuY1xuaW5kZXggMTljNGZjYzYwYzUwZjIuLjg5YjMxZmU5MzJiYWMwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXG5AQCAtMzAsNiAmIzQzOzMwLDcgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2lyYyA9XG4gXHRORl9DVF9OQVRfSEVMUEVSX0lOSVQoTkFUX0hFTFBFUl9OQU1FKTtcbiBcbiBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdFx0IHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRcdCB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5AQCAtMzcsNyAmIzQzOzM4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHApXG4ge1xuIFx0Y2hhciBidWZmZXJbc2l6ZW9mKFwmIzM0OzQyOTQ5NjcyOTYgNjU2MzVcJiMzNDspXTtcbi1cdHN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC1cdTAwM2VtYXN0ZXI7XG4gXHR1bmlvbiBuZl9pbmV0X2FkZHIgbmV3YWRkcjtcbiBcdHVfaW50MTZfdCBwb3J0O1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuY1xuaW5kZXggMWE1OTExMzJkNmViOTMuLjcxMjFlNjcwNGYzNDFjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmNcbkBAIC0yMSwxNyAmIzQzOzIxLDE2IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl90ZnRwID1cbiBcdE5GX0NUX05BVF9IRUxQRVJfSU5JVChOQVRfSEVMUEVSX05BTUUpO1xuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztcdFx0XHQgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHRcdCBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0XHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXHUwMDNlbWFzdGVyO1xuLVxuIFx0ZXhwLVx1MDAzZXNhdmVkX3Byb3RvLnVkcC5wb3J0XG4gXHRcdD0gY3QtXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9PUklHSU5BTF0udHVwbGUuc3JjLnUudWRwLnBvcnQ7XG4gXHRleHAtXHUwMDNlZGlyID0gSVBfQ1RfRElSX1JFUExZO1xuIFx0ZXhwLVx1MDAzZWV4cGVjdGZuID0gbmZfbmF0X2ZvbGxvd19tYXN0ZXI7XG4gXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XG4tXHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtXHUwMDNlbWFzdGVyLCBcJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCYjMzQ7KTtcbiYjNDM7XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvblwmIzM0Oyk7XG4gXHRcdHJldHVybiBORl9EUk9QO1xuIFx0fVxuIFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0tfRVZFTlRTJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19BTUFOREEmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0ZUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfSVJDJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19URlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19ORVRCSU9TX05TJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TTk1QJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTksmIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YW1hbmRhX2hlbHAmIzM0OywKICAgICYjMzQ7bmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwJiMzNDssCiAgICAmIzM0O25mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQmIzM0OywKICAgICYjMzQ7bmZfY3RfZXhwZWN0X2luaXQmIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2FsbG9jX2V4cGVjdCYjMzQ7LAogICAgJiMzNDt0ZnRwX2hlbHAmIzM0OywKICAgICYjMzQ7bmZfbmF0X2Z0cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgKGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgbmV0bGluaykgYW5kIHRoZSBleHBlY3RhdGlvbi9ldmVudCBjYWNoZSBsb2dpYy4gSXQgY2FjaGVzIGBldmVudF9tYXNrYCBpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBjb25uZWN0aW9uJiMzOTtzIGVjYWNoZSBhdCBldmVudCByZXBvcnQgdGltZS4gSXQgYWxzbyBwYXNzZXMgdGhlIGNvbm5lY3Rpb24gb2JqZWN0IGRpcmVjdGx5IHRvIE5BVCBob29rIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IGFmZmVjdCBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNlMWYwNWZhMDQ5OTliMDMwNDYxZGJhNWY1ZjY1MGQ4ZWU1ZGMwYTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAyMTo0MTo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaAppbmRleCAxNzE5OTg3ZThmZDgzOC4uZGViNTYwYmI3OWM0MzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmgKQEAgLTksNiAmIzQzOzksNyBAQAogCiB0eXBlZGVmIHVuc2lnbmVkIGludAogbmZfbmF0X2FtYW5kYV9ob29rX2ZuKHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7CQkgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCSAgICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLAogCQkgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZiwKIAkJICAgICAgdW5zaWduZWQgaW50IG1hdGNob2ZmLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oCmluZGV4IDdiNjI0NDZjY2VjNGY0Li43MTI3MDIxODNiOTQ3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuaApAQCAtMjgsNiAmIzQzOzI4LDcgQEAgc3RydWN0IG5mX2N0X2Z0cF9tYXN0ZXIgewogICogY29ubmVjdGlvbiB3ZSBzaG91bGQgZXhwZWN0LiAqLwogdHlwZWRlZiB1bnNpZ25lZCBpbnQKIG5mX25hdF9mdHBfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJICAgc3RydWN0IG5mX2Nvbm4gKmN0LAogCQkgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbywKIAkJICAgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLAogCQkgICB1bnNpZ25lZCBpbnQgcHJvdG9mZiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaAppbmRleCBjZTA3MjUwYWZiNGU5ZS4uYzczYjNiNDRhMGI3ZWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmgKQEAgLTEwLDYgJiM0MzsxMCw3IEBACiAKIHR5cGVkZWYgdW5zaWduZWQgaW50CiBuZl9uYXRfaXJjX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYiwKJiM0MzsJCSAgIHN0cnVjdCBuZl9jb25uICpjdCwKIAkJICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCiAJCSAgIHVuc2lnbmVkIGludCBwcm90b2ZmLAogCQkgICB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaAppbmRleCBlM2QxNzM5YzU1N2QxNS4uODAyY2I3ZmMxOWNkZWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaApAQCAtMTksNiAmIzQzOzE5LDcgQEAgc3RydWN0IHRmdHBoZHIgewogCiB0eXBlZGVmIHVuc2lnbmVkIGludAogbmZfbmF0X3RmdHBfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJICAgIHN0cnVjdCBuZl9jb25uICpjdCwKIAkJICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLAogCQkgICAgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oCmluZGV4IGMwMjQzNDVjOWJkODYyLi41ZDBmNWIyZjEyYTcyNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oCkBAIC00Miw2ICYjNDM7NDIsOSBAQCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCB7CiAJLyogRXhwZWN0YXRpb24gY2xhc3MgKi8KIAl1bnNpZ25lZCBpbnQgY2xhc3M7CiAKJiM0MzsJLyogRXZlbnQgZmlsdGVyIG1hc2sgKi8KJiM0MzsJdTE2IGV2ZW50X21hc2s7CiYjNDM7CiAJLyogRnVuY3Rpb24gdG8gY2FsbCBhZnRlciBzZXR1cCBhbmQgaW5zZXJ0aW9uICovCiAJdm9pZCAoKmV4cGVjdGZuKShzdHJ1Y3QgbmZfY29ubiAqbmV3LAogCQkJIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICp0aGlzKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMKaW5kZXggMDZkNmVjMTJjODZkZmEuLjE0YWU2NjA0OTFmMzYwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYwpAQCAtMTUxLDcgJiM0MzsxNTEsNyBAQCBzdGF0aWMgaW50IGFtYW5kYV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJbmZfbmF0X2FtYW5kYSA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfYW1hbmRhX2hvb2spOwogCQlpZiAobmZfbmF0X2FtYW5kYSAmYW1wOyZhbXA7IGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKQotCQkJcmV0ID0gbmZfbmF0X2FtYW5kYShza2IsIGN0aW5mbywgcHJvdG9mZiwKJiM0MzsJCQlyZXQgPSBuZl9uYXRfYW1hbmRhKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZiwKIAkJCQkJICAgIG9mZiAtIGRhdGFvZmYsIGxlbiwgZXhwKTsKIAkJZWxzZSBpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7CiAJCQluZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsICYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvbiYjMzQ7KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMKaW5kZXggNmZmOTU0ZjFiZmI4N2MuLjA5MjJlMzBiNmFiMDcwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYwpAQCAtMTQsNiAmIzQzOzE0LDcgQEAKICNpbmNsdWRlICZsdDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaCZndDsKIAogaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCXN0cnVjdCBuZl9jb25uICpjdCwKQEAgLTI3LDYgJiM0MzsyOCw3IEBAIGludCBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgcnRhYmxlICpydCA9IHNrYl9ydGFibGUoc2tiKTsKIAlzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXY7CiAJc3RydWN0IG5mX2Nvbm5faGVscCAqaGVscCA9IG5mY3RfaGVscChjdCk7CiYjNDM7CXN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplY2FjaGU7CiAJX19iZTMyIG1hc2sgPSAwOwogCiAJaWYgKCFoZWxwKQpAQCAtNzksNiAmIzQzOzgxLDEwIEBAIGludCBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTCiAJZXhwLSZndDt6b25lID0gY3QtJmd0O3pvbmU7CiAjZW5kaWYKJiM0MzsJZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpOwomIzQzOwlpZiAoZWNhY2hlKQomIzQzOwkJZXhwLSZndDtldmVudF9tYXNrID0gZWNhY2hlLSZndDtleHBtYXNrOwomIzQzOwogCW5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCk7CiAJbmZfY3RfZXhwZWN0X3B1dChleHApOwogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jCmluZGV4IDlkZjE1OTQ0OGI4OTc5Li40YzdkMTc5OTE1OGQyYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMKQEAgLTI0NSw3ICYjNDM7MjQ1LDYgQEAgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsCiB7CiAJc3RydWN0IG5ldCAqbmV0ID0gbmZfY3RfZXhwX25ldChleHApOwogCXN0cnVjdCBuZl9jdF9ldmVudF9ub3RpZmllciAqbm90aWZ5OwotCXN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplOwogCiAJbG9ja2RlcF9uZmN0X2V4cGVjdF9sb2NrX2hlbGQoKTsKIApAQCAtMjU0LDExICYjNDM7MjUzLDcgQEAgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsCiAJaWYgKCFub3RpZnkpCiAJCWdvdG8gb3V0X3VubG9jazsKIAotCWUgPSBuZl9jdF9lY2FjaGVfZmluZChleHAtJmd0O21hc3Rlcik7Ci0JaWYgKCFlKQotCQlnb3RvIG91dF91bmxvY2s7Ci0KLQlpZiAoZS0mZ3Q7ZXhwbWFzayAmYW1wOyAoMSAmbHQ7Jmx0OyBldmVudCkpIHsKJiM0MzsJaWYgKGV4cC0mZ3Q7ZXZlbnRfbWFzayAmYW1wOyAoMSAmbHQ7Jmx0OyBldmVudCkpIHsKIAkJc3RydWN0IG5mX2V4cF9ldmVudCBpdGVtID0gewogCQkJLmV4cAk9IGV4cCwKIAkJCS5wb3J0aWQJPSBwb3J0aWQsCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jCmluZGV4IDdhZTY4ZDYwNTg2YTIzLi5jZDlhZjM2MjBhZjU4NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMKQEAgLTMzMCw2ICYjNDM7MzMwLDcgQEAgdm9pZCBuZl9jdF9leHBlY3RfaW5pdChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLCB1bnNpZ25lZCBpbnQgY2xhc3MsCiAJc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmhlbHBlciA9IE5VTEw7CiAJc3RydWN0IG5mX2Nvbm4gKmN0ID0gZXhwLSZndDttYXN0ZXI7CiAJc3RydWN0IG5ldCAqbmV0ID0gcmVhZF9wbmV0KCZhbXA7Y3QtJmd0O2N0X25ldCk7CiYjNDM7CXN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplY2FjaGU7CiAJc3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDsKIAlpbnQgbGVuOwogCkBAIC0zNDIsNiAmIzQzOzM0MywxMCBAQCB2b2lkIG5mX2N0X2V4cGVjdF9pbml0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHVuc2lnbmVkIGludCBjbGFzcywKIAlleHAtJmd0O2NsYXNzID0gY2xhc3M7CiAJZXhwLSZndDtleHBlY3RmbiA9IE5VTEw7CiAKJiM0MzsJZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpOwomIzQzOwlpZiAoZWNhY2hlKQomIzQzOwkJZXhwLSZndDtldmVudF9tYXNrID0gZWNhY2hlLSZndDtleHBtYXNrOwomIzQzOwogCWhlbHAgPSBuZmN0X2hlbHAoY3QpOwogCWlmIChoZWxwKQogCQloZWxwZXIgPSByY3VfZGVyZWZlcmVuY2UoaGVscC0mZ3Q7aGVscGVyKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMKaW5kZXggZjM5NDQ1OThjMTcyNmYuLmY0ZmUxM2ZkMGU3MDJhIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYwpAQCAtNTE1LDcgJiM0Mzs1MTUsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiAocG9zc2libHkgY2hhbmdlZCkgZXhwZWN0YXRpb24gaXRzZWxmLiAqLwogCW5mX25hdF9mdHAgPSByY3VfZGVyZWZlcmVuY2UobmZfbmF0X2Z0cF9ob29rKTsKIAlpZiAobmZfbmF0X2Z0cCAmYW1wOyZhbXA7IGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKQotCQlyZXQgPSBuZl9uYXRfZnRwKHNrYiwgY3RpbmZvLCBzZWFyY2hbZGlyXVtpXS5mdHB0eXBlLAomIzQzOwkJcmV0ID0gbmZfbmF0X2Z0cChza2IsIGN0LCBjdGluZm8sIHNlYXJjaFtkaXJdW2ldLmZ0cHR5cGUsCiAJCQkJIHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbiwgZXhwKTsKIAllbHNlIHsKIAkJLyogQ2FuJiMzOTt0IGV4cGVjdCB0aGlzPyAgQmVzdCB0byBkcm9wIHBhY2tldCBub3cuICovCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jCmluZGV4IDRlNmJhZmU0MTQzNzUyLi45MjM2MDk2Mzc1N2E5NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmMKQEAgLTIzMSw3ICYjNDM7MjMxLDcgQEAgc3RhdGljIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLAogCiAJCQluZl9uYXRfaXJjID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9pcmNfaG9vayk7CiAJCQlpZiAobmZfbmF0X2lyYyAmYW1wOyZhbXA7IGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKQotCQkJCXJldCA9IG5mX25hdF9pcmMoc2tiLCBjdGluZm8sIHByb3RvZmYsCiYjNDM7CQkJCXJldCA9IG5mX25hdF9pcmMoc2tiLCBjdCwgY3RpbmZvLCBwcm90b2ZmLAogCQkJCQkJIGFkZHJfYmVnX3AgLSBpYl9wdHIsCiAJCQkJCQkgYWRkcl9lbmRfcCAtIGFkZHJfYmVnX3AsCiAJCQkJCQkgZXhwKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwppbmRleCAzMWNiYjFiNTViOWU2Yy4uZmMzZjYwMDk5YWYzYjUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKQEAgLTM1MjQsNiAmIzQzOzM1MjQsNyBAQCBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSwgc3RydWN0IG5mX2Nvbm4gKmN0LAogewogCXN0cnVjdCBuZXQgKm5ldCA9IHJlYWRfcG5ldCgmYW1wO2N0LSZndDtjdF9uZXQpOwogCXN0cnVjdCBuZl9jb25udHJhY2tfaGVscGVyICpoZWxwZXI7CiYjNDM7CXN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplY2FjaGU7CiAJc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cDsKIAlzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwOwogCXUzMiBjbGFzcyA9IDA7CkBAIC0zNTc1LDYgJiM0MzszNTc2LDEwIEBAIGN0bmV0bGlua19hbGxvY19leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGNkYVtdLCBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJZXhwLSZndDttYXNrLnNyYy51MyA9IG1hc2stJmd0O3NyYy51MzsKIAlleHAtJmd0O21hc2suc3JjLnUuYWxsID0gbWFzay0mZ3Q7c3JjLnUuYWxsOwogCiYjNDM7CWVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTsKJiM0MzsJaWYgKGVjYWNoZSkKJiM0MzsJCWV4cC0mZ3Q7ZXZlbnRfbWFzayA9IGVjYWNoZS0mZ3Q7ZXhwbWFzazsKJiM0MzsKIAlpZiAoY2RhW0NUQV9FWFBFQ1RfTkFUXSkgewogCQllcnIgPSBjdG5ldGxpbmtfcGFyc2VfZXhwZWN0X25hdChjZGFbQ1RBX0VYUEVDVF9OQVRdLAogCQkJCQkJIGV4cCwgbmZfY3RfbDNudW0oY3QpKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYwppbmRleCBhNjk1NTllZGY5YjM2My4uZTY3MmQ3NGE2ODE3ZWEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMKQEAgLTY5LDcgJiM0Mzs2OSw3IEBAIHN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJbmZfbmF0X3RmdHAgPSByY3VfZGVyZWZlcmVuY2UobmZfbmF0X3RmdHBfaG9vayk7CiAJCWlmIChuZl9uYXRfdGZ0cCAmYW1wOyZhbXA7IGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKQotCQkJcmV0ID0gbmZfbmF0X3RmdHAoc2tiLCBjdGluZm8sIGV4cCk7CiYjNDM7CQkJcmV0ID0gbmZfbmF0X3RmdHAoc2tiLCBjdCwgY3RpbmZvLCBleHApOwogCQllbHNlIGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHsKIAkJCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uJiMzNDspOwogCQkJcmV0ID0gTkZfRFJPUDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMKaW5kZXggOGYxMDU0OTIwYTg1NzEuLjMzMDQxNTgwOTQyNWNlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYwpAQCAtMjYsNiAmIzQzOzI2LDcgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2FtYW5kYSA9CiAJTkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCSBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQkgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCiAJCQkgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJCQkgdW5zaWduZWQgaW50IG1hdGNob2ZmLApAQCAtNDYsMTUgJiM0Mzs0NywxNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkvKiBUcnkgdG8gZ2V0IHNhbWUgcG9ydDogaWYgbm90LCB0cnkgdG8gY2hhbmdlIGl0LiAqLwogCXBvcnQgPSBuZl9uYXRfZXhwX2ZpbmRfcG9ydChleHAsIG50b2hzKGV4cC0mZ3Q7c2F2ZWRfcHJvdG8udGNwLnBvcnQpKTsKIAlpZiAocG9ydCA9PSAwKSB7Ci0JCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtJmd0O21hc3RlciwgJiMzNDthbGwgcG9ydHMgaW4gdXNlJiMzNDspOwomIzQzOwkJbmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCAmIzM0O2FsbCBwb3J0cyBpbiB1c2UmIzM0Oyk7CiAJCXJldHVybiBORl9EUk9QOwogCX0KIAogCXNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICYjMzQ7JXUmIzM0OywgcG9ydCk7Ci0JaWYgKCFuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQoc2tiLCBleHAtJmd0O21hc3RlciwgY3RpbmZvLAomIzQzOwlpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sCiAJCQkJICAgICAgcHJvdG9mZiwgbWF0Y2hvZmYsIG1hdGNobGVuLAogCQkJCSAgICAgIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlcikpKSB7Ci0JCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtJmd0O21hc3RlciwgJiMzNDtjYW5ub3QgbWFuZ2xlIHBhY2tldCYjMzQ7KTsKJiM0MzsJCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgJiMzNDtjYW5ub3QgbWFuZ2xlIHBhY2tldCYjMzQ7KTsKIAkJbmZfY3RfdW5leHBlY3RfcmVsYXRlZChleHApOwogCQlyZXR1cm4gTkZfRFJPUDsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jCmluZGV4IGM5MmE0MzZkOWM0ODZlLi4yNWQyMGUyOTcwYWUxYiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmMKQEAgLTYxLDYgJiM0Mzs2MSw3IEBAIHN0YXRpYyBpbnQgbmZfbmF0X2Z0cF9mbXRfY21kKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLAogLyogU28sIHRoaXMgcGFja2V0IGhhcyBoaXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWF0Y2hpbmcgY29kZS4KICAgIE1hbmdsZSBpdCwgYW5kIGNoYW5nZSB0aGUgZXhwZWN0YXRpb24gdG8gbWF0Y2ggdGhlIG5ldyB2ZXJzaW9uLiAqLwogc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwKHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7CQkJICAgICAgIHN0cnVjdCBuZl9jb25uICpjdCwKIAkJCSAgICAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbywKIAkJCSAgICAgICBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IHByb3RvZmYsCkBAIC03MSw3ICYjNDM7NzIsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl1bmlvbiBuZl9pbmV0X2FkZHIgbmV3YWRkcjsKIAl1X2ludDE2X3QgcG9ydDsKIAlpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pOwotCXN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC0mZ3Q7bWFzdGVyOwogCWNoYXIgYnVmZmVyW3NpemVvZigmIzM0O3wxfHw2NTUzNXwmIzM0OykgJiM0MzsgSU5FVDZfQUREUlNUUkxFTl07CiAJdW5zaWduZWQgaW50IGJ1ZmxlbjsKIApAQCAtODgsNyAmIzQzOzg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwKHN0cnVjdCBza19idWZmICpza2IsCiAKIAlwb3J0ID0gbmZfbmF0X2V4cF9maW5kX3BvcnQoZXhwLCBudG9ocyhleHAtJmd0O3NhdmVkX3Byb3RvLnRjcC5wb3J0KSk7CiAJaWYgKHBvcnQgPT0gMCkgewotCQluZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLSZndDttYXN0ZXIsICYjMzQ7YWxsIHBvcnRzIGluIHVzZSYjMzQ7KTsKJiM0MzsJCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgJiMzNDthbGwgcG9ydHMgaW4gdXNlJiMzNDspOwogCQlyZXR1cm4gTkZfRFJPUDsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMKaW5kZXggMTljNGZjYzYwYzUwZjIuLjg5YjMxZmU5MzJiYWMwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYwpAQCAtMzAsNiAmIzQzOzMwLDcgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2lyYyA9CiAJTkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCSBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQkgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCiAJCQkgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJCQkgdW5zaWduZWQgaW50IG1hdGNob2ZmLApAQCAtMzcsNyAmIzQzOzM4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCkKIHsKIAljaGFyIGJ1ZmZlcltzaXplb2YoJiMzNDs0Mjk0OTY3Mjk2IDY1NjM1JiMzNDspXTsKLQlzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtJmd0O21hc3RlcjsKIAl1bmlvbiBuZl9pbmV0X2FkZHIgbmV3YWRkcjsKIAl1X2ludDE2X3QgcG9ydDsKIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jCmluZGV4IDFhNTkxMTMyZDZlYjkzLi43MTIxZTY3MDRmMzQxYyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYwpAQCAtMjEsMTcgJiM0MzsyMSwxNiBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19uYXRfaGVscGVyIG5hdF9oZWxwZXJfdGZ0cCA9CiAJTkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCSBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQkgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCiAJCQkgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCkKIHsKLQljb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtJmd0O21hc3RlcjsKLQogCWV4cC0mZ3Q7c2F2ZWRfcHJvdG8udWRwLnBvcnQKIAkJPSBjdC0mZ3Q7dHVwbGVoYXNoW0lQX0NUX0RJUl9PUklHSU5BTF0udHVwbGUuc3JjLnUudWRwLnBvcnQ7CiAJZXhwLSZndDtkaXIgPSBJUF9DVF9ESVJfUkVQTFk7CiAJZXhwLSZndDtleHBlY3RmbiA9IG5mX25hdF9mb2xsb3dfbWFzdGVyOwogCWlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHsKLQkJbmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC0mZ3Q7bWFzdGVyLCAmIzM0O2Nhbm5vdCBhZGQgZXhwZWN0YXRpb24mIzM0Oyk7CiYjNDM7CQluZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsICYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvbiYjMzQ7KTsKIAkJcmV0dXJuIE5GX0RST1A7CiAJfQogCXJldHVybiBORl9BQ0NFUFQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNDkKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA1NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIGZvciBGdXp6aW5nIFJlbGV2YW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgcGF0Y2ggYW5kIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzLCBzcGVjaWZpY2FsbHkgdGhlIEFtYW5kYSwgRlRQLCBJUkMsIFRGVFAsIGJyb2FkY2FzdCwgbmV0bGluaywgZWNhY2hlLCBhbmQgZXhwZWN0IG1vZHVsZXMuCgpGaXJzdCwgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIGFkZGluZyBhIGBzdHJ1Y3QgbmZfY29ubiAqY3RgIHBhcmFtZXRlciB0byBzZXZlcmFsIGhvb2sgZnVuY3Rpb25zOiBgbmZfbmF0X2FtYW5kYV9ob29rX2ZuYCwgYG5mX25hdF9mdHBfaG9va19mbmAsIGBuZl9uYXRfaXJjX2hvb2tfZm5gLCBhbmQgYG5mX25hdF90ZnRwX2hvb2tfZm5gLiBOb3QgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGZvciBmdXp6aW5nIGluIGl0c2VsZi4gQWRkaW5nIHRoZSBjb25udHJhY2sgaXNuJiMzOTt0IHZlcnkgY29uY2VybmluZyAtIHRoZSBjYWxsZXIgbm93IGhhcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgoKU2Vjb25kLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiBpbiBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAuIFRoZXkmIzM5O3ZlIGNoYW5nZWQgaXQgdG8gdXNlIGBleHAtJmd0O2V2ZW50X21hc2tgIGRpcmVjdGx5IGluc3RlYWQgb2YgZG9pbmcgYSBsb29rdXAgd2l0aCBgbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLSZndDttYXN0ZXIpYC4gVGhpcyBpcyBhICpkZWZpbml0ZSogY2hhbmdlIGluIGJlaGF2aW9yLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IGF2b2lkcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXB0ci1kZXJlZiBpZiBgZXhwLSZndDttYXN0ZXJgIGlzIGZyZWVkIG9yIGl0cyBlY2FjaGUgaXMgZnJlZWQvbm90IGZvdW5kLCBvciBpdCBqdXN0IG9wdGltaXplcyB0aGUgbG9va3VwLiBXYWl0LCB0aGUgY29kZSBub3cgY2FjaGVzIHRoZSBldmVudCBtYXNrIGF0IGV4cGVjdGF0aW9uIGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBhdCBldmVudCByZXBvcnQgdGltZS4gVGhpcyBpcyBjYWNoaW5nIGEgdmFsdWUgZnJvbSBgZXhwLSZndDttYXN0ZXJgIGluIGBleHBgIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBldmVyeSB0aW1lIHdlIGNhbGwgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgLiBUaGlzIGF2b2lkcyBhY2Nlc3NpbmcgYGV4cC0mZ3Q7bWFzdGVyYCYjMzk7cyBlY2FjaGUgbGF0ZXIsIHdoaWNoIG1pZ2h0IGJlIHVuc2FmZSBvciBqdXN0IGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuCgpUaGlyZCwgdGhlIHBhdGNoIGFsc28gaW5pdGlhbGl6ZXMgYGV4cC0mZ3Q7ZXZlbnRfbWFza2AgaW4gYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGFuZCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgYnkgbG9va2luZyB1cCB0aGUgZWNhY2hlIG9mIHRoZSBtYXN0ZXIgY29ubmVjdGlvbi4gVGhpcyBpcyB0aWVkIHRvIHRoZSBwcmV2aW91cyBjaGFuZ2UgYmVjYXVzZSBgZXhwLSZndDtldmVudF9tYXNrYCBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgc29tZSBwb2ludC4gSXQmIzM5O3MgaW5pdGlhbGl6aW5nIHRoYXQgbWVtYmVyLgoKU28sIEkgdGhpbmsgd2UgaGF2ZSBhIHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZSBiZWNhdXNlIGl0JiMzOTtzIGF2b2lkaW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG51bGwtcHRyLWRlcmVmIG9yIGF0IGxlYXN0IG9wdGltaXppbmcgdGhlIGxvb2t1cC4gVGhlIG9yaWdpbmFsIGNvZGUgbG9va2VkIGxpa2U6CgpgYGBjCi0JZSA9IG5mX2N0X2VjYWNoZV9maW5kKGV4cC0mZ3Q7bWFzdGVyKTsKLQlpZiAoIWUpCi0JCWdvdG8gb3V0X3VubG9jazsKLQotCWlmIChlLSZndDtleHBtYXNrICZhbXA7ICgxICZsdDsmbHQ7IGV2ZW50KSkgewomIzQzOwlpZiAoZXhwLSZndDtldmVudF9tYXNrICZhbXA7ICgxICZsdDsmbHQ7IGV2ZW50KSkgewpgYGAKClRoaXMgY2hhbmdlIGludm9sdmVzIHN0b3JpbmcgYSB2YWx1ZSBpbiBhbiBleHBlY3RhdGlvbiB3aGVuIHRoZSBleHBlY3RhdGlvbiBpcyBjcmVhdGVkIGFuZCBzdWJzZXF1ZW50bHkgdXNpbmcgdGhhdCB2YWx1ZS4gU28sIGl0JiMzOTtzIGNhY2hpbmcgYXQgZXhwZWN0YXRpb24gY3JlYXRpb24gdGltZSBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQgdXAgZnJvbSB0aGUgbWFzdGVyIGF0IGV2ZW50IHJlcG9ydCB0aW1lLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIGBDT05GSUdfTkZfQ09OTlRSQUNLYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTYCwgYENPTkZJR19ORl9OQVRgLCBgQ09ORklHX05GX0NPTk5UUkFDS19BTUFOREFgLCBgQ09ORklHX05GX0NPTk5UUkFDS19GVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19JUkNgLCBgQ09ORklHX05GX0NPTk5UUkFDS19URlRQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYW5kIGBDT05GSUdfTkZfQ1RfTkVUTElOS2AuIEJlc3QgdG8gdXNlIGBncmVwcGVyYCB0byBmaW5kIHRoZSBleGFjdCBjb25maWcgbmFtZXMgZm9yIHNhZmV0eSwgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfQ09OTlRSQUNLX0VWRU5UUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc9ODA9Q09ORklHX05GX0NPTk5UUkFDS19aT05FUz15XG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc6ODE6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTgyLUNPTkZJR19ORl9DT05OVFJBQ0tfVElNRU9VVD15XG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xNDk9Q09ORklHX05GX0NPTk5UUkFDSz1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE1MDpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE1MS1DT05GSUdfTkVURklMVEVSX1hUX01BUks9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTU0PUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo1NTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy01Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTU3PUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc6NTg6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTU5LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTYxPUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjYyOkNPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctNjMtQ09ORklHX05GX0NPTk5UUkFDS19BTUFOREE9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz02MD1DT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjYxOkNPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy02Mi1DT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnPTQ0PUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc6NDU6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTQ2LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWc9NDg9Q09ORklHX05GX0NPTk5UUkFDS19NQVJLPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZzo0OTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWctNTAtQ09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTIzPUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjEyNDpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTEyNS1DT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTE4ND1DT05GSUdfTkZfQ09OTlRSQUNLX1BST0NGUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTg1OkNPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xODYtQ09ORklHX05GX0NPTk5UUkFDS19USU1FT1VUPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MTc1PUNPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ0ZTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxNzY6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE3Ny1DT05GSUdfTkZfQ09OTlRSQUNLX1RJTUVPVVQ9eVxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaD01MT1zdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oLTYyLSNlbmRpZlxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oOjYzOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oLTY0LVx0c3RydWN0IG5mX2Nvbm50cmFja19uZXRfZWNhY2hlIGVjYWNoZTtcbi0tXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oPTM0PW5mX2N0X2VjYWNoZV9maW5kKGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMzUte1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDozNjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMzctXHRyZXR1cm4gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9FQ0FDSEUpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9NDM9c3RhdGljIGlubGluZSBib29sIG5mX2N0X2VjYWNoZV9leGlzdChjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTQ0LXtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6NDU6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTQ2LVx0cmV0dXJuIG5mX2N0X2V4dF9leGlzdChjdCwgTkZfQ1RfRVhUX0VDQUNIRSk7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC01MS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6NTI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTUzLVxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTAyPW5mX2Nvbm50cmFja19ldmVudF9jYWNoZShlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdClcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTAzLXtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTA0OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xMDUtXHRzdHJ1Y3QgbmV0ICpuZXQgPSBuZl9jdF9uZXQoY3QpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTI4PW5mX2Nvbm50cmFja19ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXZlbnRzIGV2ZW50LCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xMzAte1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxMzE6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTEzMi1cdGlmIChuZl9jdF9lY2FjaGVfZXhpc3QoY3QpKVxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTM5PW5mX2Nvbm50cmFja19ldmVudChlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdClcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTQwLXtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTQxOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNDItXHRpZiAobmZfY3RfZWNhY2hlX2V4aXN0KGN0KSlcbi0tXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0Ny1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTQ4OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNDktdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xNjA9c3RhdGljIGlubGluZSBib29sIG5mX2Nvbm50cmFja19lY2FjaGVfZHdvcmtfcGVuZGluZyhjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNjMtfVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxNjQ6I2Vsc2UgLyogQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgKi9cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTY1LVxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTg1PXN0YXRpYyBpbmxpbmUgYm9vbCBuZl9jb25udHJhY2tfZWNhY2hlX2R3b3JrX3BlbmRpbmcoY29uc3Qgc3RydWN0IG5ldCAqbmV0KSB7IHJldHVybiBmYWxzZTsgfVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxODY6I2VuZGlmIC8qIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTICovXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE4Ny0jZW5kaWYgLypfTkZfQ09OTlRSQUNLX0VDQUNIRV9IKi9cbi0tXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5oPTk9ZW51bSBuZl9jdF9leHRfaWQge1xuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmgtMTUtXHRORl9DVF9FWFRfQUNDVCxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmg6MTY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5oLTE3LVx0TkZfQ1RfRVhUX0VDQUNIRSxcbi0tXG5pbmNsdWRlL25ldC9uZXRucy9jb25udHJhY2suaD04Mz1zdHJ1Y3QgbmV0bnNfY3Qge1xuaW5jbHVkZS9uZXQvbmV0bnMvY29ubnRyYWNrLmg6ODQ6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRucy9jb25udHJhY2suaC04NS1cdGJvb2wgZWNhY2hlX2R3b3JrX3BlbmRpbmc7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTE0OD1jb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTI9bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19USU1FU1RBTVApICYjNDM7PSBuZl9jb25udHJhY2tfdGltZXN0YW1wLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMpICYjNDM7PSBuZl9jb25udHJhY2tfZWNhY2hlLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQtbmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFMpICYjNDM7PSBuZl9jb25udHJhY2tfbGFiZWxzLm9cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM9NjUwPXN0YXRpYyB2b2lkIG5mX2N0X2FkZF90b19lY2FjaGVfbGlzdChzdHJ1Y3QgbmZfY29ubiAqY3QpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjUxLXtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzo2NTI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjUzLVx0c3RydWN0IG5mX2Nvbm50cmFja19uZXQgKmNuZXQgPSBuZl9jdF9wZXJuZXQobmZfY3RfbmV0KGN0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jPTE3NTQ9aW5pdF9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZfY29ubiAqdG1wbCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTc2MS1cdHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgcmVwbF90dXBsZTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzoxNzYyOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE3NjMtXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xNzk0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE3OTU6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTc5Ni1cdGVjYWNoZSA9IHRtcGwgPyBuZl9jdF9lY2FjaGVfZmluZCh0bXBsKSA6IE5VTEw7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM9MzA9c3RhdGljIGNvbnN0IHU4IG5mX2N0X2V4dF90eXBlX2xlbltORl9DVF9FWFRfTlVNXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0zNi1cdFtORl9DVF9FWFRfQUNDVF0gPSBzaXplb2Yoc3RydWN0IG5mX2Nvbm5fYWNjdCksXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYzozNzojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTM4LVx0W05GX0NUX0VYVF9FQ0FDSEVdID0gc2l6ZW9mKHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlKSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYz01Nz1zdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCB0b3RhbF9leHRlbnNpb25fc2l6ZSh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTY4LVx0XHQmIzQzOyBzaXplb2Yoc3RydWN0IG5mX2Nvbm5fYWNjdClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jOjY5OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtNzAtXHRcdCYjNDM7IHNpemVvZihzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU3PXN0YXRpYyBpbnQgY3RuZXRsaW5rX2R1bXBfc2VjY3R4KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODYtc3RhdGljIGludFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz02NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGN0YV9pcF9ubGFfcG9saWN5W0NUQV9JUF9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTY1MC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzo2NTE6I2lmIGRlZmluZWQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1QpIHx8IGRlZmluZWQoQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtNjUyLXN0YXRpYyBzaXplX3QgY3RuZXRsaW5rX3Byb3RvX3NpemUoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz02OTY9c3RhdGljIGlubGluZSBzaXplX3QgY3RuZXRsaW5rX3RpbWVzdGFtcF9zaXplKGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtNzA3LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjcwODojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy03MDktc3RhdGljIHNpemVfdCBjdG5ldGxpbmtfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTc0ND1jdG5ldGxpbmtfY29ubnRyYWNrX2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9jdF9ldmVudCAqaXRlbSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtODgyLX1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzo4ODM6I2VuZGlmIC8qIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtODg0LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xNjY2PXN0YXRpYyBpbnQgY3RuZXRsaW5rX2dldF9jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTcyOS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxNzMwOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3MzEtc3RhdGljIGludCBjdG5ldGxpbmtfZHVtcF9vbmVfZW50cnkoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTc3Nj1jdG5ldGxpbmtfZHVtcF9keWluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3NzgtXHRzdHJ1Y3QgY3RuZXRsaW5rX2xpc3RfZHVtcF9jdHggKmN0eCA9ICh2b2lkICopY2ItXHUwMDNlY3R4O1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE3Nzk6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTc4MC1cdGNvbnN0IHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3OTEtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTc5MjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xNzkzLVx0ZWNhY2hlX25ldCA9IG5mX2Nvbm5fcGVybmV0X2VjYWNoZShuZXQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDY2PWN0bmV0bGlua19leHBfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBwb3J0aWQsIHUzMiBzZXEsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwODktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzA5MDojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDkxLXN0YXRpYyBpbnRcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzc0Mj1zdGF0aWMgaW50IGN0bmV0bGlua19zdGF0X2V4cF9jcHUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc1NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzU2OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NTctc3RhdGljIHN0cnVjdCBuZl9jdF9ldmVudF9ub3RpZmllciBjdG5sX25vdGlmaWVyID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zODQ5PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBjdG5ldGxpbmtfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NTAte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTE6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg1Mi1cdG5mX2Nvbm50cmFja19yZWdpc3Rlcl9ub3RpZmllcihuZXQsIFx1MDAyNmN0bmxfbm90aWZpZXIpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zODU3PXN0YXRpYyB2b2lkIGN0bmV0bGlua19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NTgte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTk6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg2MC1cdG5mX2Nvbm50cmFja191bnJlZ2lzdGVyX25vdGlmaWVyKG5ldCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jPTU4NT1lbnVtIG5mX2N0X3N5c2N0bF9pbmRleCB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jLTU5Mi1cdE5GX1NZU0NUTF9DVF9BQ0NULFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jOjU5MzojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01OTQtXHRORl9TWVNDVExfQ1RfRVZFTlRTLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYz02NDI9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmZfY3Rfc3lzY3RsX3RhYmxlW10gPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jLTY5OC1cdH0sXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM6Njk5OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jLTcwMC1cdFtORl9TWVNDVExfQ1RfRVZFTlRTXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM9MTAwMz1zdGF0aWMgaW50IG5mX2Nvbm50cmFja19zdGFuZGFsb25lX2luaXRfc3lzY3RsKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtMTAxOS1cdHRhYmxlW05GX1NZU0NUTF9DVF9BQ0NUXS5kYXRhID0gXHUwMDI2bmV0LVx1MDAzZWN0LnN5c2N0bF9hY2N0O1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jOjEwMjA6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtMTAyMS1cdHRhYmxlW05GX1NZU0NUTF9DVF9FVkVOVFNdLmRhdGEgPSBcdTAwMjZuZXQtXHUwMDNlY3Quc3lzY3RsX2V2ZW50cztcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jPTQ0PXN0YXRpYyB1bnNpZ25lZCBpbnQgbmZuZXRsaW5rX3Blcm5ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy00NS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM6NDY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTQ3LXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobmZubF9ncnBfYWN0aXZlX2xvY2spO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM9NjcwPXN0YXRpYyB2b2lkIG5mbmV0bGlua19iaW5kX2V2ZW50KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGdyb3VwKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy02NzEte1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYzo2NzI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTY3My1cdGludCB0eXBlLCBncm91cF9iaXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYz03Mjg9c3RhdGljIHZvaWQgbmZuZXRsaW5rX3VuYmluZChzdHJ1Y3QgbmV0ICpuZXQsIGludCBncm91cClcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNzI5LXtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM6NzMwOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy03MzEtXHRpbnQgdHlwZSwgZ3JvdXBfYml0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9Mjc0PXN0YXRpYyB2b2lkIG5mdF9jdF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMTQtI2VuZGlmXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMxNTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzE2LVx0Y2FzZSBORlRfQ1RfRVZFTlRNQVNLOiB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz01NTc9c3RhdGljIGludCBuZnRfY3Rfc2V0X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU5Ni0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTk3OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy01OTgtXHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWc9NjQ9Q09ORklHX05GX0NPTk5UUkFDSz1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzo2NTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZy02Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyODQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIE5ldHdvcmsgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgdG91Y2hpbmcgcXVpdGUgYSBmZXcgZmlsZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBuZl9jb25udHJhY2tgIGFuZCBgbmZfbmF0YCBzdWJzeXN0ZW1zLiBUaGUgY2hhbmdlcyBzZWVtIGNlbnRlcmVkIGFyb3VuZCBzcGVjaWZpYyBwcm90b2NvbHM6IEFtYW5kYSwgRlRQLCBJUkMsIGFuZCBURlRQLCBhcyB3ZWxsIGFzIHNvbWUgbW9yZSBnZW5lcmFsIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBmdW5jdGlvbmFsaXRpZXMuIFRoZSBsaXN0IGlzIGV4dGVuc2l2ZTogYG5mX2Nvbm50cmFja19hbWFuZGEuY2AsIGBuZl9jb25udHJhY2tfZnRwLmNgLCBgbmZfY29ubnRyYWNrX2lyYy5jYCwgYW5kIGBuZl9jb25udHJhY2tfdGZ0cC5jYCwgZm9sbG93ZWQgYnkgYG5mX2Nvbm50cmFja19icm9hZGNhc3QuY2AsIGBuZl9jb25udHJhY2tfbmV0bGluay5jYCwgYG5mX2Nvbm50cmFja19lY2FjaGUuY2AsIGBuZl9jb25udHJhY2tfZXhwZWN0LmNgLCB0aGVuIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2Z0cC5jYCwgYG5mX25hdF9pcmMuY2AsIGFuZCBgbmZfbmF0X3RmdHAuY2AuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgcGF0Y2ggaXMgZWl0aGVyIGVuaGFuY2luZyBvciBmaXhpbmcgaW50ZXJhY3Rpb25zIHdpdGggdGhlc2Ugc3BlY2lmaWMgcHJvdG9jb2xzLCBsaWtlbHkgaGFuZGxpbmcgdGhlaXIgY29ubmVjdGlvbiB0cmFja2luZyBvciBOQVQgdHJhdmVyc2FsIG1vcmUgZWZmZWN0aXZlbHkuCgpJIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIGFyZSBlbmFibGVkLiBUaGUgcmVxdWlyZWQgY29uZmlncyB3b3VsZCBiZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYE5GX0NUX05FVExJTktgLCBgTkZfTkFUX0FNQU5EQWAsIGBORl9OQVRfRlRQYCwgYE5GX05BVF9JUkNgLCBhbmQgYE5GX05BVF9URlRQYC4KCkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpZiBgTkZfTkFUX0FNQU5EQWAgaXMgcmVhbGx5IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX05BVF9BTUFOREEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQwNz1jb25maWcgTkZfTkFUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MTY6Y29uZmlnIE5GX05BVF9BTUFOREFcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9Njk9ZW5kaWZcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTcxLSMgTkFUIGhlbHBlcnNcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NzI6b2JqLSQoQ09ORklHX05GX05BVF9BTUFOREEpICYjNDM7PSBuZl9uYXRfYW1hbmRhLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNzMtb2JqLSQoQ09ORklHX05GX05BVF9GVFApICYjNDM7PSBuZl9uYXRfZnRwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTExNAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBNb2R1bGUgQ2hlY2sqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZywgJiMzNDtZZXAsIEkga25vdyB0aG9zZSBOQVQgbW9kdWxlcywgYE5GX05BVF9BTUFOREFgLCBgTkZfTkFUX0ZUUGAsIGBORl9OQVRfSVJDYCwgYW5kIGBORl9OQVRfVEZUUGAgYXJlIGRlZmluaXRlbHkgYXJvdW5kLiBUaGV5JiMzOTtyZSBwcmV0dHkgc3RhbmRhcmQgaW5jbHVzaW9ucywgZXNwZWNpYWxseSBmb3IgYW55b25lIGRlYWxpbmcgd2l0aCBsZWdhY3kgcHJvdG9jb2xzIG9yIHNwZWNpZmljIGFwcGxpY2F0aW9uIGxheWVyIGdhdGV3YXlzLiYjMzQ7IE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgdGhhdCB0aGUgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIG1vZHVsZSBpcyBsb2FkZWQuIFRoYXQmIzM5O3MgYW4gaW1wb3J0YW50IG9uZSBhbmQgSSB3YW50IHRvIHZlcmlmeSBpdHMgZXhpc3RlbmNlLiBHb3R0YSBiZSBzeXN0ZW1hdGljIGFib3V0IHRoZXNlIHRoaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORl9DT05OVFJBQ0tfQlJPQURDQVNUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yNTg9Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjczLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3NDpjb25maWcgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTI3Nz1jb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXHR0cmlzdGF0ZSBcJiMzNDtOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc5Olx0c2VsZWN0IE5GX0NPTk5UUkFDS19CUk9BRENBU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yODAtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTI5Nj1jb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk4LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyOTk6XHRzZWxlY3QgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMwMC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTQ3PW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfSVJDKSAmIzQzOz0gbmZfY29ubnRyYWNrX2lyYy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfQlJPQURDQVNUKSAmIzQzOz0gbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTQ5LW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfTkVUQklPU19OUykgJiM0Mzs9IG5mX2Nvbm50cmFja19uZXRiaW9zX25zLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTcwNQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29ubnRyYWNrIEhlbHBlciBGdW5jdGlvbnMqKgoKT2theSwgaXQgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyBwcmVzZW50IHRoYXQgcmVxdWlyZXMgbXkgYXR0ZW50aW9uLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmb2N1cyBzeW1ib2xzLiBGaXJzdCwgSSBuZWVkIHRvIGxpc3QgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBzZWUgd2hhdCB0aGV5JiMzOTtyZSBkb2luZy4gTGV0JiMzOTtzIHNlZS4uLgoKSSBoYXZlOgoqICAgYGFtYW5kYV9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmNgCiogICBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgCiogICBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jYAoqICAgYG5mX2N0X2V4cGVjdF9pbml0YCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNgCiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jYCB3aGljaCwgd2FpdCwgaXMgdGhhdCAqcmVhbGx5KiBqdXN0IGBoZWxwYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhY2N1cmF0ZSwgcGVyaGFwcyBpdCYjMzk7cyB1c2luZyB0aGUgaGVscGVyIGBmdHBfaGVscGA/CiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jYCAtIHNhbWUgdGhpbmcgaGVyZSwgY291bGQgYmUgbW9yZSBzcGVjaWZpYwoqICAgYGN0bmV0bGlua19hbGxvY19leHBlY3RgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgCiogICBgdGZ0cF9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jYAoqICAgYGhlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY2AgLSBhaCwgdGhlcmUgYXJlIE5BVCBoZWxwZXJzIGFzIHdlbGwKKiAgIGBuZl9uYXRfZnRwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmNgIC0gYSBuYXQgZnVuY3Rpb24gaGVyZSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZwoqICAgYGhlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuY2AgLSBhbmQgYW5vdGhlciBgaGVscGAgZnVuY3Rpb24uCiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuY2AgLSBhbmQgdGhpcyBhcyB3ZWxsLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbmZfY29ubnRyYWNrX2Z0cC5jYCwgYG5mX2Nvbm50cmFja19pcmMuY2AsIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2lyYy5jYCwgYW5kIGBuZl9uYXRfdGZ0cC5jYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGdlbmVyaWMgYGhlbHBgIGZ1bmN0aW9ucyBhcmUgbm90IG1hc2tpbmcgYW55IGRlZXBlciwgbW9yZSBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5LCBhbmQgSSBzaG91bGQgYWxzbyBnZXQgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlc2UgaGVscGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgaGVscFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jPTMzNj1zdGF0aWMgdm9pZCB1cGRhdGVfbmxfc2VxKHN0cnVjdCBuZl9jb25uICpjdCwgdTMyIG5sX3NlcSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYy0zNjAtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYzozNjE6c3RhdGljIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYy0zNjItXHRcdHVuc2lnbmVkIGludCBwcm90b2ZmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjgzMQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYGhlbHBgIEZ1bmN0aW9ucyBmb3IgU3l6a2FsbGVyIENvdmVyYWdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UgY2FuIGxldmVyYWdlIHRoZXNlIGBoZWxwYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgU3l6a2FsbGVyJiMzOTtzIGNvdmVyYWdlIG1lY2hhbmlzbS4gVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYGhlbHBgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGNvdWxkIHBvdGVudGlhbGx5IHByZXNlbnQgYSBuYW1pbmcgY29uZmxpY3QgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGZ1bmN0aW9ucyB3aXRoIHRoYXQgbmFtZSwgbWFraW5nIGRpcmVjdCB0YXJnZXRpbmcgZGlmZmljdWx0LiBIb3dldmVyLCBTeXprYWxsZXIgdXNlcyBQQyBhZGRyZXNzZXMgZm9yIGl0cyBjb3ZlcmFnZSBhbmFseXNpcywgc28gdGhhdCBwYXJ0aWN1bGFyIGlzc3VlIGlzbiYjMzk7dCBhIHByb2JsZW0uCgpGb3IgdGhlIGBGb2N1c1N5bWJvbHNgIGNvbXBvbmVudCwgd2UmIzM5O3ZlIGdvdCBvcHRpb25zOiB3ZSBjYW4gcHJvdmlkZSBhbGwgZXhwb3J0ZWQgZnVuY3Rpb25zIChzdGF0aWMgYW5kIG5vbi1zdGF0aWMpLCBvciBqdXN0IHRoZSBzdGF0aWMgb25lcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxpc3QgdGhlbSBhbmQgZXZhbHVhdGUuIExldCYjMzk7cyBzZWUuLi4gd2UgaGF2ZTogYGFtYW5kYV9oZWxwYCwgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYGN0bmV0bGlua19hbGxvY19leHBlY3RgLCBgdGZ0cF9oZWxwYCwgYW5kIGBuZl9uYXRfZnRwYC4KCkZvciB0aGVzZSBzdGF0aWMgYGhlbHBgIGZ1bmN0aW9ucywgd2UgaGF2ZSB0aGUgb3B0aW9uIG9mIGVpdGhlciBpbmNsdWRpbmcgdGhlbSBvciBvbWl0dGluZyB0aGVtIGZyb20gdGhlIGZvY3VzIHN5bWJvbHMuIEl0IHNlZW1zIGJldHRlciB0byBpbmNsdWRlIHRob3NlIHdpdGggdW5pcXVlIG5hbWVzLCBzaW5jZSB0aG9zZSBhcmUgY2xlYXJseSBkaXN0aW5ndWlzaGFibGUuCgpOb3csIHdhaXQgYSBtb21lbnQsIHRoaW5raW5nIHRocm91Z2ggdGhpcy4uLiBsZXQmIzM5O3MgaWRlbnRpZnkgc29tZSB0YXJnZXRzOiBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAgbG9va3MgbGlrZSBhIHNvbGlkIGNob2ljZS4gQWxzbywgYG5mX2N0X2V4cGVjdF9pbml0YCwgYW5kIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCBsb29rIGdvb2QsIHRvby4gT2gsIGFuZCBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCwgYGFtYW5kYV9oZWxwYCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAgYWxzby4KCkkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgaWYgYG5mX25hdF9hbWFuZGFgIGlzIHVuaXF1ZWx5IG5hbWVkOyBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byB2ZXJpZnkgdGhlc2UgdGhpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIHVuc2lnbmVkIGludCBoZWxwXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmM9MjU9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2FtYW5kYSA9XG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtMjctXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzoyODpzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTI5LVx0XHRcdCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3Njc4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCBhbiBleHBlcnQmIzM5O3MgbWluZDoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIFRyb3VibGVzaG9vdGluZyBEaXJlY3RpdmUqKgoKUmlnaHQsIGl0IGJvaWxzIGRvd24gdG8gc29tZXRoaW5nIHN0cmFpZ2h0Zm9yd2FyZDogKmhlbHAqLiBJIG5lZWQgdG8gZmlndXJlIHRoaXMgb3V0LCB3aGljaCBtZWFucyBJJiMzOTttIGxvb2tpbmcgZm9yIGd1aWRhbmNlIG9yIGEgc29sdXRpb24uIEl0JiMzOTtzIGEgdHJvdWJsZXNob290aW5nIHNpdHVhdGlvbiwgcHJvYmFibHkgZGVhbGluZyB3aXRoIE5BVCAoTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uKS4KCkdpdmVuIHRoZSBjb250ZXh0LCB0aGUgaW1tZWRpYXRlbHkgcmVsZXZhbnQgYXJlYXMgYXJlIGxpa2VseSB0aGUga2VybmVsIG1vZHVsZXMgaGFuZGxpbmcgSVJDIGFuZCBURlRQIE5BVCBzcGVjaWZpY2FsbHkuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRob3NlIG1vZHVsZXMsIGBuZl9uYXRfaXJjLmNgIGFuZCBgbmZfbmF0X3RmdHAuY2AsIGhhbmRsZSB0aGVpciByZXNwZWN0aXZlIHByb3RvY29scyB3aXRoaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcmsuIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhleSBpbnRlcmNlcHQsIHRyYW5zbGF0ZSwgYW5kIGZvcndhcmQgcGFja2V0cyB0byBzZWUgaWYgSSBjYW4gZmluZCB0aGUgcm9vdCBjYXVzZSBvZiB3aGF0ZXZlciBpcyBnb2luZyB3cm9uZy4gUGVyaGFwcyB0aGVyZSBhcmUgc29tZSBlZGdlIGNhc2VzIEkmIzM5O20gb3Zlcmxvb2tpbmcgaW4gdGhlaXIgbG9naWMuIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgdW5zaWduZWQgaW50IGhlbHBcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYz0yOT1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19uYXRfaGVscGVyIG5hdF9oZWxwZXJfaXJjID1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYy0zMS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jOjMyOnN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMtMzMtXHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwNTcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyB0aG91Z2h0IHByb2Nlc3M6CgoqKlJldmlld2luZyBhbmQgVmFsaWRhdGluZyBGdW5jdGlvbiBOYW1pbmcqKgoKQWxyaWdodCwgc28gaXQmIzM5O3MgYWxsIGFib3V0IGNoZWNraW5nIHRoZXNlIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IHRoZSAmIzM5O2hlbHAmIzM5OyBmdW5jdGlvbnMuIFRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgc3RyYWlnaHRmb3J3YXJkLCB0aGVzZSBzeW1ib2xzIGFyZSBpbmRlZWQgcmVsYXRlZCB0byBoZWxwIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O3ZlIGdvdCB0aGlzIGxpc3Qgb2YgZm9jdXMgc3ltYm9sczogYGFtYW5kYV9oZWxwYCwgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYGN0bmV0bGlua19hbGxvY19leHBlY3RgLCBgdGZ0cF9oZWxwYCwgYW5kIGBuZl9uYXRfZnRwYC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdXNpbmcgdGhlIHJpZ2h0IG5hbWUgZm9yIHRoYXQgbGFzdCBvbmUsIGBuZl9uYXRfZnRwYC4gVGhhdCBzb3VuZHMgZmFtaWxpYXIgYnV0IGJlc3QgdG8gY29uZmlybSBiZWZvcmUgcHJvY2VlZGluZy4gVGltZSB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBvZiBgbmZfbmF0X2Z0cGAuIEkmIzM5O20gYSBzdGlja2xlciBmb3IgYWNjdXJhY3kgYW5kIHRoaXMgd2lsbCBsaWtlbHkgYmUgaW1wb3J0YW50IGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmM9MzM9c3RhdGljIGludCBuZl9uYXRfZnRwX2ZtdF9jbWQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmMtNjItICAgTWFuZ2xlIGl0LCBhbmQgY2hhbmdlIHRoZSBleHBlY3RhdGlvbiB0byBtYXRjaCB0aGUgbmV3IHZlcnNpb24uICovXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYzo2MzpzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jLTY0LVx0XHRcdCAgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTQ5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgbmZfbmF0X2Z0cGAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBgbmZfbmF0X2Z0cGAuIE5vdywgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlc2UgYXJlIGVuYWJsZWQ6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgLCBgTkZfQ1RfTkVUTElOS2AsIGBORl9OQVRfQU1BTkRBYCwgYE5GX05BVF9GVFBgLCBgTkZfTkFUX0lSQ2AsIGFuZCBgTkZfTkFUX1RGVFBgLgoKV2FpdCBhIG1pbnV0ZSwgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIGlzIGEgdHJpc3RhdGUgY29uZmlnLiBUaGF0IG1lYW5zIGl0IGNhbiBiZSBvbiwgb2ZmLCBvciBtb2R1bGFyLiBCdXQgaXQgc2VlbXMgdG8gYmUgc2VsZWN0ZWQgaW5kaXJlY3RseSBieSBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgLiBJZGVhbGx5LCBJJiMzOTtkIHdhbnQgdG8gZW5hYmxlIGl0IGRpcmVjdGx5IGlmIEkgY2FuLCBvciwgaWYgbm90LCBJJiMzOTtkIGNob29zZSB0aGUgb25lcyB0aGF0IHNlbGVjdCBpdC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIHNlZSBpZiBJIGNhbiBlbmFibGUgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIGRpcmVjdGx5LiBBbHJpZ2h0LCBoZXJlJiMzOTtzIHRoZSByZWxldmFudCBzZWN0aW9uOgoKYGBgCmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUCgl0cmlzdGF0ZQpgYGAKCkFoLCBpdCBoYXMgbm8gcHJvbXB0LiBUaGF0IG1lYW5zIHRoZSB1c2VyIGNhbiYjMzk7dCBzZWxlY3QgaXQgZGlyZWN0bHkuIFNvLCB0aGUgYmVzdCBhcHByb2FjaCBoZXJlIGlzIHRvIGdvIHdpdGggZW5hYmxpbmcgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCBhbmQgYE5GX0NPTk5UUkFDS19TTk1QYCBpbnN0ZWFkLiBUaGV5JiMzOTtsbCBwdWxsIGl0IGluIGF1dG9tYXRpY2FsbHkuIFRoYXQmIzM5O3MgdGhlIGNsZWFuZXIgc29sdXRpb24sIGtlZXBpbmcgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGEgaGlkZGVuIGNvbmZpZyBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mjc0PWNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzc6Y29uZmlnIE5GX0NPTk5UUkFDS19ORVRCSU9TX05TXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0QklPUyBuYW1lIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM1MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gUmV2aWV3KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGluY29ycG9yYXRlIGEgY291cGxlIG9mIG5ldyBjb25uZWN0aW9uIHRyYWNraW5nIG9wdGlvbnMgaW50byB0aGUgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGFkZGluZyBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgIHRvIHRoZSBsaXN0LiBUaGV5IHNlZW0gcmVsZXZhbnQgdG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBhbmQgSSB3YW50IHRvIGJlIGNvbXByZWhlbnNpdmUuCgpOb3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHNvbWV0aGluZy4gSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgYE5GX0NPTk5UUkFDS19FVkVOVFNgIG9wdGlvbiB0byBzZWUgaWYgaXQmIzM5O3Mgc2V0IHVwIHdpdGggYSBwcm9tcHQuIEFoLCBnb29kLiBZZXMsIGl0IGhhcyBhIGJvb2xlYW4gcHJvbXB0LiBUaGlzIGlzIGltcG9ydGFudCBmb3IgdXNlciBjdXN0b21pemF0aW9uIGluIGEgd2F5IEkgZXhwZWN0LgoKT2theSwgbmV4dCB1cCBpcyBgTkZfQ1RfTkVUTElOS2AuIE5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DVF9ORVRMSU5LJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zNTU9Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM2NS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjY6Y29uZmlnIE5GX0NUX05FVExJTktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjctXHR0cmlzdGF0ZSAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgbmV0bGluayBpbnRlcmZhY2UmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzczOmNvbmZpZyBORl9DVF9ORVRMSU5LX1RJTUVPVVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzQtXHR0cmlzdGF0ZSAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM4NTpjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODYtXHR0cmlzdGF0ZSAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycyBpbiB1c2VyLXNwYWNlIHZpYSBOZXRsaW5rJiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQXNzZXNzaW5nIHRoZSBMYW5kc2NhcGUqKgoKQWxyaWdodCwgd2UmIzM5O3ZlIGdvdCBhIHByb21wdCB0byB3b3JrIHdpdGgsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIGdpdmVuIHRoZSBpbXBsaWVkIGNvbnRleHQgb2YgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpLCBhbmQgdGhlIHNwZWNpZmljIGZvY3VzIG9uIHNvbWUgd2VsbC1rbm93biBhcHBsaWNhdGlvbiBsYXllciBwcm90b2NvbHMsIGxldCBtZSBxdWlja2x5IHJldmlldyB0aGVzZSBOQVQgbW9kdWxlczogYE5GX05BVF9BTUFOREFgLCBgTkZfTkFUX0ZUUGAsIGBORl9OQVRfSVJDYCwgYW5kIGBORl9OQVRfVEZUUGAuIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHdoYXQgdGhleSBkbywgaWYgdGhleSBhcmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBwcm9ibGVtIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIG1vcmUgZ2VuZXJhbCBOQVQgZnVuY3Rpb25hbGl0eSBvciBzb21lIG5ldHdvcmsgZmlsdGVyaW5nLCBzbyBJJiMzOTtsbCBjb25zaWRlciBob3cgdGhlc2UgYXJlIGFwcGxpZWQgYXMgd2VsbC4gVGhpcyBzZXRzIHRoZSBzdGFnZSBmb3IgYSBtb3JlIGZvY3VzZWQgYW5hbHlzaXMsIG5vdCBqdXN0IGEgc3VyZmFjZS1sZXZlbCByZXNwb25zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9BTUFOREEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQwNz1jb25maWcgTkZfTkFUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MTY6Y29uZmlnIE5GX05BVF9BTUFOREFcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE3MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBTZWxlY3Rpb24gTWVjaGFuaXNtIG9mIGBORl9OQVRfQU1BTkRBYCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyBpbml0aWFsIHByb21wdCBmb3IgYE5GX05BVF9BTUFOREFgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiAqaG93KiBpcyB0aGlzIHBhcnRpY3VsYXIgZW50aXR5IGJlaW5nIGNob3NlbiBvciB0cmlnZ2VyZWQ/IFNpbmNlIEkmIzM5O20gbm90IGdpdmVuIGFueSBjb250ZXh0LCBJJiMzOTtsbCBuZWVkIHRvIHJlY29uc3RydWN0IHRoZSBleGVjdXRpb24gcGF0aC4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRpcmVjdCBmdW5jdGlvbiBjYWxsLCBhbiBldmVudC1kcml2ZW4gYWN0aXZhdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gSSBuZWVkIHRvIGxvb2sgZm9yIGNsdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIOKAkyBjYWxscyB0byBzaW1pbGFyIGZ1bmN0aW9ucywgY29udGV4dC1kZXBlbmRlbnQgc2VsZWN0aW9uIGxvZ2ljLCBvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbiBwbGF5PyBJcyB0aGlzIHJlbGF0ZWQgdG8gc29tZSBicm9hZGVyIG5ldHdvcmtpbmcgYXJjaGl0ZWN0dXJlIG9yIGlzIGl0IHN0YW5kYWxvbmUuCgpFc3NlbnRpYWxseSwgd2l0aG91dCBhIHByb21wdCwgdGhlIHNlbGVjdGlvbiAqbWVjaGFuaXNtKiBpcyB0aGUgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBoZXJlLCBub3QgdGhlIG91dHB1dCBpdHNlbGYsIGFuZCBpdCBsaWtlbHkgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gTXkgbWluZCBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc2NlbmFyaW9zOiBJcyB0aGlzIHBhcnQgb2YgYSBydWxlLWJhc2VkIHN5c3RlbT8gQSBzdGF0ZSBtYWNoaW5lPyBPciBzb21ldGhpbmcgbW9yZSBhZCBob2M/IEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvbnRyb2wgZmxvdyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoaXMgdGhpbmcgZ2V0cyBpbnN0YW50aWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5GX05BVF9BTUFOREEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ3OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFbmFibGVtZW50IG9mIE5GX05BVF9BTUFOREEqKgoKT2theSwgc28gSSBzZWUgYE5GX05BVF9BTUFOREFgIGlzIGVuYWJsZWQgc29tZXdoZXJlLCBidXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKmhvdyouIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgTmV0ZmlsdGVyIG9wdGlvbnMgYXJlIGRlZmluZWQsIHNvIGl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBvciByZWxhdGlvbnNoaXBzIHRoYXQgbWlnaHQgYmUgZW5hYmxpbmcgYE5GX05BVF9BTUFOREFgLiBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoYXQgcGFydGljdWxhciBzeW1ib2wgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEl0JiMzOTtzIGxpa2VseSBnb2luZyB0byBiZSBjb25kaXRpb25hbCBiYXNlZCBvbiBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZmVhdHVyZXMuIEnigJlsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cyBvciBhbnkgb3RoZXIgbG9naWMgdGhhdCBkZXRlcm1pbmVzIGl0cyBpbmNsdXNpb24gaW4gdGhlIGtlcm5lbCBidWlsZC4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQxMDpcdFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4gNDExOlx0XHRoZWxwXG4gNDEyOlx0XHQgIFRoZSBOQVQgb3B0aW9uIGFsbG93cyBtYXNxdWVyYWRpbmcsIHBvcnQgZm9yd2FyZGluZyBhbmQgb3RoZXJcbiA0MTM6XHRcdCAgZm9ybXMgb2YgZnVsbCBOZXR3b3JrIEFkZHJlc3MgUG9ydCBUcmFuc2xhdGlvbi4gVGhpcyBjYW4gYmVcbiA0MTQ6XHRcdCAgY29udHJvbGxlZCBieSBpcHRhYmxlcywgaXA2dGFibGVzIG9yIG5mdC5cbiA0MTU6XHRcbiA0MTY6XHRjb25maWcgTkZfTkFUX0FNQU5EQVxuIDQxNzpcdFx0dHJpc3RhdGVcbiA0MTg6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9OQVRcbiA0MTk6XHRcdGRlZmF1bHQgTkZfTkFUIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfQU1BTkRBXG4gNDIwOlx0XG4gNDIxOlx0Y29uZmlnIE5GX05BVF9GVFBcbiA0MjI6XHRcdHRyaXN0YXRlXG4gNDIzOlx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUXG4gNDI0Olx0XHRkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX0ZUUFxuIDQyNTpcdFxuIDQyNjpcdGNvbmZpZyBORl9OQVRfSVJDXG4gNDI3Olx0XHR0cmlzdGF0ZVxuIDQyODpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVFxuIDQyOTpcdFx0ZGVmYXVsdCBORl9OQVQgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19JUkNcbiA0MzA6XHRcbiA0MzE6XHRjb25maWcgTkZfTkFUX1NJUFxuIDQzMjpcdFx0dHJpc3RhdGVcbiA0MzM6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9OQVRcbiA0MzQ6XHRcdGRlZmF1bHQgTkZfTkFUIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfU0lQXG4gNDM1Olx0XG4gNDM2Olx0Y29uZmlnIE5GX05BVF9URlRQXG4gNDM3Olx0XHR0cmlzdGF0ZVxuIDQzODpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVFxuIDQzOTpcdFx0ZGVmYXVsdCBORl9OQVQgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19URlRQXG4gNDQwOlx0XG4gNDQxOlx0Y29uZmlnIE5GX05BVF9SRURJUkVDVFxuIDQ0MjpcdFx0Ym9vbFxuIDQ0MzpcdFxuIDQ0NDpcdGNvbmZpZyBORl9OQVRfTUFTUVVFUkFERVxuIDQ0NTpcdFx0Ym9vbFxuIDQ0NjpcdFxuIDQ0NzpcdGNvbmZpZyBORl9OQVRfT1ZTXG4gNDQ4Olx0XHRib29sXG4gNDQ5Olx0XG4gNDUwOlx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxuIDQ1MTpcdFx0dHJpc3RhdGVcbiA0NTI6XHRcbiA0NTM6XHRlbmRpZiAjIE5GX0NPTk5UUkFDS1xuIDQ1NDpcdFxuIDQ1NTpcdGNvbmZpZyBORl9UQUJMRVNcbiA0NTY6XHRcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuIDQ1NzpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiA0NTg6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFwmIzM0O1xuIDQ1OTpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM2NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgbG9naWNhbGx5OgoKKipFbmFibGluZyBOQVQgU3VwcG9ydCBmb3IgU3BlY2lmaWMgUHJvdG9jb2xzKioKClJpZ2h0LCBzbywgaWYgSSYjMzk7bSB1bmRlcnN0YW5kaW5nIHRoaXMgY29ycmVjdGx5LCB0aGUgYmFzaWMgTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIChOQVQpIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGBORl9OQVRgIGJlaW5nIGFjdGl2ZS4gQW5kLCBvZiBjb3Vyc2UsIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gdHJhY2tpbmcgcGllY2VzIChgTkZfQ09OTlRSQUNLXypgKSBuZWVkIHRvIGJlIGVuYWJsZWQgYXMgd2VsbCwgc2luY2UgTkFUIHJlbGllcyBvbiB0aGF0LiBUaGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uLgoKVGhlcmVmb3JlLCBmb3Igc3BlY2lmaWMgcHJvdG9jb2wgc3VwcG9ydCwgSSBuZWVkIHRvIGVuYWJsZSBhIGZldyBrZXkgbW9kdWxlcy4gSSBzaG91bGQgZW5hYmxlIGBORl9OQVRgLCBvZiBjb3Vyc2UsIGFuZCB0aGVuIGV4cGxpY2l0bHkgZW5hYmxlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlcyBmb3IgdGhlIHByb3RvY29scyBJJiMzOTttIGludGVyZXN0ZWQgaW46IHNwZWNpZmljYWxseSwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYW5kIGBORl9DT05OVFJBQ0tfVEZUUGAuIFRoYXQgc2hvdWxkIGNvdmVyIHRoZSBjcnVjaWFsIG9uZXMgZm9yIHRoaXMgdXNlIGNhc2UuCgpOb3csIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgYE5GX05BVGAgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uIHdpdGggYSBwcm9tcHQuIEFoIHllcywgSSByZW1lbWJlciB0aGF0IGBjb25maWcgTkZfTkFUYCBpbmRlZWQgaGFzIGEgcHJvbXB0LCB1c3VhbGx5IHNvbWV0aGluZyBhbG9uZyB0aGUgbGluZXMgb2YgJiMzNDtOZXR3b3JrIGFkZHJlc3MgdHJhbnNsYXRpb24gc3VwcG9ydCYjMzQ7IG9yIGEgc2ltaWxhciBwaHJhc2luZy4gVGhpcyBjb25maXJtcyBpdCYjMzk7cyBhIHNlbGVjdGFibGUgb3B0aW9uLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGZsZXhpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0XHRkZWZhdWx0IG5cbiA0MDE6XHRcdGRlcGVuZHMgb24gKE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIHx8IE5FVEZJTFRFUl9ORVRMSU5LX0xPRykgXHUwMDI2XHUwMDI2IE5GX0NUX05FVExJTktcbiA0MDI6XHRcdGhlbHBcbiA0MDM6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgTkZRVUVVRSBhbmQgTkZMT0cgY2FuIGluY2x1ZGVcbiA0MDQ6XHRcdCAgQ29ubmVjdGlvbiBUcmFja2luZyBpbmZvcm1hdGlvbiB0b2dldGhlciB3aXRoIHRoZSBwYWNrZXQgaXNcbiA0MDU6XHRcdCAgdGhlIGVucXVldWVkIHZpYSBORk5FVExJTksuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIE5GX05BVFxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4gNDEwOlx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiA0MTE6XHRcdGhlbHBcbiA0MTI6XHRcdCAgVGhlIE5BVCBvcHRpb24gYWxsb3dzIG1hc3F1ZXJhZGluZywgcG9ydCBmb3J3YXJkaW5nIGFuZCBvdGhlclxuIDQxMzpcdFx0ICBmb3JtcyBvZiBmdWxsIE5ldHdvcmsgQWRkcmVzcyBQb3J0IFRyYW5zbGF0aW9uLiBUaGlzIGNhbiBiZVxuIDQxNDpcdFx0ICBjb250cm9sbGVkIGJ5IGlwdGFibGVzLCBpcDZ0YWJsZXMgb3IgbmZ0LlxuIDQxNTpcdFxuIDQxNjpcdGNvbmZpZyBORl9OQVRfQU1BTkRBXG4gNDE3Olx0XHR0cmlzdGF0ZVxuIDQxODpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVFxuIDQxOTpcdFx0ZGVmYXVsdCBORl9OQVQgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19BTUFOREFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwODIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gKE5BVCkgYW5kIENvbm5lY3Rpb24gVHJhY2tpbmcgTW9kdWxlcyoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzIGNvbmZpcm1lZDogYE5GX05BVGAgZG9lcyBpbmRlZWQgaGF2ZSBhIHByb21wdCwgd2hpY2ggaXMgZ29vZC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBhbmQgaW50ZXJwbGF5IHdpdGggdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlcy4gSSYjMzk7bSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgaG93IHRoZXNlIGludGVyYWN0IGluIHNjZW5hcmlvcyB3aXRoIG1vcmUgc3BlY2lmaWMgcHJvdG9jb2xzLiBUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpbiBvbiBgTkZfQ09OTlRSQUNLX0FNQU5EQWAsIGBORl9DT05OVFJBQ0tfRlRQYCwgYE5GX0NPTk5UUkFDS19JUkNgLCBhbmQgYE5GX0NPTk5UUkFDS19URlRQYC4gSSB3YW50IHRvIHNlZSBpZiB0aGUgTkFUIHByb21wdHMgaGF2ZSBiZWVuIGludGVncmF0ZWQgdG8gd29yayB3aXRoIHRob3NlIGNvbm5lY3Rpb24gdHJhY2tlcnMuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlZXBlciBOQVQgYmVoYXZpb3IgaW4gdGhlc2UgbW9yZSBzcGVjaWFsaXplZCBwcm90b2NvbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQyNwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIHRoZXNlIHByb21wdHMsIHdoaWNoIEkgdW5kZXJzdGFuZC4gTXkgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSBuZWVkIHRvIGVuYWJsZS4gQmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIGF0IGhhbmQsIEkgYmVsaWV2ZSB3ZSBuZWVkIHRvIGVuYWJsZSB0aGUgZm9sbG93aW5nOiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AsIGBORl9DT05OVFJBQ0tfU05NUGAsIGBORl9DVF9ORVRMSU5LYCwgYW5kIGBORl9OQVRgLgoKQmVmb3JlIEkgbW92ZSBvbiwgSSB3YW50IHRvIGNvbmZpcm0gc29tZXRoaW5nIHRoYXQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AgYW5kIGBORl9DT05OVFJBQ0tfU05NUGAgYXJlICp0aGUgb25seSogb3B0aW9ucyB0cmlnZ2VyaW5nIHRoZSBzZWxlY3Rpb24gb2YgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgLiBUaGF0IGJpdCBvZiBpbmZvcm1hdGlvbiBpcyBrZXkgdG8gZW5zdXJpbmcgdGhhdCB3ZSBoYXZlIGEgbGVhbiwgd2VsbC1zdHJ1Y3R1cmVkIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORl9DT05OVFJBQ0tfQlJPQURDQVNUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yNzc9Y29uZmlnIE5GX0NPTk5UUkFDS19ORVRCSU9TX05TXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0QklPUyBuYW1lIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9LY29uZmlnOjI3OTpcdHNlbGVjdCBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjgwLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yOTY9Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5OC1cdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk5Olx0c2VsZWN0IE5GX0NPTk5UUkFDS19CUk9BRENBU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMDAtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTkxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhlIGN1cnJlbnQgZGlyZWN0aW9uIHNlZW1zIHNvdW5kLiBXZSYjMzk7cmUgZ29pbmcgdG8gaW5jbHVkZSBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgLiBNYWtlcyBwZXJmZWN0IHNlbnNlLgoKSG9sZCBvbiBhIHNlYy4uLiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AgaXMgYSBib29sZWFuLCByaWdodD8gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlLi4uCgpSaWdodCwgdGhlIHBhdGNoIGl0c2VsZiB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgbmZfY29ubnRyYWNrX2FtYW5kYS5jYCwgYG5mX2Nvbm50cmFja19mdHAuY2AsIGBuZl9jb25udHJhY2tfaXJjLmNgLCBgbmZfY29ubnRyYWNrX3RmdHAuY2AsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgLCBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGBuZl9jb25udHJhY2tfZWNhY2hlLmNgLCBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCwgYW5kIHRoZSBOQVQgY291bnRlcnBhcnRzIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2Z0cC5jYCwgYG5mX25hdF9pcmMuY2AsIGBuZl9uYXRfdGZ0cC5jYC4gQSBmYWlybHkgY29tcHJlaGVuc2l2ZSBzZXQgb2YgbW9kdWxlcy4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczogYGFtYW5kYV9oZWxwYCwgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYGN0bmV0bGlua19hbGxvY19leHBlY3RgLCBgdGZ0cF9oZWxwYCwgYW5kIGBuZl9uYXRfZnRwYC4gR290IGl0LgoKQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAgaXMgZXhwb3J0ZWQgYXMgYSBzeW1ib2wgb3IgaWYgaXQmIzM5O3Mgc3RhdGljLiBUaGF0JiMzOTtsbCBiZSBhIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGV2ZW50IHJlcG9ydGluZyBpcyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTM5PW5mX2Nvbm50cmFja19ldmVudChlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdClcbi0tXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0OC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTQ5OnZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGV2ZW50LFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNTAtXHRcdFx0ICAgICAgIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xNjA9c3RhdGljIGlubGluZSBib29sIG5mX2Nvbm50cmFja19lY2FjaGVfZHdvcmtfcGVuZGluZyhjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNjUtXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjE2NjpzdGF0aWMgaW5saW5lIHZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGUsXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE2Ny1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jPTIzOT1FWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9kZWxpdmVyX2NhY2hlZF9ldmVudHMpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMjQwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MjQxOnZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGV2ZW50LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMjQyLVx0XHRcdCAgICAgICBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDE1MwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBOb24tU3RhdGljIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIGRlZmluaXRlbHkgKmV4cG9ydGVkKiBvciBhdCBsZWFzdCBpc24mIzM5O3QgZGVjbGFyZWQgc3RhdGljLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBpbXBvcnRhbnQgb2JzZXJ2YXRpb24uIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBob3cgaXMgaXQgYmVpbmcgaW5pdGlhbGl6ZWQ/IFdlIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBpbnN0YW50aWF0aW9uIHByb2Nlc3MgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKR2l2ZW4gdGhhdCBjb250ZXh0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgbmZfY3RfZXhwZWN0X2luaXRgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQsIGNvbnNpZGVyaW5nIHRoZSBuYW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgKnRoYXQqIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCwgd2hhdCBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCwgYW5kIHRoZSBzY29wZSBvZiBpdHMgaW1wYWN0LiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgc3Vycm91bmRpbmcgZGF0YSBzdHJ1Y3R1cmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIG5mX2N0X2V4cGVjdF9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg9MTUzPXN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpuZl9jdF9leHBlY3RfYWxsb2Moc3RydWN0IG5mX2Nvbm4gKm1lKTtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTU0OnZvaWQgbmZfY3RfZXhwZWN0X2luaXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKiwgdW5zaWduZWQgaW50LCB1X2ludDhfdCxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmgtMTU1LVx0XHQgICAgICAgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICosXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM9MzE4PUVYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X2V4cGVjdF9hbGxvYyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtMzIzLSAqL1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM6MzI0OnZvaWQgbmZfY3RfZXhwZWN0X2luaXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCwgdW5zaWduZWQgaW50IGNsYXNzLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtMzI1LVx0XHQgICAgICAgdV9pbnQ4X3QgZmFtaWx5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYzNgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIHRoZSBEeW5hbWljIE5hdHVyZSoqCgpSaWdodCwgc28gdGhlIGNvbnRleHQgaXMgY3J1Y2lhbCBoZXJlLiBUaGUgc2l0dWF0aW9uIGF0IGhhbmQgY2xlYXJseSBpc24mIzM5O3Qgc3RhdGljLiBJdCYjMzk7cyBkeW5hbWljLCBjaGFuZ2luZywgZXZvbHZpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbHVpZGl0eSBvZiBpdCBhbGwsIHNvIEkgY2FuIHN0YXJ0IHRvIGJ1aWxkIGEgZ29vZCBtb2RlbCwgYW5kIHNvbHZlIHRoZSBwcm9ibGVtLgoKTGV0JiMzOTtzIG5vdCBvdmVyLWVuZ2luZWVyIHRoaXMuIEluc3RlYWQgb2YgYSBkZWVwIGRpdmUsIGxldCYjMzk7cyBqdXN0IG1ha2UgYSBzaW1wbGUgY2hlY2sgd2l0aCBhIHRhcmdldGVkIGFwcHJvYWNoIHRvIGdldCB0aGUgaGlnaC1sZXZlbCBwaWN0dXJlLCByaWdodD8gTGV0IG1lIHNlZS4uLiBJIHNob3VsZCBjaGVjayBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgdG8gZ2V0IGEgZ29vZCBiZWFyaW5nLiBGcm9tIHRoYXQsIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBjb3JyZWN0IGNvdXJzZSBvZiBhY3Rpb24sIGFuZCBrbm93IHdoYXQgZnVydGhlciBpbmZvcm1hdGlvbiBpcyBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19hbGxvY19leHBlY3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI2MzA9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNjMxOmN0bmV0bGlua19hbGxvY19leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNjMyLVx0XHQgICAgICAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmFzc2lnbl9oZWxwZXIsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI4NTY9Y3RuZXRsaW5rX2dsdWVfYXR0YWNoX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI4ODctXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mjg4ODpcdGV4cCA9IGN0bmV0bGlua19hbGxvY19leHBlY3QoKGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCAqKWNkYSwgY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg4OS1cdFx0XHRcdCAgICAgYXNzaWduX2hlbHBlciwgXHUwMDI2dHVwbGUsIFx1MDAyNm1hc2spO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNTE5PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzUyMDpjdG5ldGxpbmtfYWxsb2NfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSwgc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM1MjEtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqYXNzaWduX2hlbHBlcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU5Nj1jdG5ldGxpbmtfY3JlYXRlX2V4cGVjdChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MjctXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYyODpcdGV4cCA9IGN0bmV0bGlua19hbGxvY19leHBlY3QoY2RhLCBjdCwgTlVMTCwgXHUwMDI2dHVwbGUsIFx1MDAyNm1hc2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MjktXHRpZiAoSVNfRVJSKGV4cCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzODEKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYSBQb3RlbnRpYWwgU3l6a2FsbGVyIFRhcmdldCoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBzcGVjaWZpYyBwaWVjZSBvZiBjb2RlLCB3aGF0ZXZlciBpdCBpcywgcHJlc2VudHMgYSBzdGF0aWMgc3RhdGUsIHdoaWNoIGlzIGludHJpZ3VpbmcuIFN0YXRpYyB1c3VhbGx5IG1lYW5zIGVhc2llciB0byBhbmFseXplLCBpbiBhIHdheSwgYnV0IGFsc28gcG90ZW50aWFsbHkgYSBsZXNzIGR5bmFtaWMgYXR0YWNrIHN1cmZhY2UuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyICpjYW4qIHRhcmdldCBpdCBpcyB0aGUgcmVhbCBraWNrZXIuIFRoYXQgbWVhbnMgdGhlcmUmIzM5O3Mgc29tZSBpbnRlcmFjdGlvbiBwb3NzaWJsZSwgd2hpY2ggaW1tZWRpYXRlbHkgZWxldmF0ZXMgaXRzIHJlbGV2YW5jZS4gR2l2ZW4gc3l6a2FsbGVy4oCZcyBmb2N1cyBvbiBkZXRlY3RpbmcgYW5kIGV4cGxvaXRpbmcgYnVncywgdGhpcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYC4gVGhhdCBmdW5jdGlvbiYjMzk7cyBuYW1lIGhpbnRzIGF0IGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3Qg4oCTIG5ldHdvcmsgY29ubmVjdGlvbiB0cmFja2luZywgYnJvYWRjYXN0IGhhbmRsaW5nLCBhbmQgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxsIHBvdGVudGlhbCBhcmVhcyByaXBlIGZvciB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgcmFjZSBjb25kaXRpb25zIG9yIGJ1ZmZlciBvdmVyZmxvd3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHVzZXItY29udHJvbGxlZCBkYXRhIG9yIG1hbGZvcm1lZCBwYWNrZXRzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5oPTE2Mj12b2lkIG5mX2Nvbm50cmFja19oZWxwZXJfZmluaSh2b2lkKTtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmgtMTYzLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuaDoxNjQ6aW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5oLTE2NS1cdFx0XHRcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTE4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM6MTk6aW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMtMjAtXHRcdFx0XHRzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMtOTQtfVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM6OTU6RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTk2LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGJpb3NfbnMuYz0zOT1zdGF0aWMgaW50IG5ldGJpb3NfbnNfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRiaW9zX25zLmMtNDIte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0Ymlvc19ucy5jOjQzOlx0cmV0dXJuIG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChza2IsIGN0LCBjdGluZm8sIHRpbWVvdXQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0Ymlvc19ucy5jLTQ0LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zbm1wLmM9Mjk9c3RhdGljIGludCBzbm1wX2Nvbm50cmFja19oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NubXAuYy0zNC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NubXAuYzozNTpcdG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChza2IsIGN0LCBjdGluZm8sIHRpbWVvdXQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc25tcC5jLTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjIyOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk9wZXJhdGlvbmFsIENoZWNrIGFuZCBWYXJpYWJsZSBWYWxpZGF0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgZGF0YSYjMzk7cyBiZWVuIGV4cG9ydGVkLCB0aGF0JiMzOTtzIHRoZSBmaXJzdCBjcml0aWNhbCBwb2ludCB0byBjb25maXJtLiBOb3csIGJlZm9yZSBJIGp1bXAgaW50byBhbnkgYW5hbHlzaXMgb3IgcHJvY2Vzc2luZywgSSBuZWVkIHRvIHZlcmlmeSBpdHMgaW50ZWdyaXR5IGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBhbWFuZGFfaGVscGAgZnVuY3Rpb24gb3IgZG9jdW1lbnRhdGlvbi4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IHZhcmlhYmxlLCBgYW1hbmRhX2hlbHBgLCBpcyBhIGRhdGEgZGljdGlvbmFyeSwgYSBsb2csIGRvY3VtZW50YXRpb24sIG9yIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGNoZWNrIGBhbWFuZGFfaGVscGAgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBmbGFncywgdGhhdCB0aGUgZXhwb3J0IHdhcyBzdWNjZXNzZnVsLiBUaGF0IHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gdGhlIGRhdGEgZm9ybWF0LCByZWxldmFudCBwYXJhbWV0ZXJzLCBwb3RlbnRpYWwgY2F2ZWF0cywgYW5kIGFueSBrbm93biBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgZXhwb3J0IHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FtYW5kYV9oZWxwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTUyPXN0YXRpYyBzdHJ1Y3Qge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTgyLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6ODM6c3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtODQtXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xMDctXHRpZiAoZGF0YW9mZiBcdTAwM2U9IHNrYi1cdTAwM2VsZW4pIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjEwODpcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcJiMzNDthbWFuZGFfaGVscDogc2tibGVuID0gJXVcXG5cJiMzNDssIHNrYi1cdTAwM2VsZW4pO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTA5LVx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTE2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5IGFtYW5kYV9leHBfcG9saWN5ID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE3MS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE3MjpzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgYW1hbmRhX2hlbHBlclsyXSBfX3JlYWRfbW9zdGx5O1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTczOnN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqYW1hbmRhX2hlbHBlcl9wdHJbMl0gX19yZWFkX21vc3RseTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE3NC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTE3NT1zdGF0aWMgdm9pZCBfX2V4aXQgbmZfY29ubnRyYWNrX2FtYW5kYV9maW5pKHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTc4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTc5Olx0bmZfY29ubnRyYWNrX2hlbHBlcnNfdW5yZWdpc3RlcihhbWFuZGFfaGVscGVyX3B0cixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE4MDpcdFx0XHRcdFx0QVJSQVlfU0laRShhbWFuZGFfaGVscGVyX3B0cikpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTgxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShzZWFyY2gpOyBpJiM0MzsmIzQzOylcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYz0xODU9c3RhdGljIGludCBfX2luaXQgbmZfY29ubnRyYWNrX2FtYW5kYV9pbml0KHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjAwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjAxOlx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2YW1hbmRhX2hlbHBlclswXSwgQUZfSU5FVCwgSVBQUk9UT19VRFAsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0yMDItXHRcdFx0ICBIRUxQRVJfTkFNRSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwMzpcdFx0XHQgIFx1MDAyNmFtYW5kYV9leHBfcG9saWN5LCAwLCBhbWFuZGFfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjA0Olx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2YW1hbmRhX2hlbHBlclsxXSwgQUZfSU5FVDYsIElQUFJPVE9fVURQLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjA1LVx0XHRcdCAgSEVMUEVSX05BTUUsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzoyMDY6XHRcdFx0ICBcdTAwMjZhbWFuZGFfZXhwX3BvbGljeSwgMCwgYW1hbmRhX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTIwNy1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwODpcdHJldCA9IG5mX2Nvbm50cmFja19oZWxwZXJzX3JlZ2lzdGVyKGFtYW5kYV9oZWxwZXIsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzoyMDk6XHRcdFx0XHRcdCAgICBBUlJBWV9TSVpFKGFtYW5kYV9oZWxwZXIpLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjEwOlx0XHRcdFx0XHQgICAgYW1hbmRhX2hlbHBlcl9wdHIpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjExLVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc0NTcKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyB0aGUgQ3VycmVudCBTdGF0ZSoqCgpSaWdodCwgdGhpcyBmZWVscy4uLnN0YXRpYy4gTm90IG11Y2ggaXMgaGFwcGVuaW5nLCBubyBpbW1lZGlhdGUgbW92ZW1lbnQuIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rLCBzZWUgaWYgSSBjYW4gZ2V0IHRoaW5ncyB1bnN0dWNrLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIHBlcmNlaXZlZCBsYWNrIG9mIHByb2dyZXNzLCBpcyB0byBjaGVjayB0aGUgYHRmdHBfaGVscGAgdXRpbGl0eS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCB0b29sLCBvZnRlbiBvdmVybG9va2VkIGJ1dCBzdXJwcmlzaW5nbHkgdXNlZnVsIGZvciB0cm91Ymxlc2hvb3RpbmcsIGVzcGVjaWFsbHkgd2hlbiB0aGluZ3Mgc2VlbSBzdGFsbGVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCByZXZlYWxzLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gaXNzdWUgSSYjMzk7bSBtaXNzaW5nLCBvciBhIGJhc2ljIGNvbW1hbmQgc3ludGF4IGVycm9yIHRoYXQmIzM5O3Mga2VlcGluZyBldmVyeXRoaW5nIGZyb3plbi4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZnRwX2hlbHAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jPTMwPUVYUE9SVF9TWU1CT0xfR1BMKG5mX25hdF90ZnRwX2hvb2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jLTMxLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjMyOnN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMtMzMtXHRcdCAgICAgdW5zaWduZWQgaW50IHByb3RvZmYsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jPTEwNT1zdGF0aWMgaW50IF9faW5pdCBuZl9jb25udHJhY2tfdGZ0cF9pbml0KHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jLTExMi1cdFx0XHQgIEhFTFBFUl9OQU1FLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjExMzpcdFx0XHQgIFx1MDAyNnRmdHBfZXhwX3BvbGljeSwgMCwgdGZ0cF9oZWxwLCBOVUxMLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jLTExNC1cdFx0XHQgIFRISVNfTU9EVUxFKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5MDEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gYW5kIFN5bWJvbHMgZm9yIE5ldGZpbHRlci9Db25udHJhY2sgQ2hhbmdlcyoqCgpPa2F5LCB0aGlzIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBjb21iaW5hdGlvbiBvZiBzeW1ib2xzIGFuZCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHNvbWUgTmV0ZmlsdGVyL0Nvbm50cmFjayBjaGFuZ2VzLiBUaGUgd2hvbGUgc2V0dXAgc2VlbXMgc3RhdGljLCB3aGljaCBpcyBnb29kIOKAkyBsZXNzIGR5bmFtaWMgYmVoYXZpb3IgdG8gd29ycnkgYWJvdXQuCgpGaXJzdCwgSSYjMzk7bSBpZGVudGlmeWluZyB0aGUga2V5IGZ1bmN0aW9uIHN5bWJvbHMgaW52b2x2ZWQuIEkgc2VlIGEgZmV3IHRoYXQgYXJlIGNsZWFybHkgcmVsZXZhbnQ6IGBhbWFuZGFfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBtYWtlIHN1cmUgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkLgoKTmV4dCwgSSYjMzk7bSBjaGVja2luZyB0aGUgY29uZmlndXJhdGlvbnMuIEkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2YgYE5GX0NPTk5UUkFDS19FVkVOVFNgLCBgTkZfQ09OTlRSQUNLX0FNQU5EQWAsIGBORl9DT05OVFJBQ0tfRlRQYCwgYE5GX0NPTk5UUkFDS19JUkNgLCBgTkZfQ09OTlRSQUNLX1RGVFBgLCBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgLCBgTkZfQ09OTlRSQUNLX1NOTVBgLCBgTkZfQ1RfTkVUTElOS2AsIGFuZCBgTkZfTkFUYC4KCk5vdywgSSYjMzk7bSByZW1lbWJlcmluZyB0aGF0IHNvbWUgb2YgdGhlc2UgYE5GX05BVF8qYCBjb25maWd1cmF0aW9ucyAoYE5GX05BVF9BTUFOREFgLCBgTkZfTkFUX0ZUUGAsIGBORl9OQVRfSVJDYCwgYE5GX05BVF9URlRQYCkgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCAqaWYqIHRoZWlyIGNvcnJlc3BvbmRpbmcgYE5GX0NPTk5UUkFDS18qYCBhbmQgYE5GX05BVGAgYXJlIGVuYWJsZWQuIFNpbmNlIHRoZXNlIGFyZSBwcm9tcHRsZXNzIGNvbmZpZ3MsIGl0IG1lYW5zIHRoZSBzeXprYWxsZXIgY29uZmlnIGdlbmVyYXRvciBtaWdodCBub3QgYmUgYWJsZSB0byBlbmFibGUgdGhlbSBkaXJlY3RseS4gQnV0LCBpdCB3aWxsIGVuYWJsZSB0aGUgcGFyZW50IGRlcGVuZGVuY2llcy4gVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIEkgaW5jbHVkZSBhbGwgdGhlIGltcG9ydGFudCBvbmVzIHdpdGggcHJvbXB0cywgc28gSSYjMzk7bGwgY3JlYXRlIGEgbGlzdCBvZiBjb25maWdzOiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AsIGBORl9DT05OVFJBQ0tfU05NUGAsIGBORl9DVF9ORVRMSU5LYCwgYW5kIGBORl9OQVRgLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5GX0NPTk5UUkFDS19FVkVOVFNgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQgZm9yIHRob3NlIHNwZWNpZmljIGVjYWNoZSBjaGFuZ2VzLiBZZXMsIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCYjMzk7cyB0aGUgb25lLgoKRGlnZ2luZyBmdXJ0aGVyLCBJIGtub3cgYE5GX0NPTk5UUkFDS2AgYW5kIGBORl9OQVRgIGFyZSBvYnZpb3VzbHkgbmVlZGVkIGFzIGRlcGVuZGVuY2llcywgYnV0IHRoZXkgYXJlIGltcGxpZWQgYnkgdGhlIG90aGVyIGNvbmZpZ3MuCgpMZXQmIzM5O3MgZG8gYSBkb3VibGUgY2hlY2sgYW5kIG1ha2Ugc3VyZSBJJiMzOTt2ZSBpZGVudGlmaWVkIGFsbCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBPSywgaXQgbG9va3MgbGlrZSBgbmZfbmF0X2FtYW5kYWAsIGBuZl9uYXRfaXJjYCwgYW5kIGBuZl9uYXRfdGZ0cGAgYWxsIGhhdmUgYSBgaGVscGAgZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBgbmZfbmF0X2Z0cGAgZG9lc24mIzM5O3QgZm9sbG93IHRoYXQgcGF0dGVybiwgc28gSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIG9mIGl0LgoKR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucyB3aXRoIGBoZWxwYCwgSSYjMzk7bSBnb2luZyB0byBsaXN0IHRoZSB1bmlxdWUgZnVuY3Rpb24gbmFtZXMuIFRoaXMgbWVhbnMgYGFtYW5kYV9oZWxwYCwgYHRmdHBfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGFuZCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgYXJlIHRoZSBvbmVzIHRvIHBheSBhdHRlbnRpb24gdG8uCgpBbHJpZ2h0LCB0aGF0IGNvdmVycyB0aGUgZXNzZW50aWFscy4gSSBoYXZlIGEgc29saWQgbGlzdCBvZiBjb25maWdzIGFuZCBmdW5jdGlvbiBzeW1ib2xzIHRvIHVzZSBmb3IgdGhlc2UgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfbmF0X2FtYW5kYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmg9MTA9dHlwZWRlZiB1bnNpZ25lZCBpbnRcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaDoxMTpuZl9uYXRfYW1hbmRhX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaC0xMi1cdFx0ICAgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaC0xOC1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaDoxOTpleHRlcm4gbmZfbmF0X2FtYW5kYV9ob29rX2ZuIF9fcmN1ICpuZl9uYXRfYW1hbmRhX2hvb2s7XG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmgtMjAtI2VuZGlmIC8qIF9ORl9DT05OVFJBQ0tfQU1BTkRBX0ggKi9cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTY5PWVuZGlmXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS03MS0jIE5BVCBoZWxwZXJzXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19ORl9OQVRfQU1BTkRBKSAmIzQzOz0gbmZfbmF0X2FtYW5kYS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTczLW9iai0kKENPTkZJR19ORl9OQVRfRlRQKSAmIzQzOz0gbmZfbmF0X2Z0cC5vXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM9Mzg9TU9EVUxFX1BBUk1fREVTQyh0c19hbGdvLCBcJiMzNDt0ZXh0c2VhcmNoIGFsZ29yaXRobSB0byB1c2UgKGRlZmF1bHQga21wKVwmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0zOS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjQwOm5mX25hdF9hbWFuZGFfaG9va19mbiBfX3JjdSAqbmZfbmF0X2FtYW5kYV9ob29rIF9fcmVhZF9tb3N0bHk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzo0MTpFWFBPUlRfU1lNQk9MX0dQTChuZl9uYXRfYW1hbmRhX2hvb2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtNDItXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM9ODM9c3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTk0LVx0aW50IHJldCA9IE5GX0FDQ0VQVDtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjk1Olx0bmZfbmF0X2FtYW5kYV9ob29rX2ZuICpuZl9uYXRfYW1hbmRhO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtOTYtXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTUxLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTUyOlx0XHRuZl9uYXRfYW1hbmRhID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9hbWFuZGFfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzoxNTM6XHRcdGlmIChuZl9uYXRfYW1hbmRhIFx1MDAyNlx1MDAyNiBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSylcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE1NDpcdFx0XHRyZXQgPSBuZl9uYXRfYW1hbmRhKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE1NS1cdFx0XHRcdFx0ICAgIG9mZiAtIGRhdGFvZmYsIGxlbiwgZXhwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYz0yOD1zdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy02NC1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjY1OnN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfYW1hbmRhX2Zpbmkodm9pZClcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTY2LXtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTY3LVx0bmZfbmF0X2hlbHBlcl91bnJlZ2lzdGVyKFx1MDAyNm5hdF9oZWxwZXJfYW1hbmRhKTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjY4Olx0UkNVX0lOSVRfUE9JTlRFUihuZl9uYXRfYW1hbmRhX2hvb2ssIE5VTEwpO1xubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNjktXHRzeW5jaHJvbml6ZV9yY3UoKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy03MS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjcyOnN0YXRpYyBpbnQgX19pbml0IG5mX25hdF9hbWFuZGFfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNzMte1xubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmM6NzQ6XHRCVUdfT04obmZfbmF0X2FtYW5kYV9ob29rICE9IE5VTEwpO1xubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNzUtXHRuZl9uYXRfaGVscGVyX3JlZ2lzdGVyKFx1MDAyNm5hdF9oZWxwZXJfYW1hbmRhKTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjc2Olx0UkNVX0lOSVRfUE9JTlRFUihuZl9uYXRfYW1hbmRhX2hvb2ssIGhlbHApO1xubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNzctXHRyZXR1cm4gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy03OS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjgwOm1vZHVsZV9pbml0KG5mX25hdF9hbWFuZGFfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo4MTptb2R1bGVfZXhpdChuZl9uYXRfYW1hbmRhX2ZpbmkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDYyMAoJCQkJCQkJb3V0cHV0OiAyNjkKCQkJCQkJCXRob3VnaHRzOiA0ODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmV2aWV3aW5nIHRoZSBDb25udHJhY2sgSGVscGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzIOKAkyBhbWFuZGEsIGZ0cCwgaXJjLCB0ZnRwLCBicm9hZGNhc3QsIGFuZCBuZXRsaW5rIHNwZWNpZmljYWxseS4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBob3cgdGhlIGV4cGVjdGF0aW9uL2V2ZW50IGNhY2hlIGxvZ2ljIGlzIGhhbmRsZWQuIFRoZSBwYXRjaCBpcyBub3cgY2FjaGluZyB0aGUgYGV2ZW50X21hc2tgIHdpdGhpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUsIHJhdGhlciB0aGFuIHB1bGxpbmcgaXQgZGlyZWN0bHkgZnJvbSB0aGUgbWFzdGVyIGNvbm5lY3Rpb24mIzM5O3MgZWNhY2hlIHdoZW4gYW4gZXZlbnQgaXMgcmVwb3J0ZWQuIE9uIHRvcCBvZiB0aGlzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBpcyBiZWluZyBwYXNzZWQgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGFmZmVjdHMgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy4gV2UgbmVlZCB0byBiZSBlc3BlY2lhbGx5IGNhcmVmdWwgYWJvdXQgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBpZiB0aGlzIGNhY2hlZCBtYXNrIGlzIHVzZWQgaW5jb3JyZWN0bHksIG9yIGlmIHRoZSBjb25uZWN0aW9uIG9iamVjdCBpcyBtaXNoYW5kbGVkIHdpdGhpbiB0aGVzZSBOQVQgZnVuY3Rpb25zLiBXZSBzaG91bGQgZGVmaW5pdGVseSByZWNvbW1lbmQgZnV6emluZyBhcyB0aGUgYmVzdCB3YXkgdG8gZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGFuZ2VzLgoKSSYjMzk7dmUgYWxyZWFkeSByZXZpZXdlZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjaGVja2luZyB0aGF0IHRoZXkgYXJlIHdoYXQgSSBleHBlY3Q6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCwgYE5GX0NPTk5UUkFDS19TTk1QYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAuIEkmIzM5O3ZlIGNoZWNrZWQgYW5kIGRvdWJsZS1jaGVja2VkIHRoZSBkZXBlbmRlbmNpZXMuIEV2ZXJ5dGhpbmcgYXBwZWFycyB0byBiZSBjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgdXRpbGl6ZWQuCgpJbiB0aGUgZmlsZSBgbmZfbmF0X2FtYW5kYS5jYCwgdGhlIGZ1bmN0aW9uIGBhbWFuZGFfaGVscGAgaXMgY29ycmVjdCwgYW5kIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIHJldmlldywgbm93OiBgYW1hbmRhX2hlbHBgLCBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCwgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgLCBgbmZfY3RfZXhwZWN0X2luaXRgLCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAsIGB0ZnRwX2hlbHBgLCBhbmQgYG5mX25hdF9mdHBgLiBJdCYjMzk7cyBhbGwgbG9va2luZyBnb29kLiBJIGFtIGhhcHB5IHdpdGggdGhlIHJlc3VsdHMgb2YgbXkgcmV2aWV3IGFuZCB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19FVkVOVFMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0FNQU5EQSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfRlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19JUkMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1RGVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX05FVEJJT1NfTlMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NOTVAmIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbWFuZGFfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAmIzM0OywKICAgICYjMzQ7bmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydCYjMzQ7LAogICAgJiMzNDtuZl9jdF9leHBlY3RfaW5pdCYjMzQ7LAogICAgJiMzNDtjdG5ldGxpbmtfYWxsb2NfZXhwZWN0JiMzNDssCiAgICAmIzM0O3RmdHBfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfZnRwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyAoYW1hbmRhLCBmdHAsIGlyYywgdGZ0cCwgYnJvYWRjYXN0LCBuZXRsaW5rKSBhbmQgdGhlIGV4cGVjdGF0aW9uL2V2ZW50IGNhY2hlIGxvZ2ljLiBJdCBjYWNoZXMgYGV2ZW50X21hc2tgIGluIHRoZSBleHBlY3RhdGlvbiBvYmplY3QgYXQgY3JlYXRpb24gdGltZSBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQgdXAgZnJvbSB0aGUgbWFzdGVyIGNvbm5lY3Rpb24mIzM5O3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfQU1BTkRBJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19GVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0lSQyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfVEZUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfTkVUQklPU19OUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfU05NUCYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FtYW5kYV9oZWxwJiMzNDssCiAgICAmIzM0O25mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0JiMzNDssCiAgICAmIzM0O25mX2N0X2V4cGVjdF9pbml0JiMzNDssCiAgICAmIzM0O2N0bmV0bGlua19hbGxvY19leHBlY3QmIzM0OywKICAgICYjMzQ7dGZ0cF9oZWxwJiMzNDssCiAgICAmIzM0O25mX25hdF9mdHAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzIChhbWFuZGEsIGZ0cCwgaXJjLCB0ZnRwLCBicm9hZGNhc3QsIG5ldGxpbmspIGFuZCB0aGUgZXhwZWN0YXRpb24vZXZlbnQgY2FjaGUgbG9naWMuIEl0IGNhY2hlcyBgZXZlbnRfbWFza2AgaW4gdGhlIGV4cGVjdGF0aW9uIG9iamVjdCBhdCBjcmVhdGlvbiB0aW1lIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBmcm9tIHRoZSBtYXN0ZXIgY29ubmVjdGlvbiYjMzk7cyBlY2FjaGUgYXQgZXZlbnQgcmVwb3J0IHRpbWUuIEl0IGFsc28gcGFzc2VzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBkaXJlY3RseSB0byBOQVQgaG9vayBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBhZmZlY3QgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgTkFUIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDE6NTYuNjM2NzE0NTk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1OTc4ODE0NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19BTUFOREFcIixcbiAgICBcIk5GX0NPTk5UUkFDS19GVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19JUkNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19URlRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfTkVUQklPU19OU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NOTVBcIixcbiAgICBcIk5GX0NUX05FVExJTktcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFtYW5kYV9oZWxwXCIsXG4gICAgXCJuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9pbml0XCIsXG4gICAgXCJjdG5ldGxpbmtfYWxsb2NfZXhwZWN0XCIsXG4gICAgXCJ0ZnRwX2hlbHBcIixcbiAgICBcIm5mX25hdF9mdHBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgKGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgbmV0bGluaykgYW5kIHRoZSBleHBlY3RhdGlvbi9ldmVudCBjYWNoZSBsb2dpYy4gSXQgY2FjaGVzIGBldmVudF9tYXNrYCBpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBjb25uZWN0aW9uJ3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDE6NTYuNjM2NzIwOTg2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjA3ODExNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzZTFmMDVmYTA0OTk5YjAzMDQ2MWRiYTVmNWY2NTBkOGVlNWRjMGE5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDIxOjQxOjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaFxcbmluZGV4IDE3MTk5ODdlOGZkODM4Li5kZWI1NjBiYjc5YzQzMSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmhcXG5AQCAtOSw2ICs5LDcgQEBcXG4gXFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XFxuIG5mX25hdF9hbWFuZGFfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHQgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuIFxcdFxcdCAgICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IG1hdGNob2ZmLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmhcXG5pbmRleCA3YjYyNDQ2Y2NlYzRmNC4uNzEyNzAyMTgzYjk0NzMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oXFxuQEAgLTI4LDYgKzI4LDcgQEAgc3RydWN0IG5mX2N0X2Z0cF9tYXN0ZXIge1xcbiAgKiBjb25uZWN0aW9uIHdlIHNob3VsZCBleHBlY3QuICovXFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XFxuIG5mX25hdF9mdHBfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHQgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuIFxcdFxcdCAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHQgICBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsXFxuIFxcdFxcdCAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmhcXG5pbmRleCBjZTA3MjUwYWZiNGU5ZS4uYzczYjNiNDRhMGI3ZWYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oXFxuQEAgLTEwLDYgKzEwLDcgQEBcXG4gXFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XFxuIG5mX25hdF9pcmNfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHQgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuIFxcdFxcdCAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHQgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0ICAgdW5zaWduZWQgaW50IG1hdGNob2ZmLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaFxcbmluZGV4IGUzZDE3MzljNTU3ZDE1Li44MDJjYjdmYzE5Y2RlYyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaFxcbkBAIC0xOSw2ICsxOSw3IEBAIHN0cnVjdCB0ZnRwaGRyIHtcXG4gXFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XFxuIG5mX25hdF90ZnRwX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0ICAgIHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHQgICAgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCk7XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxcbmluZGV4IGMwMjQzNDVjOWJkODYyLi41ZDBmNWIyZjEyYTcyNCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxcbkBAIC00Miw2ICs0Miw5IEBAIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0IHtcXG4gXFx0LyogRXhwZWN0YXRpb24gY2xhc3MgKi9cXG4gXFx0dW5zaWduZWQgaW50IGNsYXNzO1xcbiBcXG4rXFx0LyogRXZlbnQgZmlsdGVyIG1hc2sgKi9cXG4rXFx0dTE2IGV2ZW50X21hc2s7XFxuK1xcbiBcXHQvKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIHNldHVwIGFuZCBpbnNlcnRpb24gKi9cXG4gXFx0dm9pZCAoKmV4cGVjdGZuKShzdHJ1Y3QgbmZfY29ubiAqbmV3LFxcbiBcXHRcXHRcXHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jXFxuaW5kZXggMDZkNmVjMTJjODZkZmEuLjE0YWU2NjA0OTFmMzYwIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmNcXG5AQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBpbnQgYW1hbmRhX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdFxcdG5mX25hdF9hbWFuZGEgPSByY3VfZGVyZWZlcmVuY2UobmZfbmF0X2FtYW5kYV9ob29rKTtcXG4gXFx0XFx0aWYgKG5mX25hdF9hbWFuZGEgXFx1MDAyNlxcdTAwMjYgY3QtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IElQU19OQVRfTUFTSylcXG4tXFx0XFx0XFx0cmV0ID0gbmZfbmF0X2FtYW5kYShza2IsIGN0aW5mbywgcHJvdG9mZixcXG4rXFx0XFx0XFx0cmV0ID0gbmZfbmF0X2FtYW5kYShza2IsIGN0LCBjdGluZm8sIHByb3RvZmYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBvZmYgLSBkYXRhb2ZmLCBsZW4sIGV4cCk7XFxuIFxcdFxcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbiBcXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNcXG5pbmRleCA2ZmY5NTRmMWJmYjg3Yy4uMDkyMmUzMGI2YWIwNzAgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuY1xcbkBAIC0xNCw2ICsxNCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oXFx1MDAzZVxcbiBcXG4gaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuQEAgLTI3LDYgKzI4LDcgQEAgaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRzdHJ1Y3QgcnRhYmxlICpydCA9IHNrYl9ydGFibGUoc2tiKTtcXG4gXFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xcbiBcXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwID0gbmZjdF9oZWxwKGN0KTtcXG4rXFx0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcXG4gXFx0X19iZTMyIG1hc2sgPSAwO1xcbiBcXG4gXFx0aWYgKCFoZWxwKVxcbkBAIC03OSw2ICs4MSwxMCBAQCBpbnQgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuICNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXFxuIFxcdGV4cC1cXHUwMDNlem9uZSA9IGN0LVxcdTAwM2V6b25lO1xcbiAjZW5kaWZcXG4rXFx0ZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpO1xcbitcXHRpZiAoZWNhY2hlKVxcbitcXHRcXHRleHAtXFx1MDAzZWV2ZW50X21hc2sgPSBlY2FjaGUtXFx1MDAzZWV4cG1hc2s7XFxuK1xcbiBcXHRuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApO1xcbiBcXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXFxuaW5kZXggOWRmMTU5NDQ4Yjg5NzkuLjRjN2QxNzk5MTU4ZDJhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcXG5AQCAtMjQ1LDcgKzI0NSw2IEBAIHZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGV2ZW50LFxcbiB7XFxuIFxcdHN0cnVjdCBuZXQgKm5ldCA9IG5mX2N0X2V4cF9uZXQoZXhwKTtcXG4gXFx0c3RydWN0IG5mX2N0X2V2ZW50X25vdGlmaWVyICpub3RpZnk7XFxuLVxcdHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplO1xcbiBcXG4gXFx0bG9ja2RlcF9uZmN0X2V4cGVjdF9sb2NrX2hlbGQoKTtcXG4gXFxuQEAgLTI1NCwxMSArMjUzLDcgQEAgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsXFxuIFxcdGlmICghbm90aWZ5KVxcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcbi1cXHRlID0gbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVxcdTAwM2VtYXN0ZXIpO1xcbi1cXHRpZiAoIWUpXFxuLVxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4tXFxuLVxcdGlmIChlLVxcdTAwM2VleHBtYXNrIFxcdTAwMjYgKDEgXFx1MDAzY1xcdTAwM2MgZXZlbnQpKSB7XFxuK1xcdGlmIChleHAtXFx1MDAzZWV2ZW50X21hc2sgXFx1MDAyNiAoMSBcXHUwMDNjXFx1MDAzYyBldmVudCkpIHtcXG4gXFx0XFx0c3RydWN0IG5mX2V4cF9ldmVudCBpdGVtID0ge1xcbiBcXHRcXHRcXHQuZXhwXFx0PSBleHAsXFxuIFxcdFxcdFxcdC5wb3J0aWRcXHQ9IHBvcnRpZCxcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbmluZGV4IDdhZTY4ZDYwNTg2YTIzLi5jZDlhZjM2MjBhZjU4NyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXFxuQEAgLTMzMCw2ICszMzAsNyBAQCB2b2lkIG5mX2N0X2V4cGVjdF9pbml0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHVuc2lnbmVkIGludCBjbGFzcyxcXG4gXFx0c3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmhlbHBlciA9IE5VTEw7XFxuIFxcdHN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC1cXHUwMDNlbWFzdGVyO1xcbiBcXHRzdHJ1Y3QgbmV0ICpuZXQgPSByZWFkX3BuZXQoXFx1MDAyNmN0LVxcdTAwM2VjdF9uZXQpO1xcbitcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwO1xcbiBcXHRpbnQgbGVuO1xcbiBcXG5AQCAtMzQyLDYgKzM0MywxMCBAQCB2b2lkIG5mX2N0X2V4cGVjdF9pbml0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHVuc2lnbmVkIGludCBjbGFzcyxcXG4gXFx0ZXhwLVxcdTAwM2VjbGFzcyA9IGNsYXNzO1xcbiBcXHRleHAtXFx1MDAzZWV4cGVjdGZuID0gTlVMTDtcXG4gXFxuK1xcdGVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcXG4rXFx0aWYgKGVjYWNoZSlcXG4rXFx0XFx0ZXhwLVxcdTAwM2VldmVudF9tYXNrID0gZWNhY2hlLVxcdTAwM2VleHBtYXNrO1xcbitcXG4gXFx0aGVscCA9IG5mY3RfaGVscChjdCk7XFxuIFxcdGlmIChoZWxwKVxcbiBcXHRcXHRoZWxwZXIgPSByY3VfZGVyZWZlcmVuY2UoaGVscC1cXHUwMDNlaGVscGVyKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuY1xcbmluZGV4IGYzOTQ0NTk4YzE3MjZmLi5mNGZlMTNmZDBlNzAyYSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jXFxuQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICogKHBvc3NpYmx5IGNoYW5nZWQpIGV4cGVjdGF0aW9uIGl0c2VsZi4gKi9cXG4gXFx0bmZfbmF0X2Z0cCA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfZnRwX2hvb2spO1xcbiBcXHRpZiAobmZfbmF0X2Z0cCBcXHUwMDI2XFx1MDAyNiBjdC1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgSVBTX05BVF9NQVNLKVxcbi1cXHRcXHRyZXQgPSBuZl9uYXRfZnRwKHNrYiwgY3RpbmZvLCBzZWFyY2hbZGlyXVtpXS5mdHB0eXBlLFxcbitcXHRcXHRyZXQgPSBuZl9uYXRfZnRwKHNrYiwgY3QsIGN0aW5mbywgc2VhcmNoW2Rpcl1baV0uZnRwdHlwZSxcXG4gXFx0XFx0XFx0XFx0IHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbiwgZXhwKTtcXG4gXFx0ZWxzZSB7XFxuIFxcdFxcdC8qIENhbid0IGV4cGVjdCB0aGlzPyAgQmVzdCB0byBkcm9wIHBhY2tldCBub3cuICovXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmNcXG5pbmRleCA0ZTZiYWZlNDE0Mzc1Mi4uOTIzNjA5NjM3NTdhOTcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuY1xcbkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbiBcXG4gXFx0XFx0XFx0bmZfbmF0X2lyYyA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaXJjX2hvb2spO1xcbiBcXHRcXHRcXHRpZiAobmZfbmF0X2lyYyBcXHUwMDI2XFx1MDAyNiBjdC1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgSVBTX05BVF9NQVNLKVxcbi1cXHRcXHRcXHRcXHRyZXQgPSBuZl9uYXRfaXJjKHNrYiwgY3RpbmZvLCBwcm90b2ZmLFxcbitcXHRcXHRcXHRcXHRyZXQgPSBuZl9uYXRfaXJjKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IGFkZHJfYmVnX3AgLSBpYl9wdHIsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBhZGRyX2VuZF9wIC0gYWRkcl9iZWdfcCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IGV4cCk7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xcbmluZGV4IDMxY2JiMWI1NWI5ZTZjLi5mYzNmNjAwOTlhZjNiNSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG5AQCAtMzUyNCw2ICszNTI0LDcgQEAgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0ICpuZXQgPSByZWFkX3BuZXQoXFx1MDAyNmN0LVxcdTAwM2VjdF9uZXQpO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqaGVscGVyO1xcbitcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwO1xcbiBcXHR1MzIgY2xhc3MgPSAwO1xcbkBAIC0zNTc1LDYgKzM1NzYsMTAgQEAgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0ZXhwLVxcdTAwM2VtYXNrLnNyYy51MyA9IG1hc2stXFx1MDAzZXNyYy51MztcXG4gXFx0ZXhwLVxcdTAwM2VtYXNrLnNyYy51LmFsbCA9IG1hc2stXFx1MDAzZXNyYy51LmFsbDtcXG4gXFxuK1xcdGVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcXG4rXFx0aWYgKGVjYWNoZSlcXG4rXFx0XFx0ZXhwLVxcdTAwM2VldmVudF9tYXNrID0gZWNhY2hlLVxcdTAwM2VleHBtYXNrO1xcbitcXG4gXFx0aWYgKGNkYVtDVEFfRVhQRUNUX05BVF0pIHtcXG4gXFx0XFx0ZXJyID0gY3RuZXRsaW5rX3BhcnNlX2V4cGVjdF9uYXQoY2RhW0NUQV9FWFBFQ1RfTkFUXSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IGV4cCwgbmZfY3RfbDNudW0oY3QpKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jXFxuaW5kZXggYTY5NTU5ZWRmOWIzNjMuLmU2NzJkNzRhNjgxN2VhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuY1xcbkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRcXHRuZl9uYXRfdGZ0cCA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfdGZ0cF9ob29rKTtcXG4gXFx0XFx0aWYgKG5mX25hdF90ZnRwIFxcdTAwMjZcXHUwMDI2IGN0LVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBJUFNfTkFUX01BU0spXFxuLVxcdFxcdFxcdHJldCA9IG5mX25hdF90ZnRwKHNrYiwgY3RpbmZvLCBleHApO1xcbitcXHRcXHRcXHRyZXQgPSBuZl9uYXRfdGZ0cChza2IsIGN0LCBjdGluZm8sIGV4cCk7XFxuIFxcdFxcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbiBcXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuIFxcdFxcdFxcdHJldCA9IE5GX0RST1A7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcXG5pbmRleCA4ZjEwNTQ5MjBhODU3MS4uMzMwNDE1ODA5NDI1Y2UgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY1xcbkBAIC0yNiw2ICsyNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl9hbWFuZGEgPVxcbiBcXHRORl9DVF9OQVRfSEVMUEVSX0lOSVQoTkFUX0hFTFBFUl9OQU1FKTtcXG4gXFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHQgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbiBcXHRcXHRcXHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXFxuIFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0XFx0IHVuc2lnbmVkIGludCBtYXRjaG9mZixcXG5AQCAtNDYsMTUgKzQ3LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQvKiBUcnkgdG8gZ2V0IHNhbWUgcG9ydDogaWYgbm90LCB0cnkgdG8gY2hhbmdlIGl0LiAqL1xcbiBcXHRwb3J0ID0gbmZfbmF0X2V4cF9maW5kX3BvcnQoZXhwLCBudG9ocyhleHAtXFx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0KSk7XFxuIFxcdGlmIChwb3J0ID09IDApIHtcXG4tXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cXHUwMDNlbWFzdGVyLCBcXFwiYWxsIHBvcnRzIGluIHVzZVxcXCIpO1xcbitcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJhbGwgcG9ydHMgaW4gdXNlXFxcIik7XFxuIFxcdFxcdHJldHVybiBORl9EUk9QO1xcbiBcXHR9XFxuIFxcbiBcXHRzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCBcXFwiJXVcXFwiLCBwb3J0KTtcXG4tXFx0aWYgKCFuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQoc2tiLCBleHAtXFx1MDAzZW1hc3RlciwgY3RpbmZvLFxcbitcXHRpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXFxuIFxcdFxcdFxcdFxcdCAgICAgIHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbixcXG4gXFx0XFx0XFx0XFx0ICAgICAgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSkpIHtcXG4tXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cXHUwMDNlbWFzdGVyLCBcXFwiY2Fubm90IG1hbmdsZSBwYWNrZXRcXFwiKTtcXG4rXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcXFwiY2Fubm90IG1hbmdsZSBwYWNrZXRcXFwiKTtcXG4gXFx0XFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChleHApO1xcbiBcXHRcXHRyZXR1cm4gTkZfRFJPUDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jXFxuaW5kZXggYzkyYTQzNmQ5YzQ4NmUuLjI1ZDIwZTI5NzBhZTFiIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmNcXG5AQCAtNjEsNiArNjEsNyBAQCBzdGF0aWMgaW50IG5mX25hdF9mdHBfZm10X2NtZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZnRwX3R5cGUgdHlwZSxcXG4gLyogU28sIHRoaXMgcGFja2V0IGhhcyBoaXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWF0Y2hpbmcgY29kZS5cXG4gICAgTWFuZ2xlIGl0LCBhbmQgY2hhbmdlIHRoZSBleHBlY3RhdGlvbiB0byBtYXRjaCB0aGUgbmV3IHZlcnNpb24uICovXFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbiBcXHRcXHRcXHQgICAgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXFxuIFxcdFxcdFxcdCAgICAgICBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsXFxuIFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG5AQCAtNzEsNyArNzIsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dW5pb24gbmZfaW5ldF9hZGRyIG5ld2FkZHI7XFxuIFxcdHVfaW50MTZfdCBwb3J0O1xcbiBcXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi1cXHRzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXFx1MDAzZW1hc3RlcjtcXG4gXFx0Y2hhciBidWZmZXJbc2l6ZW9mKFxcXCJ8MXx8NjU1MzV8XFxcIikgKyBJTkVUNl9BRERSU1RSTEVOXTtcXG4gXFx0dW5zaWduZWQgaW50IGJ1ZmxlbjtcXG4gXFxuQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRwb3J0ID0gbmZfbmF0X2V4cF9maW5kX3BvcnQoZXhwLCBudG9ocyhleHAtXFx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0KSk7XFxuIFxcdGlmIChwb3J0ID09IDApIHtcXG4tXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cXHUwMDNlbWFzdGVyLCBcXFwiYWxsIHBvcnRzIGluIHVzZVxcXCIpO1xcbitcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJhbGwgcG9ydHMgaW4gdXNlXFxcIik7XFxuIFxcdFxcdHJldHVybiBORl9EUk9QO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXFxuaW5kZXggMTljNGZjYzYwYzUwZjIuLjg5YjMxZmU5MzJiYWMwIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmNcXG5AQCAtMzAsNiArMzAsNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19uYXRfaGVscGVyIG5hdF9oZWxwZXJfaXJjID1cXG4gXFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0XFx0IHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0XFx0IGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHRcXHQgdW5zaWduZWQgaW50IHByb3RvZmYsXFxuIFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXFxuQEAgLTM3LDcgKzM4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKVxcbiB7XFxuIFxcdGNoYXIgYnVmZmVyW3NpemVvZihcXFwiNDI5NDk2NzI5NiA2NTYzNVxcXCIpXTtcXG4tXFx0c3RydWN0IG5mX2Nvbm4gKmN0ID0gZXhwLVxcdTAwM2VtYXN0ZXI7XFxuIFxcdHVuaW9uIG5mX2luZXRfYWRkciBuZXdhZGRyO1xcbiBcXHR1X2ludDE2X3QgcG9ydDtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuY1xcbmluZGV4IDFhNTkxMTMyZDZlYjkzLi43MTIxZTY3MDRmMzQxYyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmNcXG5AQCAtMjEsMTcgKzIxLDE2IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl90ZnRwID1cXG4gXFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0XFx0IHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0XFx0IGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHRcXHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXFx1MDAzZW1hc3RlcjtcXG4tXFxuIFxcdGV4cC1cXHUwMDNlc2F2ZWRfcHJvdG8udWRwLnBvcnRcXG4gXFx0XFx0PSBjdC1cXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9PUklHSU5BTF0udHVwbGUuc3JjLnUudWRwLnBvcnQ7XFxuIFxcdGV4cC1cXHUwMDNlZGlyID0gSVBfQ1RfRElSX1JFUExZO1xcbiBcXHRleHAtXFx1MDAzZWV4cGVjdGZuID0gbmZfbmF0X2ZvbGxvd19tYXN0ZXI7XFxuIFxcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcXG4tXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cXHUwMDNlbWFzdGVyLCBcXFwiY2Fubm90IGFkZCBleHBlY3RhdGlvblxcXCIpO1xcbitcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuIFxcdFxcdHJldHVybiBORl9EUk9QO1xcbiBcXHR9XFxuIFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQxOjU3LjE1ODI1NTEyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk1NDU3MjY1ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19BTUFOREFcIixcbiAgICBcIk5GX0NPTk5UUkFDS19GVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19JUkNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19URlRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfTkVUQklPU19OU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NOTVBcIixcbiAgICBcIk5GX0NUX05FVExJTktcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFtYW5kYV9oZWxwXCIsXG4gICAgXCJuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9pbml0XCIsXG4gICAgXCJjdG5ldGxpbmtfYWxsb2NfZXhwZWN0XCIsXG4gICAgXCJ0ZnRwX2hlbHBcIixcbiAgICBcIm5mX25hdF9mdHBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgKGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgbmV0bGluaykgYW5kIHRoZSBleHBlY3RhdGlvbi9ldmVudCBjYWNoZSBsb2dpYy4gSXQgY2FjaGVzIGBldmVudF9tYXNrYCBpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBjb25uZWN0aW9uJ3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzZTFmMDVmYTA0OTk5YjAzMDQ2MWRiYTVmNWY2NTBkOGVlNWRjMGE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMjE6NDE6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmhcbmluZGV4IDE3MTk5ODdlOGZkODM4Li5kZWI1NjBiYjc5YzQzMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5oXG5AQCAtOSw2ICs5LDcgQEBcbiBcbiB0eXBlZGVmIHVuc2lnbmVkIGludFxuIG5mX25hdF9hbWFuZGFfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHQgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gXHRcdCAgICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuIFx0XHQgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcdFx0ICAgICAgdW5zaWduZWQgaW50IG1hdGNob2ZmLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuaFxuaW5kZXggN2I2MjQ0NmNjZWM0ZjQuLjcxMjcwMjE4M2I5NDczIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmhcbkBAIC0yOCw2ICsyOCw3IEBAIHN0cnVjdCBuZl9jdF9mdHBfbWFzdGVyIHtcbiAgKiBjb25uZWN0aW9uIHdlIHNob3VsZCBleHBlY3QuICovXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfZnRwX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0ICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHQgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0ICAgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmhcbmluZGV4IGNlMDcyNTBhZmI0ZTllLi5jNzNiM2I0NGEwYjdlZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oXG5AQCAtMTAsNiArMTAsNyBAQFxuIFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XG4gbmZfbmF0X2lyY19ob29rX2ZuKHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdCAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbmluZGV4IGUzZDE3MzljNTU3ZDE1Li44MDJjYjdmYzE5Y2RlYyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbkBAIC0xOSw2ICsxOSw3IEBAIHN0cnVjdCB0ZnRwaGRyIHtcbiBcbiB0eXBlZGVmIHVuc2lnbmVkIGludFxuIG5mX25hdF90ZnRwX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0ICAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuIFx0XHQgICAgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCk7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbmluZGV4IGMwMjQzNDVjOWJkODYyLi41ZDBmNWIyZjEyYTcyNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbkBAIC00Miw2ICs0Miw5IEBAIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0IHtcbiBcdC8qIEV4cGVjdGF0aW9uIGNsYXNzICovXG4gXHR1bnNpZ25lZCBpbnQgY2xhc3M7XG4gXG4rXHQvKiBFdmVudCBmaWx0ZXIgbWFzayAqL1xuK1x0dTE2IGV2ZW50X21hc2s7XG4rXG4gXHQvKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIHNldHVwIGFuZCBpbnNlcnRpb24gKi9cbiBcdHZvaWQgKCpleHBlY3Rmbikoc3RydWN0IG5mX2Nvbm4gKm5ldyxcbiBcdFx0XHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmNcbmluZGV4IDA2ZDZlYzEyYzg2ZGZhLi4xNGFlNjYwNDkxZjM2MCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuY1xuQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgaW50IGFtYW5kYV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRcdG5mX25hdF9hbWFuZGEgPSByY3VfZGVyZWZlcmVuY2UobmZfbmF0X2FtYW5kYV9ob29rKTtcbiBcdFx0aWYgKG5mX25hdF9hbWFuZGEgXHUwMDI2XHUwMDI2IGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKVxuLVx0XHRcdHJldCA9IG5mX25hdF9hbWFuZGEoc2tiLCBjdGluZm8sIHByb3RvZmYsXG4rXHRcdFx0cmV0ID0gbmZfbmF0X2FtYW5kYShza2IsIGN0LCBjdGluZm8sIHByb3RvZmYsXG4gXHRcdFx0XHRcdCAgICBvZmYgLSBkYXRhb2ZmLCBsZW4sIGV4cCk7XG4gXHRcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xuIFx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCIpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNcbmluZGV4IDZmZjk1NGYxYmZiODdjLi4wOTIyZTMwYjZhYjA3MCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuY1xuQEAgLTE0LDYgKzE0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oXHUwMDNlXG4gXG4gaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0c3RydWN0IG5mX2Nvbm4gKmN0LFxuQEAgLTI3LDYgKzI4LDcgQEAgaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c3RydWN0IHJ0YWJsZSAqcnQgPSBza2JfcnRhYmxlKHNrYik7XG4gXHRzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXY7XG4gXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwID0gbmZjdF9oZWxwKGN0KTtcbitcdHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplY2FjaGU7XG4gXHRfX2JlMzIgbWFzayA9IDA7XG4gXG4gXHRpZiAoIWhlbHApXG5AQCAtNzksNiArODEsMTAgQEAgaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuICNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXG4gXHRleHAtXHUwMDNlem9uZSA9IGN0LVx1MDAzZXpvbmU7XG4gI2VuZGlmXG4rXHRlY2FjaGUgPSBuZl9jdF9lY2FjaGVfZmluZChjdCk7XG4rXHRpZiAoZWNhY2hlKVxuK1x0XHRleHAtXHUwMDNlZXZlbnRfbWFzayA9IGVjYWNoZS1cdTAwM2VleHBtYXNrO1xuK1xuIFx0bmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKTtcbiBcdG5mX2N0X2V4cGVjdF9wdXQoZXhwKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXG5pbmRleCA5ZGYxNTk0NDhiODk3OS4uNGM3ZDE3OTkxNThkMmEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcbkBAIC0yNDUsNyArMjQ1LDYgQEAgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsXG4ge1xuIFx0c3RydWN0IG5ldCAqbmV0ID0gbmZfY3RfZXhwX25ldChleHApO1xuIFx0c3RydWN0IG5mX2N0X2V2ZW50X25vdGlmaWVyICpub3RpZnk7XG4tXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZTtcbiBcbiBcdGxvY2tkZXBfbmZjdF9leHBlY3RfbG9ja19oZWxkKCk7XG4gXG5AQCAtMjU0LDExICsyNTMsNyBAQCB2b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXhwZWN0X2V2ZW50cyBldmVudCxcbiBcdGlmICghbm90aWZ5KVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4tXHRlID0gbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVx1MDAzZW1hc3Rlcik7XG4tXHRpZiAoIWUpXG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cbi1cdGlmIChlLVx1MDAzZWV4cG1hc2sgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBldmVudCkpIHtcbitcdGlmIChleHAtXHUwMDNlZXZlbnRfbWFzayBcdTAwMjYgKDEgXHUwMDNjXHUwMDNjIGV2ZW50KSkge1xuIFx0XHRzdHJ1Y3QgbmZfZXhwX2V2ZW50IGl0ZW0gPSB7XG4gXHRcdFx0LmV4cFx0PSBleHAsXG4gXHRcdFx0LnBvcnRpZFx0PSBwb3J0aWQsXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuaW5kZXggN2FlNjhkNjA1ODZhMjMuLmNkOWFmMzYyMGFmNTg3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG5AQCAtMzMwLDYgKzMzMCw3IEBAIHZvaWQgbmZfY3RfZXhwZWN0X2luaXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCwgdW5zaWduZWQgaW50IGNsYXNzLFxuIFx0c3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmhlbHBlciA9IE5VTEw7XG4gXHRzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXHUwMDNlbWFzdGVyO1xuIFx0c3RydWN0IG5ldCAqbmV0ID0gcmVhZF9wbmV0KFx1MDAyNmN0LVx1MDAzZWN0X25ldCk7XG4rXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xuIFx0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcbiBcdGludCBsZW47XG4gXG5AQCAtMzQyLDYgKzM0MywxMCBAQCB2b2lkIG5mX2N0X2V4cGVjdF9pbml0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHVuc2lnbmVkIGludCBjbGFzcyxcbiBcdGV4cC1cdTAwM2VjbGFzcyA9IGNsYXNzO1xuIFx0ZXhwLVx1MDAzZWV4cGVjdGZuID0gTlVMTDtcbiBcbitcdGVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcbitcdGlmIChlY2FjaGUpXG4rXHRcdGV4cC1cdTAwM2VldmVudF9tYXNrID0gZWNhY2hlLVx1MDAzZWV4cG1hc2s7XG4rXG4gXHRoZWxwID0gbmZjdF9oZWxwKGN0KTtcbiBcdGlmIChoZWxwKVxuIFx0XHRoZWxwZXIgPSByY3VfZGVyZWZlcmVuY2UoaGVscC1cdTAwM2VoZWxwZXIpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmNcbmluZGV4IGYzOTQ0NTk4YzE3MjZmLi5mNGZlMTNmZDBlNzAyYSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuY1xuQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIChwb3NzaWJseSBjaGFuZ2VkKSBleHBlY3RhdGlvbiBpdHNlbGYuICovXG4gXHRuZl9uYXRfZnRwID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9mdHBfaG9vayk7XG4gXHRpZiAobmZfbmF0X2Z0cCBcdTAwMjZcdTAwMjYgY3QtXHUwMDNlc3RhdHVzIFx1MDAyNiBJUFNfTkFUX01BU0spXG4tXHRcdHJldCA9IG5mX25hdF9mdHAoc2tiLCBjdGluZm8sIHNlYXJjaFtkaXJdW2ldLmZ0cHR5cGUsXG4rXHRcdHJldCA9IG5mX25hdF9mdHAoc2tiLCBjdCwgY3RpbmZvLCBzZWFyY2hbZGlyXVtpXS5mdHB0eXBlLFxuIFx0XHRcdFx0IHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbiwgZXhwKTtcbiBcdGVsc2Uge1xuIFx0XHQvKiBDYW4ndCBleHBlY3QgdGhpcz8gIEJlc3QgdG8gZHJvcCBwYWNrZXQgbm93LiAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmNcbmluZGV4IDRlNmJhZmU0MTQzNzUyLi45MjM2MDk2Mzc1N2E5NyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuY1xuQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXG4gXHRcdFx0bmZfbmF0X2lyYyA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaXJjX2hvb2spO1xuIFx0XHRcdGlmIChuZl9uYXRfaXJjIFx1MDAyNlx1MDAyNiBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSylcbi1cdFx0XHRcdHJldCA9IG5mX25hdF9pcmMoc2tiLCBjdGluZm8sIHByb3RvZmYsXG4rXHRcdFx0XHRyZXQgPSBuZl9uYXRfaXJjKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZixcbiBcdFx0XHRcdFx0XHQgYWRkcl9iZWdfcCAtIGliX3B0cixcbiBcdFx0XHRcdFx0XHQgYWRkcl9lbmRfcCAtIGFkZHJfYmVnX3AsXG4gXHRcdFx0XHRcdFx0IGV4cCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG5pbmRleCAzMWNiYjFiNTViOWU2Yy4uZmMzZjYwMDk5YWYzYjUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuQEAgLTM1MjQsNiArMzUyNCw3IEBAIGN0bmV0bGlua19hbGxvY19leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGNkYVtdLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4ge1xuIFx0c3RydWN0IG5ldCAqbmV0ID0gcmVhZF9wbmV0KFx1MDAyNmN0LVx1MDAzZWN0X25ldCk7XG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqaGVscGVyO1xuK1x0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHA7XG4gXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwO1xuIFx0dTMyIGNsYXNzID0gMDtcbkBAIC0zNTc1LDYgKzM1NzYsMTAgQEAgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdGV4cC1cdTAwM2VtYXNrLnNyYy51MyA9IG1hc2stXHUwMDNlc3JjLnUzO1xuIFx0ZXhwLVx1MDAzZW1hc2suc3JjLnUuYWxsID0gbWFzay1cdTAwM2VzcmMudS5hbGw7XG4gXG4rXHRlY2FjaGUgPSBuZl9jdF9lY2FjaGVfZmluZChjdCk7XG4rXHRpZiAoZWNhY2hlKVxuK1x0XHRleHAtXHUwMDNlZXZlbnRfbWFzayA9IGVjYWNoZS1cdTAwM2VleHBtYXNrO1xuK1xuIFx0aWYgKGNkYVtDVEFfRVhQRUNUX05BVF0pIHtcbiBcdFx0ZXJyID0gY3RuZXRsaW5rX3BhcnNlX2V4cGVjdF9uYXQoY2RhW0NUQV9FWFBFQ1RfTkFUXSxcbiBcdFx0XHRcdFx0XHQgZXhwLCBuZl9jdF9sM251bShjdCkpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuY1xuaW5kZXggYTY5NTU5ZWRmOWIzNjMuLmU2NzJkNzRhNjgxN2VhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmNcbkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRcdG5mX25hdF90ZnRwID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF90ZnRwX2hvb2spO1xuIFx0XHRpZiAobmZfbmF0X3RmdHAgXHUwMDI2XHUwMDI2IGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKVxuLVx0XHRcdHJldCA9IG5mX25hdF90ZnRwKHNrYiwgY3RpbmZvLCBleHApO1xuK1x0XHRcdHJldCA9IG5mX25hdF90ZnRwKHNrYiwgY3QsIGN0aW5mbywgZXhwKTtcbiBcdFx0ZWxzZSBpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XG4gXHRcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcImNhbm5vdCBhZGQgZXhwZWN0YXRpb25cIik7XG4gXHRcdFx0cmV0ID0gTkZfRFJPUDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jXG5pbmRleCA4ZjEwNTQ5MjBhODU3MS4uMzMwNDE1ODA5NDI1Y2UgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcbkBAIC0yNiw2ICsyNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl9hbWFuZGEgPVxuIFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdFx0IHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRcdCB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5AQCAtNDYsMTUgKzQ3LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0LyogVHJ5IHRvIGdldCBzYW1lIHBvcnQ6IGlmIG5vdCwgdHJ5IHRvIGNoYW5nZSBpdC4gKi9cbiBcdHBvcnQgPSBuZl9uYXRfZXhwX2ZpbmRfcG9ydChleHAsIG50b2hzKGV4cC1cdTAwM2VzYXZlZF9wcm90by50Y3AucG9ydCkpO1xuIFx0aWYgKHBvcnQgPT0gMCkge1xuLVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgXCJhbGwgcG9ydHMgaW4gdXNlXCIpO1xuK1x0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwiYWxsIHBvcnRzIGluIHVzZVwiKTtcbiBcdFx0cmV0dXJuIE5GX0RST1A7XG4gXHR9XG4gXG4gXHRzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCBcIiV1XCIsIHBvcnQpO1xuLVx0aWYgKCFuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQoc2tiLCBleHAtXHUwMDNlbWFzdGVyLCBjdGluZm8sXG4rXHRpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXG4gXHRcdFx0XHQgICAgICBwcm90b2ZmLCBtYXRjaG9mZiwgbWF0Y2hsZW4sXG4gXHRcdFx0XHQgICAgICBidWZmZXIsIHN0cmxlbihidWZmZXIpKSkge1xuLVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgXCJjYW5ub3QgbWFuZ2xlIHBhY2tldFwiKTtcbitcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcImNhbm5vdCBtYW5nbGUgcGFja2V0XCIpO1xuIFx0XHRuZl9jdF91bmV4cGVjdF9yZWxhdGVkKGV4cCk7XG4gXHRcdHJldHVybiBORl9EUk9QO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmNcbmluZGV4IGM5MmE0MzZkOWM0ODZlLi4yNWQyMGUyOTcwYWUxYiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuY1xuQEAgLTYxLDYgKzYxLDcgQEAgc3RhdGljIGludCBuZl9uYXRfZnRwX2ZtdF9jbWQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsXG4gLyogU28sIHRoaXMgcGFja2V0IGhhcyBoaXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWF0Y2hpbmcgY29kZS5cbiAgICBNYW5nbGUgaXQsIGFuZCBjaGFuZ2UgdGhlIGV4cGVjdGF0aW9uIHRvIG1hdGNoIHRoZSBuZXcgdmVyc2lvbi4gKi9cbiBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0XHQgICAgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHRcdCAgICAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0XHQgICAgICAgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbkBAIC03MSw3ICs3Miw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dW5pb24gbmZfaW5ldF9hZGRyIG5ld2FkZHI7XG4gXHR1X2ludDE2X3QgcG9ydDtcbiBcdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG4tXHRzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXHUwMDNlbWFzdGVyO1xuIFx0Y2hhciBidWZmZXJbc2l6ZW9mKFwifDF8fDY1NTM1fFwiKSArIElORVQ2X0FERFJTVFJMRU5dO1xuIFx0dW5zaWduZWQgaW50IGJ1ZmxlbjtcbiBcbkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0cG9ydCA9IG5mX25hdF9leHBfZmluZF9wb3J0KGV4cCwgbnRvaHMoZXhwLVx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0KSk7XG4gXHRpZiAocG9ydCA9PSAwKSB7XG4tXHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtXHUwMDNlbWFzdGVyLCBcImFsbCBwb3J0cyBpbiB1c2VcIik7XG4rXHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCJhbGwgcG9ydHMgaW4gdXNlXCIpO1xuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXG5pbmRleCAxOWM0ZmNjNjBjNTBmMi4uODliMzFmZTkzMmJhYzAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmNcbkBAIC0zMCw2ICszMCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl9pcmMgPVxuIFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdFx0IHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRcdCB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5AQCAtMzcsNyArMzgsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcbiB7XG4gXHRjaGFyIGJ1ZmZlcltzaXplb2YoXCI0Mjk0OTY3Mjk2IDY1NjM1XCIpXTtcbi1cdHN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC1cdTAwM2VtYXN0ZXI7XG4gXHR1bmlvbiBuZl9pbmV0X2FkZHIgbmV3YWRkcjtcbiBcdHVfaW50MTZfdCBwb3J0O1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuY1xuaW5kZXggMWE1OTExMzJkNmViOTMuLjcxMjFlNjcwNGYzNDFjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmNcbkBAIC0yMSwxNyArMjEsMTYgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX3RmdHAgPVxuIFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdFx0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHApXG4ge1xuLVx0Y29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0ID0gZXhwLVx1MDAzZW1hc3Rlcjtcbi1cbiBcdGV4cC1cdTAwM2VzYXZlZF9wcm90by51ZHAucG9ydFxuIFx0XHQ9IGN0LVx1MDAzZXR1cGxlaGFzaFtJUF9DVF9ESVJfT1JJR0lOQUxdLnR1cGxlLnNyYy51LnVkcC5wb3J0O1xuIFx0ZXhwLVx1MDAzZWRpciA9IElQX0NUX0RJUl9SRVBMWTtcbiBcdGV4cC1cdTAwM2VleHBlY3RmbiA9IG5mX25hdF9mb2xsb3dfbWFzdGVyO1xuIFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xuLVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCIpO1xuK1x0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwiY2Fubm90IGFkZCBleHBlY3RhdGlvblwiKTtcbiBcdFx0cmV0dXJuIE5GX0RST1A7XG4gXHR9XG4gXHRyZXR1cm4gTkZfQUNDRVBUO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDE6NTcuMTU4MjU3MDEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI2NzQyMjk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgUmVsZXZhbmNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgcGF0Y2ggYW5kIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzLCBzcGVjaWZpY2FsbHkgdGhlIEFtYW5kYSwgRlRQLCBJUkMsIFRGVFAsIGJyb2FkY2FzdCwgbmV0bGluaywgZWNhY2hlLCBhbmQgZXhwZWN0IG1vZHVsZXMuXG5cbkZpcnN0LCBpdCBzZWVtcyB0aGUgcGF0Y2ggaXMgYWRkaW5nIGEgYHN0cnVjdCBuZl9jb25uICpjdGAgcGFyYW1ldGVyIHRvIHNldmVyYWwgaG9vayBmdW5jdGlvbnM6IGBuZl9uYXRfYW1hbmRhX2hvb2tfZm5gLCBgbmZfbmF0X2Z0cF9ob29rX2ZuYCwgYG5mX25hdF9pcmNfaG9va19mbmAsIGFuZCBgbmZfbmF0X3RmdHBfaG9va19mbmAuIE5vdCBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgZm9yIGZ1enppbmcgaW4gaXRzZWxmLiBBZGRpbmcgdGhlIGNvbm50cmFjayBpc24ndCB2ZXJ5IGNvbmNlcm5pbmcgLSB0aGUgY2FsbGVyIG5vdyBoYXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cblxuU2Vjb25kLCB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIGluIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YC4gVGhleSd2ZSBjaGFuZ2VkIGl0IHRvIHVzZSBgZXhwLVx1MDAzZWV2ZW50X21hc2tgIGRpcmVjdGx5IGluc3RlYWQgb2YgZG9pbmcgYSBsb29rdXAgd2l0aCBgbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVx1MDAzZW1hc3RlcilgLiBUaGlzIGlzIGEgKmRlZmluaXRlKiBjaGFuZ2UgaW4gYmVoYXZpb3IuIFRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgYXZvaWRzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG51bGwtcHRyLWRlcmVmIGlmIGBleHAtXHUwMDNlbWFzdGVyYCBpcyBmcmVlZCBvciBpdHMgZWNhY2hlIGlzIGZyZWVkL25vdCBmb3VuZCwgb3IgaXQganVzdCBvcHRpbWl6ZXMgdGhlIGxvb2t1cC4gV2FpdCwgdGhlIGNvZGUgbm93IGNhY2hlcyB0aGUgZXZlbnQgbWFzayBhdCBleHBlY3RhdGlvbiBjcmVhdGlvbiB0aW1lIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBmcm9tIHRoZSBtYXN0ZXIgYXQgZXZlbnQgcmVwb3J0IHRpbWUuIFRoaXMgaXMgY2FjaGluZyBhIHZhbHVlIGZyb20gYGV4cC1cdTAwM2VtYXN0ZXJgIGluIGBleHBgIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBldmVyeSB0aW1lIHdlIGNhbGwgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgLiBUaGlzIGF2b2lkcyBhY2Nlc3NpbmcgYGV4cC1cdTAwM2VtYXN0ZXJgJ3MgZWNhY2hlIGxhdGVyLCB3aGljaCBtaWdodCBiZSB1bnNhZmUgb3IganVzdCBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LlxuXG5UaGlyZCwgdGhlIHBhdGNoIGFsc28gaW5pdGlhbGl6ZXMgYGV4cC1cdTAwM2VldmVudF9tYXNrYCBpbiBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYW5kIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCBieSBsb29raW5nIHVwIHRoZSBlY2FjaGUgb2YgdGhlIG1hc3RlciBjb25uZWN0aW9uLiBUaGlzIGlzIHRpZWQgdG8gdGhlIHByZXZpb3VzIGNoYW5nZSBiZWNhdXNlIGBleHAtXHUwMDNlZXZlbnRfbWFza2AgaGFzIHRvIGJlIGluaXRpYWxpemVkIGF0IHNvbWUgcG9pbnQuIEl0J3MgaW5pdGlhbGl6aW5nIHRoYXQgbWVtYmVyLlxuXG5TbywgSSB0aGluayB3ZSBoYXZlIGEgcmVhbCBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlIGJlY2F1c2UgaXQncyBhdm9pZGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXB0ci1kZXJlZiBvciBhdCBsZWFzdCBvcHRpbWl6aW5nIHRoZSBsb29rdXAuIFRoZSBvcmlnaW5hbCBjb2RlIGxvb2tlZCBsaWtlOlxuXG5gYGBjXG4tXHRlID0gbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVx1MDAzZW1hc3Rlcik7XG4tXHRpZiAoIWUpXG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cbi1cdGlmIChlLVx1MDAzZWV4cG1hc2sgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBldmVudCkpIHtcbitcdGlmIChleHAtXHUwMDNlZXZlbnRfbWFzayBcdTAwMjYgKDEgXHUwMDNjXHUwMDNjIGV2ZW50KSkge1xuYGBgXG5cblRoaXMgY2hhbmdlIGludm9sdmVzIHN0b3JpbmcgYSB2YWx1ZSBpbiBhbiBleHBlY3RhdGlvbiB3aGVuIHRoZSBleHBlY3RhdGlvbiBpcyBjcmVhdGVkIGFuZCBzdWJzZXF1ZW50bHkgdXNpbmcgdGhhdCB2YWx1ZS4gU28sIGl0J3MgY2FjaGluZyBhdCBleHBlY3RhdGlvbiBjcmVhdGlvbiB0aW1lIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBmcm9tIHRoZSBtYXN0ZXIgYXQgZXZlbnQgcmVwb3J0IHRpbWUuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSB0aGlua2luZyB3ZSBuZWVkIGBDT05GSUdfTkZfQ09OTlRSQUNLYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTYCwgYENPTkZJR19ORl9OQVRgLCBgQ09ORklHX05GX0NPTk5UUkFDS19BTUFOREFgLCBgQ09ORklHX05GX0NPTk5UUkFDS19GVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19JUkNgLCBgQ09ORklHX05GX0NPTk5UUkFDS19URlRQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYW5kIGBDT05GSUdfTkZfQ1RfTkVUTElOS2AuIEJlc3QgdG8gdXNlIGBncmVwcGVyYCB0byBmaW5kIHRoZSBleGFjdCBjb25maWcgbmFtZXMgZm9yIHNhZmV0eSwgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0OSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjA2LjQyNTY4MjExNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk3MDk4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTgwPUNPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzo4MTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTgyLUNPTkZJR19ORl9DT05OVFJBQ0tfVElNRU9VVD15XFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE0OT1DT05GSUdfTkZfQ09OTlRSQUNLPW1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE1MDpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xNTEtQ09ORklHX05FVEZJTFRFUl9YVF9NQVJLPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTU0PUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6NTU6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTU2LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz01Nz1DT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzo1ODpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTU5LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9NjE9Q09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjYyOkNPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTYzLUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz02MD1DT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzo2MTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTYyLUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz00ND1DT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzo0NTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTQ2LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZz00OD1DT05GSUdfTkZfQ09OTlRSQUNLX01BUks9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZzo0OTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZzVfZGVmY29uZmlnLTUwLUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTIzPUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzoxMjQ6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMTI1LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xODQ9Q09ORklHX05GX0NPTk5UUkFDS19QUk9DRlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxODU6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xODYtQ09ORklHX05GX0NPTk5UUkFDS19USU1FT1VUPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xNzU9Q09ORklHX05GX0NPTk5UUkFDS19QUk9DRlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxNzY6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xNzctQ09ORklHX05GX0NPTk5UUkFDS19USU1FT1VUPXlcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaD01MT1zdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLmgtNjItI2VuZGlmXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oOjYzOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaC02NC1cXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldF9lY2FjaGUgZWNhY2hlO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0zND1uZl9jdF9lY2FjaGVfZmluZChjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0zNS17XFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDozNjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTM3LVxcdHJldHVybiBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX0VDQUNIRSk7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oPTQzPXN0YXRpYyBpbmxpbmUgYm9vbCBuZl9jdF9lY2FjaGVfZXhpc3QoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtNDQte1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6NDU6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC00Ni1cXHRyZXR1cm4gbmZfY3RfZXh0X2V4aXN0KGN0LCBORl9DVF9FWFRfRUNBQ0hFKTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtNTEtXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDo1MjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTUzLVxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xMDI9bmZfY29ubnRyYWNrX2V2ZW50X2NhY2hlKGVudW0gaXBfY29ubnRyYWNrX2V2ZW50cyBldmVudCwgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTAzLXtcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjEwNDojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTEwNS1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBuZl9jdF9uZXQoY3QpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xMjg9bmZfY29ubnRyYWNrX2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTMwLXtcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjEzMTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTEzMi1cXHRpZiAobmZfY3RfZWNhY2hlX2V4aXN0KGN0KSlcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTM5PW5mX2Nvbm50cmFja19ldmVudChlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdClcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0MC17XFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxNDE6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNDItXFx0aWYgKG5mX2N0X2VjYWNoZV9leGlzdChjdCkpXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0Ny1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjE0ODojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0OS12b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXhwZWN0X2V2ZW50cyBldmVudCxcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTYwPXN0YXRpYyBpbmxpbmUgYm9vbCBuZl9jb25udHJhY2tfZWNhY2hlX2R3b3JrX3BlbmRpbmcoY29uc3Qgc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNjMtfVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTY0OiNlbHNlIC8qIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTICovXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNjUtXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oPTE4NT1zdGF0aWMgaW5saW5lIGJvb2wgbmZfY29ubnRyYWNrX2VjYWNoZV9kd29ya19wZW5kaW5nKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCkgeyByZXR1cm4gZmFsc2U7IH1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjE4NjojZW5kaWYgLyogQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgKi9cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE4Ny0jZW5kaWYgLypfTkZfQ09OTlRSQUNLX0VDQUNIRV9IKi9cXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmg9OT1lbnVtIG5mX2N0X2V4dF9pZCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5oLTE1LVxcdE5GX0NUX0VYVF9BQ0NULFxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmg6MTY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuaC0xNy1cXHRORl9DVF9FWFRfRUNBQ0hFLFxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bnMvY29ubnRyYWNrLmg9ODM9c3RydWN0IG5ldG5zX2N0IHtcXG5pbmNsdWRlL25ldC9uZXRucy9jb25udHJhY2suaDo4NDojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRucy9jb25udHJhY2suaC04NS1cXHRib29sIGVjYWNoZV9kd29ya19wZW5kaW5nO1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTE0OD1jb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTI9bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19USU1FU1RBTVApICs9IG5mX2Nvbm50cmFja190aW1lc3RhbXAub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMpICs9IG5mX2Nvbm50cmFja19lY2FjaGUub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQtbmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFMpICs9IG5mX2Nvbm50cmFja19sYWJlbHMub1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jPTY1MD1zdGF0aWMgdm9pZCBuZl9jdF9hZGRfdG9fZWNhY2hlX2xpc3Qoc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy02NTEte1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzo2NTI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTY1My1cXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCAqY25ldCA9IG5mX2N0X3Blcm5ldChuZl9jdF9uZXQoY3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTc2MS1cXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX3R1cGxlIHJlcGxfdHVwbGU7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE3NjI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE3NjMtXFx0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xNzk0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzoxNzk1OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xNzk2LVxcdGVjYWNoZSA9IHRtcGwgPyBuZl9jdF9lY2FjaGVfZmluZCh0bXBsKSA6IE5VTEw7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYz0zMD1zdGF0aWMgY29uc3QgdTggbmZfY3RfZXh0X3R5cGVfbGVuW05GX0NUX0VYVF9OVU1dID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMzYtXFx0W05GX0NUX0VYVF9BQ0NUXSA9IHNpemVvZihzdHJ1Y3QgbmZfY29ubl9hY2N0KSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYzozNzojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0zOC1cXHRbTkZfQ1RfRVhUX0VDQUNIRV0gPSBzaXplb2Yoc3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUpLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM9NTc9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQgdG90YWxfZXh0ZW5zaW9uX3NpemUodm9pZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTY4LVxcdFxcdCsgc2l6ZW9mKHN0cnVjdCBuZl9jb25uX2FjY3QpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM6Njk6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtNzAtXFx0XFx0KyBzaXplb2Yoc3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU3PXN0YXRpYyBpbnQgY3RuZXRsaW5rX2R1bXBfc2VjY3R4KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODQtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg2LXN0YXRpYyBpbnRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz02NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGN0YV9pcF9ubGFfcG9saWN5W0NUQV9JUF9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy02NTAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjY1MTojaWYgZGVmaW5lZChDT05GSUdfTkVURklMVEVSX05FVExJTktfR0xVRV9DVCkgfHwgZGVmaW5lZChDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUylcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtNjUyLXN0YXRpYyBzaXplX3QgY3RuZXRsaW5rX3Byb3RvX3NpemUoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTY5Nj1zdGF0aWMgaW5saW5lIHNpemVfdCBjdG5ldGxpbmtfdGltZXN0YW1wX3NpemUoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTcwNy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6NzA4OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy03MDktc3RhdGljIHNpemVfdCBjdG5ldGxpbmtfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9NzQ0PWN0bmV0bGlua19jb25udHJhY2tfZXZlbnQodW5zaWduZWQgaW50IGV2ZW50cywgY29uc3Qgc3RydWN0IG5mX2N0X2V2ZW50ICppdGVtKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTg4Mi19XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjg4MzojZW5kaWYgLyogQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtODg0LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE2NjY9c3RhdGljIGludCBjdG5ldGxpbmtfZ2V0X2Nvbm50cmFjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3MjktXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE3MzA6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3MzEtc3RhdGljIGludCBjdG5ldGxpbmtfZHVtcF9vbmVfZW50cnkoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xNzc2PWN0bmV0bGlua19kdW1wX2R5aW5nKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xNzc4LVxcdHN0cnVjdCBjdG5ldGxpbmtfbGlzdF9kdW1wX2N0eCAqY3R4ID0gKHZvaWQgKiljYi1cXHUwMDNlY3R4O1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxNzc5OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xNzgwLVxcdGNvbnN0IHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3OTEtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE3OTI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3OTMtXFx0ZWNhY2hlX25ldCA9IG5mX2Nvbm5fcGVybmV0X2VjYWNoZShuZXQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjY9Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDg5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDkwOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDkxLXN0YXRpYyBpbnRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNzQyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX3N0YXRfZXhwX2NwdShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NTUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM3NTY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NTctc3RhdGljIHN0cnVjdCBuZl9jdF9ldmVudF9ub3RpZmllciBjdG5sX25vdGlmaWVyID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4NDk9c3RhdGljIGludCBfX25ldF9pbml0IGN0bmV0bGlua19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NTAte1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODUxOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODUyLVxcdG5mX2Nvbm50cmFja19yZWdpc3Rlcl9ub3RpZmllcihuZXQsIFxcdTAwMjZjdG5sX25vdGlmaWVyKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zODU3PXN0YXRpYyB2b2lkIGN0bmV0bGlua19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODU4LXtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mzg1OTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg2MC1cXHRuZl9jb25udHJhY2tfdW5yZWdpc3Rlcl9ub3RpZmllcihuZXQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jPTU4NT1lbnVtIG5mX2N0X3N5c2N0bF9pbmRleCB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTkyLVxcdE5GX1NZU0NUTF9DVF9BQ0NULFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYzo1OTM6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jLTU5NC1cXHRORl9TWVNDVExfQ1RfRVZFTlRTLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jPTY0Mj1zdGF0aWMgc3RydWN0IGN0bF90YWJsZSBuZl9jdF9zeXNjdGxfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy02OTgtXFx0fSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM6Njk5OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy03MDAtXFx0W05GX1NZU0NUTF9DVF9FVkVOVFNdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jPTEwMDM9c3RhdGljIGludCBuZl9jb25udHJhY2tfc3RhbmRhbG9uZV9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtMTAxOS1cXHR0YWJsZVtORl9TWVNDVExfQ1RfQUNDVF0uZGF0YSA9IFxcdTAwMjZuZXQtXFx1MDAzZWN0LnN5c2N0bF9hY2N0O1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYzoxMDIwOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy0xMDIxLVxcdHRhYmxlW05GX1NZU0NUTF9DVF9FVkVOVFNdLmRhdGEgPSBcXHUwMDI2bmV0LVxcdTAwM2VjdC5zeXNjdGxfZXZlbnRzO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYz00ND1zdGF0aWMgdW5zaWduZWQgaW50IG5mbmV0bGlua19wZXJuZXRfaWQgX19yZWFkX21vc3RseTtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTQ1LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM6NDY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy00Ny1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKG5mbmxfZ3JwX2FjdGl2ZV9sb2NrKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM9NjcwPXN0YXRpYyB2b2lkIG5mbmV0bGlua19iaW5kX2V2ZW50KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGdyb3VwKVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNjcxLXtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jOjY3MjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTY3My1cXHRpbnQgdHlwZSwgZ3JvdXBfYml0O1xcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYz03Mjg9c3RhdGljIHZvaWQgbmZuZXRsaW5rX3VuYmluZChzdHJ1Y3QgbmV0ICpuZXQsIGludCBncm91cClcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTcyOS17XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYzo3MzA6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy03MzEtXFx0aW50IHR5cGUsIGdyb3VwX2JpdDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9Mjc0PXN0YXRpYyB2b2lkIG5mdF9jdF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMxNC0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMxNTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMxNi1cXHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NTU3PXN0YXRpYyBpbnQgbmZ0X2N0X3NldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU5Ni0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjU5NzojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU5OC1cXHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZz02ND1DT05GSUdfTkZfQ09OTlRSQUNLPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzo2NTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWctNjYtQ09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MjowOC43MjI3ODUxNTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODEzNDE3MzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBOZXR3b3JrIENvbm5lY3Rpb24gVHJhY2tpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHRvdWNoaW5nIHF1aXRlIGEgZmV3IGZpbGVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbmZfY29ubnRyYWNrYCBhbmQgYG5mX25hdGAgc3Vic3lzdGVtcy4gVGhlIGNoYW5nZXMgc2VlbSBjZW50ZXJlZCBhcm91bmQgc3BlY2lmaWMgcHJvdG9jb2xzOiBBbWFuZGEsIEZUUCwgSVJDLCBhbmQgVEZUUCwgYXMgd2VsbCBhcyBzb21lIG1vcmUgZ2VuZXJhbCBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQgZnVuY3Rpb25hbGl0aWVzLiBUaGUgbGlzdCBpcyBleHRlbnNpdmU6IGBuZl9jb25udHJhY2tfYW1hbmRhLmNgLCBgbmZfY29ubnRyYWNrX2Z0cC5jYCwgYG5mX2Nvbm50cmFja19pcmMuY2AsIGFuZCBgbmZfY29ubnRyYWNrX3RmdHAuY2AsIGZvbGxvd2VkIGJ5IGBuZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgLCBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGBuZl9jb25udHJhY2tfZWNhY2hlLmNgLCBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCwgdGhlbiBgbmZfbmF0X2FtYW5kYS5jYCwgYG5mX25hdF9mdHAuY2AsIGBuZl9uYXRfaXJjLmNgLCBhbmQgYG5mX25hdF90ZnRwLmNgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIHBhdGNoIGlzIGVpdGhlciBlbmhhbmNpbmcgb3IgZml4aW5nIGludGVyYWN0aW9ucyB3aXRoIHRoZXNlIHNwZWNpZmljIHByb3RvY29scywgbGlrZWx5IGhhbmRsaW5nIHRoZWlyIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3IgTkFUIHRyYXZlcnNhbCBtb3JlIGVmZmVjdGl2ZWx5LlxuXG5JIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIGFyZSBlbmFibGVkLiBUaGUgcmVxdWlyZWQgY29uZmlncyB3b3VsZCBiZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYE5GX0NUX05FVExJTktgLCBgTkZfTkFUX0FNQU5EQWAsIGBORl9OQVRfRlRQYCwgYE5GX05BVF9JUkNgLCBhbmQgYE5GX05BVF9URlRQYC5cblxuSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIGBORl9OQVRfQU1BTkRBYCBpcyByZWFsbHkgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Mjg0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjE0LjUzNjIwNDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjAzMDgzMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZfTkFUX0FNQU5EQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDA3PWNvbmZpZyBORl9OQVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9Njk9ZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNzEtIyBOQVQgaGVscGVyc1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NzI6b2JqLSQoQ09ORklHX05GX05BVF9BTUFOREEpICs9IG5mX25hdF9hbWFuZGEub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNzMtb2JqLSQoQ09ORklHX05GX05BVF9GVFApICs9IG5mX25hdF9mdHAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MjoxNi4zOTY1MjM3MzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY0MzA3NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gTW9kdWxlIENoZWNrKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nLCBcIlllcCwgSSBrbm93IHRob3NlIE5BVCBtb2R1bGVzLCBgTkZfTkFUX0FNQU5EQWAsIGBORl9OQVRfRlRQYCwgYE5GX05BVF9JUkNgLCBhbmQgYE5GX05BVF9URlRQYCBhcmUgZGVmaW5pdGVseSBhcm91bmQuIFRoZXkncmUgcHJldHR5IHN0YW5kYXJkIGluY2x1c2lvbnMsIGVzcGVjaWFsbHkgZm9yIGFueW9uZSBkZWFsaW5nIHdpdGggbGVnYWN5IHByb3RvY29scyBvciBzcGVjaWZpYyBhcHBsaWNhdGlvbiBsYXllciBnYXRld2F5cy5cIiBOb3csIGxldCdzIGp1c3QgbWFrZSBzdXJlLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgdGhhdCB0aGUgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIG1vZHVsZSBpcyBsb2FkZWQuIFRoYXQncyBhbiBpbXBvcnRhbnQgb25lIGFuZCBJIHdhbnQgdG8gdmVyaWZ5IGl0cyBleGlzdGVuY2UuIEdvdHRhIGJlIHN5c3RlbWF0aWMgYWJvdXQgdGhlc2UgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTExNCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjE5LjQ2MDgzMzUxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQwNjEzOTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX0NPTk5UUkFDS19CUk9BRENBU1RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTI1OD1jb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTI3Nz1jb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzk6XFx0c2VsZWN0IE5GX0NPTk5UUkFDS19CUk9BRENBU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjgwLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yOTY9Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk4LVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5OTpcXHRzZWxlY3QgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMDAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT00Nz1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0lSQykgKz0gbmZfY29ubnRyYWNrX2lyYy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo0ODpvYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0JST0FEQ0FTVCkgKz0gbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS00OS1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX05FVEJJT1NfTlMpICs9IG5mX2Nvbm50cmFja19uZXRiaW9zX25zLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDI6MjEuMTAxNDUyNTE0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYzMDQ5NDQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29ubnRyYWNrIEhlbHBlciBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBpdCBsb29rcyBsaWtlIHRoZXJlJ3MgZGVmaW5pdGVseSBzb21ldGhpbmcgcHJlc2VudCB0aGF0IHJlcXVpcmVzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZm9jdXMgc3ltYm9scy4gRmlyc3QsIEkgbmVlZCB0byBsaXN0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gc2VlIHdoYXQgdGhleSdyZSBkb2luZy4gTGV0J3Mgc2VlLi4uXG5cbkkgaGF2ZTpcbiogICBgYW1hbmRhX2hlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuY2BcbiogICBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgXG4qICAgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY2BcbiogICBgbmZfY3RfZXhwZWN0X2luaXRgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2BcbiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jYCB3aGljaCwgd2FpdCwgaXMgdGhhdCAqcmVhbGx5KiBqdXN0IGBoZWxwYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhY2N1cmF0ZSwgcGVyaGFwcyBpdCdzIHVzaW5nIHRoZSBoZWxwZXIgYGZ0cF9oZWxwYD9cbiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jYCAtIHNhbWUgdGhpbmcgaGVyZSwgY291bGQgYmUgbW9yZSBzcGVjaWZpY1xuKiAgIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jYFxuKiAgIGB0ZnRwX2hlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmNgXG4qICAgYGhlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY2AgLSBhaCwgdGhlcmUgYXJlIE5BVCBoZWxwZXJzIGFzIHdlbGxcbiogICBgbmZfbmF0X2Z0cGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jYCAtIGEgbmF0IGZ1bmN0aW9uIGhlcmUsIHRoYXQncyBpbnRlcmVzdGluZ1xuKiAgIGBoZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmNgIC0gYW5kIGFub3RoZXIgYGhlbHBgIGZ1bmN0aW9uLlxuKiAgIGBoZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jYCAtIGFuZCB0aGlzIGFzIHdlbGwuXG5cbk5vdywgSSdtIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbmZfY29ubnRyYWNrX2Z0cC5jYCwgYG5mX2Nvbm50cmFja19pcmMuY2AsIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2lyYy5jYCwgYW5kIGBuZl9uYXRfdGZ0cC5jYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGdlbmVyaWMgYGhlbHBgIGZ1bmN0aW9ucyBhcmUgbm90IG1hc2tpbmcgYW55IGRlZXBlciwgbW9yZSBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5LCBhbmQgSSBzaG91bGQgYWxzbyBnZXQgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlc2UgaGVscGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MDUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDI6MjcuNzMxOTQ5MDYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjczNTc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJec3RhdGljIGludCBoZWxwXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmM9MzM2PXN0YXRpYyB2b2lkIHVwZGF0ZV9ubF9zZXEoc3RydWN0IG5mX2Nvbm4gKmN0LCB1MzIgbmxfc2VxLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMtMzYwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jOjM2MTpzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYy0zNjItXFx0XFx0dW5zaWduZWQgaW50IHByb3RvZmYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjI3Ljc4ODY5NTE3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODgzNTExMjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBgaGVscGAgRnVuY3Rpb25zIGZvciBTeXprYWxsZXIgQ292ZXJhZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgd2UgY2FuIGxldmVyYWdlIHRoZXNlIGBoZWxwYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgU3l6a2FsbGVyJ3MgY292ZXJhZ2UgbWVjaGFuaXNtLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgaGVscGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgY291bGQgcG90ZW50aWFsbHkgcHJlc2VudCBhIG5hbWluZyBjb25mbGljdCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZnVuY3Rpb25zIHdpdGggdGhhdCBuYW1lLCBtYWtpbmcgZGlyZWN0IHRhcmdldGluZyBkaWZmaWN1bHQuIEhvd2V2ZXIsIFN5emthbGxlciB1c2VzIFBDIGFkZHJlc3NlcyBmb3IgaXRzIGNvdmVyYWdlIGFuYWx5c2lzLCBzbyB0aGF0IHBhcnRpY3VsYXIgaXNzdWUgaXNuJ3QgYSBwcm9ibGVtLlxuXG5Gb3IgdGhlIGBGb2N1c1N5bWJvbHNgIGNvbXBvbmVudCwgd2UndmUgZ290IG9wdGlvbnM6IHdlIGNhbiBwcm92aWRlIGFsbCBleHBvcnRlZCBmdW5jdGlvbnMgKHN0YXRpYyBhbmQgbm9uLXN0YXRpYyksIG9yIGp1c3QgdGhlIHN0YXRpYyBvbmVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbGlzdCB0aGVtIGFuZCBldmFsdWF0ZS4gTGV0J3Mgc2VlLi4uIHdlIGhhdmU6IGBhbWFuZGFfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAuXG5cbkZvciB0aGVzZSBzdGF0aWMgYGhlbHBgIGZ1bmN0aW9ucywgd2UgaGF2ZSB0aGUgb3B0aW9uIG9mIGVpdGhlciBpbmNsdWRpbmcgdGhlbSBvciBvbWl0dGluZyB0aGVtIGZyb20gdGhlIGZvY3VzIHN5bWJvbHMuIEl0IHNlZW1zIGJldHRlciB0byBpbmNsdWRlIHRob3NlIHdpdGggdW5pcXVlIG5hbWVzLCBzaW5jZSB0aG9zZSBhcmUgY2xlYXJseSBkaXN0aW5ndWlzaGFibGUuXG5cbk5vdywgd2FpdCBhIG1vbWVudCwgdGhpbmtpbmcgdGhyb3VnaCB0aGlzLi4uIGxldCdzIGlkZW50aWZ5IHNvbWUgdGFyZ2V0czogYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgIGxvb2tzIGxpa2UgYSBzb2xpZCBjaG9pY2UuIEFsc28sIGBuZl9jdF9leHBlY3RfaW5pdGAsIGFuZCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgbG9vayBnb29kLCB0b28uIE9oLCBhbmQgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBhbWFuZGFfaGVscGAsIGB0ZnRwX2hlbHBgLCBhbmQgYG5mX25hdF9mdHBgIGFsc28uXG5cbkknbGwgcXVpY2tseSBjaGVjayBpZiBgbmZfbmF0X2FtYW5kYWAgaXMgdW5pcXVlbHkgbmFtZWQ7IGl0J3MgYWx3YXlzIGdvb2QgdG8gdmVyaWZ5IHRoZXNlIHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4MzEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDI6MzcuNjcyMjA4OTUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDk5NTYxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJec3RhdGljIHVuc2lnbmVkIGludCBoZWxwXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmM9MjU9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2FtYW5kYSA9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy0yNy1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzoyODpzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy0yOS1cXHRcXHRcXHQgc3RydWN0IG5mX2Nvbm4gKmN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MjozNy43MjcyMTAxNTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI4MTAxNTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggYW4gZXhwZXJ0J3MgbWluZDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEEgVHJvdWJsZXNob290aW5nIERpcmVjdGl2ZSoqXG5cblJpZ2h0LCBpdCBib2lscyBkb3duIHRvIHNvbWV0aGluZyBzdHJhaWdodGZvcndhcmQ6ICpoZWxwKi4gSSBuZWVkIHRvIGZpZ3VyZSB0aGlzIG91dCwgd2hpY2ggbWVhbnMgSSdtIGxvb2tpbmcgZm9yIGd1aWRhbmNlIG9yIGEgc29sdXRpb24uIEl0J3MgYSB0cm91Ymxlc2hvb3Rpbmcgc2l0dWF0aW9uLCBwcm9iYWJseSBkZWFsaW5nIHdpdGggTkFUIChOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24pLlxuXG5HaXZlbiB0aGUgY29udGV4dCwgdGhlIGltbWVkaWF0ZWx5IHJlbGV2YW50IGFyZWFzIGFyZSBsaWtlbHkgdGhlIGtlcm5lbCBtb2R1bGVzIGhhbmRsaW5nIElSQyBhbmQgVEZUUCBOQVQgc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aG9zZSBtb2R1bGVzLCBgbmZfbmF0X2lyYy5jYCBhbmQgYG5mX25hdF90ZnRwLmNgLCBoYW5kbGUgdGhlaXIgcmVzcGVjdGl2ZSBwcm90b2NvbHMgd2l0aGluIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhleSBpbnRlcmNlcHQsIHRyYW5zbGF0ZSwgYW5kIGZvcndhcmQgcGFja2V0cyB0byBzZWUgaWYgSSBjYW4gZmluZCB0aGUgcm9vdCBjYXVzZSBvZiB3aGF0ZXZlciBpcyBnb2luZyB3cm9uZy4gUGVyaGFwcyB0aGVyZSBhcmUgc29tZSBlZGdlIGNhc2VzIEknbSBvdmVybG9va2luZyBpbiB0aGVpciBsb2dpYy4gTGV0J3MgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzY3OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjQ2LjAwODIyNzA0M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2MjEwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jPTI5PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl9pcmMgPVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMtMzEtXFxubmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmM6MzI6c3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMtMzMtXFx0XFx0XFx0IHN0cnVjdCBuZl9jb25uICpjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDI6NDYuMDYyODc1ODU5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzMTQ3NTM2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRob3VnaHQgcHJvY2VzczpcblxuKipSZXZpZXdpbmcgYW5kIFZhbGlkYXRpbmcgRnVuY3Rpb24gTmFtaW5nKipcblxuQWxyaWdodCwgc28gaXQncyBhbGwgYWJvdXQgY2hlY2tpbmcgdGhlc2UgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgdGhlICdoZWxwJyBmdW5jdGlvbnMuIFRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgc3RyYWlnaHRmb3J3YXJkLCB0aGVzZSBzeW1ib2xzIGFyZSBpbmRlZWQgcmVsYXRlZCB0byBoZWxwIGZ1bmN0aW9uYWxpdHkuIEkndmUgZ290IHRoaXMgbGlzdCBvZiBmb2N1cyBzeW1ib2xzOiBgYW1hbmRhX2hlbHBgLCBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCwgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgLCBgbmZfY3RfZXhwZWN0X2luaXRgLCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAsIGB0ZnRwX2hlbHBgLCBhbmQgYG5mX25hdF9mdHBgLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHVzaW5nIHRoZSByaWdodCBuYW1lIGZvciB0aGF0IGxhc3Qgb25lLCBgbmZfbmF0X2Z0cGAuIFRoYXQgc291bmRzIGZhbWlsaWFyIGJ1dCBiZXN0IHRvIGNvbmZpcm0gYmVmb3JlIHByb2NlZWRpbmcuIFRpbWUgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgYG5mX25hdF9mdHBgLiBJJ20gYSBzdGlja2xlciBmb3IgYWNjdXJhY3kgYW5kIHRoaXMgd2lsbCBsaWtlbHkgYmUgaW1wb3J0YW50IGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA1NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0Mjo1NC4zNzc2MzE5MDJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDg0NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHBcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYz0zMz1zdGF0aWMgaW50IG5mX25hdF9mdHBfZm10X2NtZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZnRwX3R5cGUgdHlwZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jLTYyLSAgIE1hbmdsZSBpdCwgYW5kIGNoYW5nZSB0aGUgZXhwZWN0YXRpb24gdG8gbWF0Y2ggdGhlIG5ldyB2ZXJzaW9uLiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jOjYzOnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jLTY0LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjU0LjQzNDEyMTI3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTk1NDI0NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbmZfbmF0X2Z0cGAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgZGVmaW5pdGVseSByZWxhdGVkIHRvIGBuZl9uYXRfZnRwYC4gTm93LCBsZXQncyBnZXQgaW50byB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXNlIGFyZSBlbmFibGVkOiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYE5GX0NUX05FVExJTktgLCBgTkZfTkFUX0FNQU5EQWAsIGBORl9OQVRfRlRQYCwgYE5GX05BVF9JUkNgLCBhbmQgYE5GX05BVF9URlRQYC5cblxuV2FpdCBhIG1pbnV0ZSwgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIGlzIGEgdHJpc3RhdGUgY29uZmlnLiBUaGF0IG1lYW5zIGl0IGNhbiBiZSBvbiwgb2ZmLCBvciBtb2R1bGFyLiBCdXQgaXQgc2VlbXMgdG8gYmUgc2VsZWN0ZWQgaW5kaXJlY3RseSBieSBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgLiBJZGVhbGx5LCBJJ2Qgd2FudCB0byBlbmFibGUgaXQgZGlyZWN0bHkgaWYgSSBjYW4sIG9yLCBpZiBub3QsIEknZCBjaG9vc2UgdGhlIG9uZXMgdGhhdCBzZWxlY3QgaXQuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWcgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gc2VlIGlmIEkgY2FuIGVuYWJsZSBgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVGAgZGlyZWN0bHkuIEFscmlnaHQsIGhlcmUncyB0aGUgcmVsZXZhbnQgc2VjdGlvbjpcblxuYGBgXG5jb25maWcgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxuXHR0cmlzdGF0ZVxuYGBgXG5cbkFoLCBpdCBoYXMgbm8gcHJvbXB0LiBUaGF0IG1lYW5zIHRoZSB1c2VyIGNhbid0IHNlbGVjdCBpdCBkaXJlY3RseS4gU28sIHRoZSBiZXN0IGFwcHJvYWNoIGhlcmUgaXMgdG8gZ28gd2l0aCBlbmFibGluZyBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgIGluc3RlYWQuIFRoZXknbGwgcHVsbCBpdCBpbiBhdXRvbWF0aWNhbGx5LiBUaGF0J3MgdGhlIGNsZWFuZXIgc29sdXRpb24sIGtlZXBpbmcgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGEgaGlkZGVuIGNvbmZpZyBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTQ5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjAxLjQyOTU0Nzc0NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MTc3NzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTI3ND1jb25maWcgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjAzLjM5MTMzMDQ3OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTY3NzQwOTU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFJldmlldyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gaW5jb3Jwb3JhdGUgYSBjb3VwbGUgb2YgbmV3IGNvbm5lY3Rpb24gdHJhY2tpbmcgb3B0aW9ucyBpbnRvIHRoZSBjb25maWd1cmF0aW9uLiBTcGVjaWZpY2FsbHksIEknbSBhZGRpbmcgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCBhbmQgYE5GX0NPTk5UUkFDS19TTk1QYCB0byB0aGUgbGlzdC4gVGhleSBzZWVtIHJlbGV2YW50IHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgYW5kIEkgd2FudCB0byBiZSBjb21wcmVoZW5zaXZlLlxuXG5Ob3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHNvbWV0aGluZy4gSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2Agb3B0aW9uIHRvIHNlZSBpZiBpdCdzIHNldCB1cCB3aXRoIGEgcHJvbXB0LiBBaCwgZ29vZC4gWWVzLCBpdCBoYXMgYSBib29sZWFuIHByb21wdC4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHVzZXIgY3VzdG9taXphdGlvbiBpbiBhIHdheSBJIGV4cGVjdC5cblxuT2theSwgbmV4dCB1cCBpcyBgTkZfQ1RfTkVUTElOS2AuIE5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzUwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MTkuMDY4NzQxODk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI0MDA3NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DVF9ORVRMSU5LXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zNTU9Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzY1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjY6Y29uZmlnIE5GX0NUX05FVExJTktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzY3LVxcdHRyaXN0YXRlICdDb25uZWN0aW9uIHRyYWNraW5nIG5ldGxpbmsgaW50ZXJmYWNlJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM3Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzczOmNvbmZpZyBORl9DVF9ORVRMSU5LX1RJTUVPVVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzc0LVxcdHRyaXN0YXRlICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0IHR1bmluZyB2aWEgTmV0bGluaydcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM4NTpjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg2LVxcdHRyaXN0YXRlICdDb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMgaW4gdXNlci1zcGFjZSB2aWEgTmV0bGluaydcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MjAuNzkyNzUzMDk1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzQ2MjQ0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkFzc2Vzc2luZyB0aGUgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgd2UndmUgZ290IGEgcHJvbXB0IHRvIHdvcmsgd2l0aCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBnaXZlbiB0aGUgaW1wbGllZCBjb250ZXh0IG9mIG5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiAoTkFUKSwgYW5kIHRoZSBzcGVjaWZpYyBmb2N1cyBvbiBzb21lIHdlbGwta25vd24gYXBwbGljYXRpb24gbGF5ZXIgcHJvdG9jb2xzLCBsZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlc2UgTkFUIG1vZHVsZXM6IGBORl9OQVRfQU1BTkRBYCwgYE5GX05BVF9GVFBgLCBgTkZfTkFUX0lSQ2AsIGFuZCBgTkZfTkFUX1RGVFBgLiBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCB3aGF0IHRoZXkgZG8sIGlmIHRoZXkgYXJlIGFwcHJvcHJpYXRlIGZvciB0aGUgcHJvYmxlbSBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIFRoZXNlIGFyZSBsaWtlbHkgcmVsYXRlZCB0byBtb3JlIGdlbmVyYWwgTkFUIGZ1bmN0aW9uYWxpdHkgb3Igc29tZSBuZXR3b3JrIGZpbHRlcmluZywgc28gSSdsbCBjb25zaWRlciBob3cgdGhlc2UgYXJlIGFwcGxpZWQgYXMgd2VsbC4gVGhpcyBzZXRzIHRoZSBzdGFnZSBmb3IgYSBtb3JlIGZvY3VzZWQgYW5hbHlzaXMsIG5vdCBqdXN0IGEgc3VyZmFjZS1sZXZlbCByZXNwb25zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk4NTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MzoyNC4wMjczNzk4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0NTg4MDgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfTkFUX0FNQU5EQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDA3PWNvbmZpZyBORl9OQVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MjUuNzczMjY2MTlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0ODczMzkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFNlbGVjdGlvbiBNZWNoYW5pc20gb2YgYE5GX05BVF9BTUFOREFgKipcblxuT2theSwgc28gdGhlcmUncyBubyBpbml0aWFsIHByb21wdCBmb3IgYE5GX05BVF9BTUFOREFgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICpob3cqIGlzIHRoaXMgcGFydGljdWxhciBlbnRpdHkgYmVpbmcgY2hvc2VuIG9yIHRyaWdnZXJlZD8gU2luY2UgSSdtIG5vdCBnaXZlbiBhbnkgY29udGV4dCwgSSdsbCBuZWVkIHRvIHJlY29uc3RydWN0IHRoZSBleGVjdXRpb24gcGF0aC4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRpcmVjdCBmdW5jdGlvbiBjYWxsLCBhbiBldmVudC1kcml2ZW4gYWN0aXZhdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gSSBuZWVkIHRvIGxvb2sgZm9yIGNsdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIOKAkyBjYWxscyB0byBzaW1pbGFyIGZ1bmN0aW9ucywgY29udGV4dC1kZXBlbmRlbnQgc2VsZWN0aW9uIGxvZ2ljLCBvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbiBwbGF5PyBJcyB0aGlzIHJlbGF0ZWQgdG8gc29tZSBicm9hZGVyIG5ldHdvcmtpbmcgYXJjaGl0ZWN0dXJlIG9yIGlzIGl0IHN0YW5kYWxvbmUuXG5cbkVzc2VudGlhbGx5LCB3aXRob3V0IGEgcHJvbXB0LCB0aGUgc2VsZWN0aW9uICptZWNoYW5pc20qIGlzIHRoZSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGhlcmUsIG5vdCB0aGUgb3V0cHV0IGl0c2VsZiwgYW5kIGl0IGxpa2VseSBob2xkcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGludGVuZGVkIGJlaGF2aW9yLiBNeSBtaW5kIGlzIGFscmVhZHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBzY2VuYXJpb3M6IElzIHRoaXMgcGFydCBvZiBhIHJ1bGUtYmFzZWQgc3lzdGVtPyBBIHN0YXRlIG1hY2hpbmU/IE9yIHNvbWV0aGluZyBtb3JlIGFkIGhvYz8gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyB0aGlzIHRoaW5nIGdldHMgaW5zdGFudGlhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE3MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjI5LjMyMjAwMjA5NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1Mzg2MjY2OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5GX05BVF9BTUFOREFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjMxLjA3NTg3NDE1M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQ4NzA3NjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRW5hYmxlbWVudCBvZiBORl9OQVRfQU1BTkRBKipcblxuT2theSwgc28gSSBzZWUgYE5GX05BVF9BTUFOREFgIGlzIGVuYWJsZWQgc29tZXdoZXJlLCBidXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKmhvdyouIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBOZXRmaWx0ZXIgb3B0aW9ucyBhcmUgZGVmaW5lZCwgc28gaXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMgb3IgcmVsYXRpb25zaGlwcyB0aGF0IG1pZ2h0IGJlIGVuYWJsaW5nIGBORl9OQVRfQU1BTkRBYC4gSSdsbCB6ZXJvIGluIG9uIHRoYXQgcGFydGljdWxhciBzeW1ib2wgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEl0J3MgbGlrZWx5IGdvaW5nIHRvIGJlIGNvbmRpdGlvbmFsIGJhc2VkIG9uIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBmZWF0dXJlcy4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIG9yIGFueSBvdGhlciBsb2dpYyB0aGF0IGRldGVybWluZXMgaXRzIGluY2x1c2lvbiBpbiB0aGUga2VybmVsIGJ1aWxkLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDc4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MzQuNDI0NTg0MDExWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDEwOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiA0MTE6XFx0XFx0aGVscFxcbiA0MTI6XFx0XFx0ICBUaGUgTkFUIG9wdGlvbiBhbGxvd3MgbWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcgYW5kIG90aGVyXFxuIDQxMzpcXHRcXHQgIGZvcm1zIG9mIGZ1bGwgTmV0d29yayBBZGRyZXNzIFBvcnQgVHJhbnNsYXRpb24uIFRoaXMgY2FuIGJlXFxuIDQxNDpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgaXB0YWJsZXMsIGlwNnRhYmxlcyBvciBuZnQuXFxuIDQxNTpcXHRcXG4gNDE2OlxcdGNvbmZpZyBORl9OQVRfQU1BTkRBXFxuIDQxNzpcXHRcXHR0cmlzdGF0ZVxcbiA0MTg6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQxOTpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfQU1BTkRBXFxuIDQyMDpcXHRcXG4gNDIxOlxcdGNvbmZpZyBORl9OQVRfRlRQXFxuIDQyMjpcXHRcXHR0cmlzdGF0ZVxcbiA0MjM6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQyNDpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfRlRQXFxuIDQyNTpcXHRcXG4gNDI2OlxcdGNvbmZpZyBORl9OQVRfSVJDXFxuIDQyNzpcXHRcXHR0cmlzdGF0ZVxcbiA0Mjg6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQyOTpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfSVJDXFxuIDQzMDpcXHRcXG4gNDMxOlxcdGNvbmZpZyBORl9OQVRfU0lQXFxuIDQzMjpcXHRcXHR0cmlzdGF0ZVxcbiA0MzM6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQzNDpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfU0lQXFxuIDQzNTpcXHRcXG4gNDM2OlxcdGNvbmZpZyBORl9OQVRfVEZUUFxcbiA0Mzc6XFx0XFx0dHJpc3RhdGVcXG4gNDM4OlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX05BVFxcbiA0Mzk6XFx0XFx0ZGVmYXVsdCBORl9OQVQgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX1RGVFBcXG4gNDQwOlxcdFxcbiA0NDE6XFx0Y29uZmlnIE5GX05BVF9SRURJUkVDVFxcbiA0NDI6XFx0XFx0Ym9vbFxcbiA0NDM6XFx0XFxuIDQ0NDpcXHRjb25maWcgTkZfTkFUX01BU1FVRVJBREVcXG4gNDQ1OlxcdFxcdGJvb2xcXG4gNDQ2OlxcdFxcbiA0NDc6XFx0Y29uZmlnIE5GX05BVF9PVlNcXG4gNDQ4OlxcdFxcdGJvb2xcXG4gNDQ5OlxcdFxcbiA0NTA6XFx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxcbiA0NTE6XFx0XFx0dHJpc3RhdGVcXG4gNDUyOlxcdFxcbiA0NTM6XFx0ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG4gNDU0OlxcdFxcbiA0NTU6XFx0Y29uZmlnIE5GX1RBQkxFU1xcbiA0NTY6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuIDQ1NzpcXHRcXHRzZWxlY3QgTkVUX0NSQzMyQ1xcbiA0NTg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDU5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MzQuNDI0NjkyNzkxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzc1MjQ2ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgbG9naWNhbGx5OlxuXG4qKkVuYWJsaW5nIE5BVCBTdXBwb3J0IGZvciBTcGVjaWZpYyBQcm90b2NvbHMqKlxuXG5SaWdodCwgc28sIGlmIEknbSB1bmRlcnN0YW5kaW5nIHRoaXMgY29ycmVjdGx5LCB0aGUgYmFzaWMgTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIChOQVQpIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGBORl9OQVRgIGJlaW5nIGFjdGl2ZS4gQW5kLCBvZiBjb3Vyc2UsIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gdHJhY2tpbmcgcGllY2VzIChgTkZfQ09OTlRSQUNLXypgKSBuZWVkIHRvIGJlIGVuYWJsZWQgYXMgd2VsbCwgc2luY2UgTkFUIHJlbGllcyBvbiB0aGF0LiBUaGF0J3MgdGhlIGZvdW5kYXRpb24uXG5cblRoZXJlZm9yZSwgZm9yIHNwZWNpZmljIHByb3RvY29sIHN1cHBvcnQsIEkgbmVlZCB0byBlbmFibGUgYSBmZXcga2V5IG1vZHVsZXMuIEkgc2hvdWxkIGVuYWJsZSBgTkZfTkFUYCwgb2YgY291cnNlLCBhbmQgdGhlbiBleHBsaWNpdGx5IGVuYWJsZSBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZXMgZm9yIHRoZSBwcm90b2NvbHMgSSdtIGludGVyZXN0ZWQgaW46IHNwZWNpZmljYWxseSwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYW5kIGBORl9DT05OVFJBQ0tfVEZUUGAuIFRoYXQgc2hvdWxkIGNvdmVyIHRoZSBjcnVjaWFsIG9uZXMgZm9yIHRoaXMgdXNlIGNhc2UuXG5cbk5vdywgSSBzaG91bGQgY2hlY2sgd2hldGhlciBgTkZfTkFUYCBpcyBhIGNvbmZpZ3VyYWJsZSBvcHRpb24gd2l0aCBhIHByb21wdC4gQWggeWVzLCBJIHJlbWVtYmVyIHRoYXQgYGNvbmZpZyBORl9OQVRgIGluZGVlZCBoYXMgYSBwcm9tcHQsIHVzdWFsbHkgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiBcIk5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiBzdXBwb3J0XCIgb3IgYSBzaW1pbGFyIHBocmFzaW5nLiBUaGlzIGNvbmZpcm1zIGl0J3MgYSBzZWxlY3RhYmxlIG9wdGlvbiwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBmbGV4aWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNjYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MzozOC43MDIyMTk0N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZWZhdWx0IG5cXG4gNDAxOlxcdFxcdGRlcGVuZHMgb24gKE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIHx8IE5FVEZJTFRFUl9ORVRMSU5LX0xPRykgXFx1MDAyNlxcdTAwMjYgTkZfQ1RfTkVUTElOS1xcbiA0MDI6XFx0XFx0aGVscFxcbiA0MDM6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBORlFVRVVFIGFuZCBORkxPRyBjYW4gaW5jbHVkZVxcbiA0MDQ6XFx0XFx0ICBDb25uZWN0aW9uIFRyYWNraW5nIGluZm9ybWF0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIHBhY2tldCBpc1xcbiA0MDU6XFx0XFx0ICB0aGUgZW5xdWV1ZWQgdmlhIE5GTkVUTElOSy5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIE5GX05BVFxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gNDEwOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiA0MTE6XFx0XFx0aGVscFxcbiA0MTI6XFx0XFx0ICBUaGUgTkFUIG9wdGlvbiBhbGxvd3MgbWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcgYW5kIG90aGVyXFxuIDQxMzpcXHRcXHQgIGZvcm1zIG9mIGZ1bGwgTmV0d29yayBBZGRyZXNzIFBvcnQgVHJhbnNsYXRpb24uIFRoaXMgY2FuIGJlXFxuIDQxNDpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgaXB0YWJsZXMsIGlwNnRhYmxlcyBvciBuZnQuXFxuIDQxNTpcXHRcXG4gNDE2OlxcdGNvbmZpZyBORl9OQVRfQU1BTkRBXFxuIDQxNzpcXHRcXHR0cmlzdGF0ZVxcbiA0MTg6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQxOTpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfQU1BTkRBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjM4LjcwMjMyNjQxOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ1NDY3MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiAoTkFUKSBhbmQgQ29ubmVjdGlvbiBUcmFja2luZyBNb2R1bGVzKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyBjb25maXJtZWQ6IGBORl9OQVRgIGRvZXMgaW5kZWVkIGhhdmUgYSBwcm9tcHQsIHdoaWNoIGlzIGdvb2QuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBhbmQgaW50ZXJwbGF5IHdpdGggdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlcy4gSSdtIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCBob3cgdGhlc2UgaW50ZXJhY3QgaW4gc2NlbmFyaW9zIHdpdGggbW9yZSBzcGVjaWZpYyBwcm90b2NvbHMuIFRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaW4gb24gYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYW5kIGBORl9DT05OVFJBQ0tfVEZUUGAuIEkgd2FudCB0byBzZWUgaWYgdGhlIE5BVCBwcm9tcHRzIGhhdmUgYmVlbiBpbnRlZ3JhdGVkIHRvIHdvcmsgd2l0aCB0aG9zZSBjb25uZWN0aW9uIHRyYWNrZXJzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZWVwZXIgTkFUIGJlaGF2aW9yIGluIHRoZXNlIG1vcmUgc3BlY2lhbGl6ZWQgcHJvdG9jb2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjA4MiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6NDIuODQ3Nzk1Mjk2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ3OTAwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMTEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMTMtXFx0dHJpc3RhdGUgXFxcIkFtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6NDQuNTk1NzE2NzE2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTc1NDE0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKlxuXG5Pa2F5LCBzbyB3ZSdyZSB3b3JraW5nIHdpdGggdGhlc2UgcHJvbXB0cywgd2hpY2ggSSB1bmRlcnN0YW5kLiBNeSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBlc3NlbnRpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHdlIG5lZWQgdG8gZW5hYmxlLiBCYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gYXQgaGFuZCwgSSBiZWxpZXZlIHdlIG5lZWQgdG8gZW5hYmxlIHRoZSBmb2xsb3dpbmc6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCwgYE5GX0NPTk5UUkFDS19TTk1QYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAuXG5cbkJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHNvbWV0aGluZyB0aGF0IHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgaGVyZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AgYW5kIGBORl9DT05OVFJBQ0tfU05NUGAgYXJlICp0aGUgb25seSogb3B0aW9ucyB0cmlnZ2VyaW5nIHRoZSBzZWxlY3Rpb24gb2YgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgLiBUaGF0IGJpdCBvZiBpbmZvcm1hdGlvbiBpcyBrZXkgdG8gZW5zdXJpbmcgdGhhdCB3ZSBoYXZlIGEgbGVhbiwgd2VsbC1zdHJ1Y3R1cmVkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDI3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjQ4Ljc1MzI2MDY1MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTAzNjk2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mjc3PWNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3OTpcXHRzZWxlY3QgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yODAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTI5Nj1jb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTgtXFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk5OlxcdHNlbGVjdCBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMwMC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjUwLjQ4NDMwNTEwM1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEyMjc4MDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBkaXJlY3Rpb24gc2VlbXMgc291bmQuIFdlJ3JlIGdvaW5nIHRvIGluY2x1ZGUgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCBhbmQgYE5GX0NPTk5UUkFDS19TTk1QYC4gTWFrZXMgcGVyZmVjdCBzZW5zZS5cblxuSG9sZCBvbiBhIHNlYy4uLiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AgaXMgYSBib29sZWFuLCByaWdodD8gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgd2UncmUgbm90IG1pc3NpbmcgYW55IG90aGVyIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIHNlZS4uLlxuXG5SaWdodCwgdGhlIHBhdGNoIGl0c2VsZiB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgbmZfY29ubnRyYWNrX2FtYW5kYS5jYCwgYG5mX2Nvbm50cmFja19mdHAuY2AsIGBuZl9jb25udHJhY2tfaXJjLmNgLCBgbmZfY29ubnRyYWNrX3RmdHAuY2AsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgLCBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGBuZl9jb25udHJhY2tfZWNhY2hlLmNgLCBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCwgYW5kIHRoZSBOQVQgY291bnRlcnBhcnRzIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2Z0cC5jYCwgYG5mX25hdF9pcmMuY2AsIGBuZl9uYXRfdGZ0cC5jYC4gQSBmYWlybHkgY29tcHJlaGVuc2l2ZSBzZXQgb2YgbW9kdWxlcy5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyB0aGlzIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6IGBhbWFuZGFfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAuIEdvdCBpdC5cblxuQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAgaXMgZXhwb3J0ZWQgYXMgYSBzeW1ib2wgb3IgaWYgaXQncyBzdGF0aWMuIFRoYXQnbGwgYmUgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBldmVudCByZXBvcnRpbmcgaXMgaW1wbGVtZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTkxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjU1Ljc5NjU4NTYzNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMDE0NjAxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xMzk9bmZfY29ubnRyYWNrX2V2ZW50KGVudW0gaXBfY29ubnRyYWNrX2V2ZW50cyBldmVudCwgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNDgtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxNDk6dm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oPTE2MD1zdGF0aWMgaW5saW5lIGJvb2wgbmZfY29ubnRyYWNrX2VjYWNoZV9kd29ya19wZW5kaW5nKGNvbnN0IHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTY1LVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTY2OnN0YXRpYyBpbmxpbmUgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZSxcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE2Ny1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0yMzk9RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZGVsaXZlcl9jYWNoZWRfZXZlbnRzKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0yNDAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MjQxOnZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGV2ZW50LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTI0Mi1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6NTcuNTI2NzQxNzU2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjQ1ODA2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIE5vbi1TdGF0aWMgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29kZSBpbiBxdWVzdGlvbiBpcyBkZWZpbml0ZWx5ICpleHBvcnRlZCogb3IgYXQgbGVhc3QgaXNuJ3QgZGVjbGFyZWQgc3RhdGljLiBUaGF0J3MgdGhlIGZpcnN0IGltcG9ydGFudCBvYnNlcnZhdGlvbi4gVGhlIHF1ZXN0aW9uIGJlY29tZXMsIGhvdyBpcyBpdCBiZWluZyBpbml0aWFsaXplZD8gV2UgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGluc3RhbnRpYXRpb24gcHJvY2VzcyBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cbkdpdmVuIHRoYXQgY29udGV4dCwgbGV0J3MgemVybyBpbiBvbiBgbmZfY3RfZXhwZWN0X2luaXRgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQsIGNvbnNpZGVyaW5nIHRoZSBuYW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgKnRoYXQqIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCwgd2hhdCBpdCdzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwLCBhbmQgdGhlIHNjb3BlIG9mIGl0cyBpbXBhY3QuIFRoaXMgaXMgd2hlcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBzdXJyb3VuZGluZyBkYXRhIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTUzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDQ6MDAuNzUxMzI0MjAxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIyNjYyNDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgbmZfY3RfZXhwZWN0X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaD0xNTM9c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKm5mX2N0X2V4cGVjdF9hbGxvYyhzdHJ1Y3QgbmZfY29ubiAqbWUpO1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTU0OnZvaWQgbmZfY3RfZXhwZWN0X2luaXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKiwgdW5zaWduZWQgaW50LCB1X2ludDhfdCxcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oLTE1NS1cXHRcXHQgICAgICAgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICosXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYz0zMTg9RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X2FsbG9jKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jLTMyMy0gKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzozMjQ6dm9pZCBuZl9jdF9leHBlY3RfaW5pdChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLCB1bnNpZ25lZCBpbnQgY2xhc3MsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtMzI1LVxcdFxcdCAgICAgICB1X2ludDhfdCBmYW1pbHksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQ0OjAyLjQ3Mzk5MTgyMloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU0NDA3MTQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIER5bmFtaWMgTmF0dXJlKipcblxuUmlnaHQsIHNvIHRoZSBjb250ZXh0IGlzIGNydWNpYWwgaGVyZS4gVGhlIHNpdHVhdGlvbiBhdCBoYW5kIGNsZWFybHkgaXNuJ3Qgc3RhdGljLiBJdCdzIGR5bmFtaWMsIGNoYW5naW5nLCBldm9sdmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsdWlkaXR5IG9mIGl0IGFsbCwgc28gSSBjYW4gc3RhcnQgdG8gYnVpbGQgYSBnb29kIG1vZGVsLCBhbmQgc29sdmUgdGhlIHByb2JsZW0uXG5cbkxldCdzIG5vdCBvdmVyLWVuZ2luZWVyIHRoaXMuIEluc3RlYWQgb2YgYSBkZWVwIGRpdmUsIGxldCdzIGp1c3QgbWFrZSBhIHNpbXBsZSBjaGVjayB3aXRoIGEgdGFyZ2V0ZWQgYXBwcm9hY2ggdG8gZ2V0IHRoZSBoaWdoLWxldmVsIHBpY3R1cmUsIHJpZ2h0PyBMZXQgbWUgc2VlLi4uIEkgc2hvdWxkIGNoZWNrIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCB0byBnZXQgYSBnb29kIGJlYXJpbmcuIEZyb20gdGhhdCwgSSBzaG91bGQgYmUgYWJsZSB0byBkZWR1Y2UgdGhlIGNvcnJlY3QgY291cnNlIG9mIGFjdGlvbiwgYW5kIGtub3cgd2hhdCBmdXJ0aGVyIGluZm9ybWF0aW9uIGlzIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2MzYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NDozNy4wMTgwNjUyNVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3MjY3OTkwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfYWxsb2NfZXhwZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNjMwPXN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI2MzE6Y3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICpjb25zdCBjZGFbXSwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNjMyLVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqYXNzaWduX2hlbHBlcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yODU2PWN0bmV0bGlua19nbHVlX2F0dGFjaF9leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI4ODctXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI4ODg6XFx0ZXhwID0gY3RuZXRsaW5rX2FsbG9jX2V4cGVjdCgoY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0ICopY2RhLCBjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg4OS1cXHRcXHRcXHRcXHQgICAgIGFzc2lnbl9oZWxwZXIsIFxcdTAwMjZ0dXBsZSwgXFx1MDAyNm1hc2spO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM1MTk9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzUyMDpjdG5ldGxpbmtfYWxsb2NfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNTIxLVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqYXNzaWduX2hlbHBlcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNTk2PWN0bmV0bGlua19jcmVhdGVfZXhwZWN0KHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNjI3LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYyODpcXHRleHAgPSBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0KGNkYSwgY3QsIE5VTEwsIFxcdTAwMjZ0dXBsZSwgXFx1MDAyNm1hc2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNjI5LVxcdGlmIChJU19FUlIoZXhwKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NDozOC45OTA3NTA2MzVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3NTMyODQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFN5emthbGxlciBUYXJnZXQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBzcGVjaWZpYyBwaWVjZSBvZiBjb2RlLCB3aGF0ZXZlciBpdCBpcywgcHJlc2VudHMgYSBzdGF0aWMgc3RhdGUsIHdoaWNoIGlzIGludHJpZ3VpbmcuIFN0YXRpYyB1c3VhbGx5IG1lYW5zIGVhc2llciB0byBhbmFseXplLCBpbiBhIHdheSwgYnV0IGFsc28gcG90ZW50aWFsbHkgYSBsZXNzIGR5bmFtaWMgYXR0YWNrIHN1cmZhY2UuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyICpjYW4qIHRhcmdldCBpdCBpcyB0aGUgcmVhbCBraWNrZXIuIFRoYXQgbWVhbnMgdGhlcmUncyBzb21lIGludGVyYWN0aW9uIHBvc3NpYmxlLCB3aGljaCBpbW1lZGlhdGVseSBlbGV2YXRlcyBpdHMgcmVsZXZhbmNlLiBHaXZlbiBzeXprYWxsZXLigJlzIGZvY3VzIG9uIGRldGVjdGluZyBhbmQgZXhwbG9pdGluZyBidWdzLCB0aGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAuIFRoYXQgZnVuY3Rpb24ncyBuYW1lIGhpbnRzIGF0IGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3Qg4oCTIG5ldHdvcmsgY29ubmVjdGlvbiB0cmFja2luZywgYnJvYWRjYXN0IGhhbmRsaW5nLCBhbmQgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxsIHBvdGVudGlhbCBhcmVhcyByaXBlIGZvciB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgcmFjZSBjb25kaXRpb25zIG9yIGJ1ZmZlciBvdmVyZmxvd3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHVzZXItY29udHJvbGxlZCBkYXRhIG9yIG1hbGZvcm1lZCBwYWNrZXRzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzODEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NDo0Mi4xNjYwODIwNDNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDE0ODQ0NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmg9MTYyPXZvaWQgbmZfY29ubnRyYWNrX2hlbHBlcl9maW5pKHZvaWQpO1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmgtMTYzLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmg6MTY0OmludCBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmgtMTY1LVxcdFxcdFxcdFxcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMtMTgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM6MTk6aW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTIwLVxcdFxcdFxcdFxcdHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTk0LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYzo5NTpFWFBPUlRfU1lNQk9MX0dQTChuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTk2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0Ymlvc19ucy5jPTM5PXN0YXRpYyBpbnQgbmV0Ymlvc19uc19oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0Ymlvc19ucy5jLTQyLXtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRiaW9zX25zLmM6NDM6XFx0cmV0dXJuIG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChza2IsIGN0LCBjdGluZm8sIHRpbWVvdXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGJpb3NfbnMuYy00NC19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zbm1wLmM9Mjk9c3RhdGljIGludCBzbm1wX2Nvbm50cmFja19oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc25tcC5jLTM0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NubXAuYzozNTpcXHRuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc2tiLCBjdCwgY3RpbmZvLCB0aW1lb3V0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zbm1wLmMtMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQ0OjQzLjg2NzU3MTM5NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQxODQ0MzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipPcGVyYXRpb25hbCBDaGVjayBhbmQgVmFyaWFibGUgVmFsaWRhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgZGF0YSdzIGJlZW4gZXhwb3J0ZWQsIHRoYXQncyB0aGUgZmlyc3QgY3JpdGljYWwgcG9pbnQgdG8gY29uZmlybS4gTm93LCBiZWZvcmUgSSBqdW1wIGludG8gYW55IGFuYWx5c2lzIG9yIHByb2Nlc3NpbmcsIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGludGVncml0eSBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgYW1hbmRhX2hlbHBgIGZ1bmN0aW9uIG9yIGRvY3VtZW50YXRpb24uIEknbSBhc3N1bWluZyB0aGF0IHZhcmlhYmxlLCBgYW1hbmRhX2hlbHBgLCBpcyBhIGRhdGEgZGljdGlvbmFyeSwgYSBsb2csIGRvY3VtZW50YXRpb24sIG9yIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGNoZWNrIGBhbWFuZGFfaGVscGAgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBmbGFncywgdGhhdCB0aGUgZXhwb3J0IHdhcyBzdWNjZXNzZnVsLiBUaGF0IHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gdGhlIGRhdGEgZm9ybWF0LCByZWxldmFudCBwYXJhbWV0ZXJzLCBwb3RlbnRpYWwgY2F2ZWF0cywgYW5kIGFueSBrbm93biBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgZXhwb3J0IHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjI5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDQ6NDYuOTA5NDE3NTMyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1OTQwMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFtYW5kYV9oZWxwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTUyPXN0YXRpYyBzdHJ1Y3Qge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtODItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6ODM6c3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTg0LVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTEwNy1cXHRpZiAoZGF0YW9mZiBcXHUwMDNlPSBza2ItXFx1MDAzZWxlbikge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjEwODpcXHRcXHRuZXRfZXJyX3JhdGVsaW1pdGVkKFxcXCJhbWFuZGFfaGVscDogc2tibGVuID0gJXVcXFxcblxcXCIsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xMDktXFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTE2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5IGFtYW5kYV9leHBfcG9saWN5ID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTcxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE3MjpzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgYW1hbmRhX2hlbHBlclsyXSBfX3JlYWRfbW9zdGx5O1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE3MzpzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmFtYW5kYV9oZWxwZXJfcHRyWzJdIF9fcmVhZF9tb3N0bHk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTc0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTE3NT1zdGF0aWMgdm9pZCBfX2V4aXQgbmZfY29ubnRyYWNrX2FtYW5kYV9maW5pKHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xNzgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTc5OlxcdG5mX2Nvbm50cmFja19oZWxwZXJzX3VucmVnaXN0ZXIoYW1hbmRhX2hlbHBlcl9wdHIsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTgwOlxcdFxcdFxcdFxcdFxcdEFSUkFZX1NJWkUoYW1hbmRhX2hlbHBlcl9wdHIpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xODEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoc2VhcmNoKTsgaSsrKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM9MTg1PXN0YXRpYyBpbnQgX19pbml0IG5mX2Nvbm50cmFja19hbWFuZGFfaW5pdCh2b2lkKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjAwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwMTpcXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2YW1hbmRhX2hlbHBlclswXSwgQUZfSU5FVCwgSVBQUk9UT19VRFAsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjAyLVxcdFxcdFxcdCAgSEVMUEVSX05BTUUsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjAzOlxcdFxcdFxcdCAgXFx1MDAyNmFtYW5kYV9leHBfcG9saWN5LCAwLCBhbWFuZGFfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwNDpcXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2YW1hbmRhX2hlbHBlclsxXSwgQUZfSU5FVDYsIElQUFJPVE9fVURQLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTIwNS1cXHRcXHRcXHQgIEhFTFBFUl9OQU1FLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwNjpcXHRcXHRcXHQgIFxcdTAwMjZhbWFuZGFfZXhwX3BvbGljeSwgMCwgYW1hbmRhX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0yMDctXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjA4OlxcdHJldCA9IG5mX2Nvbm50cmFja19oZWxwZXJzX3JlZ2lzdGVyKGFtYW5kYV9oZWxwZXIsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjA5OlxcdFxcdFxcdFxcdFxcdCAgICBBUlJBWV9TSVpFKGFtYW5kYV9oZWxwZXIpLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIxMDpcXHRcXHRcXHRcXHRcXHQgICAgYW1hbmRhX2hlbHBlcl9wdHIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTIxMS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDQ6NDguNzE1MzY1Njc3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MzA0MDYzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBDdXJyZW50IFN0YXRlKipcblxuUmlnaHQsIHRoaXMgZmVlbHMuLi5zdGF0aWMuIE5vdCBtdWNoIGlzIGhhcHBlbmluZywgbm8gaW1tZWRpYXRlIG1vdmVtZW50LiBUaW1lIHRvIHRha2UgYSBjbG9zZXIgbG9vaywgc2VlIGlmIEkgY2FuIGdldCB0aGluZ3MgdW5zdHVjay4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBwZXJjZWl2ZWQgbGFjayBvZiBwcm9ncmVzcywgaXMgdG8gY2hlY2sgdGhlIGB0ZnRwX2hlbHBgIHV0aWxpdHkuIEl0J3MgYSBmdW5kYW1lbnRhbCB0b29sLCBvZnRlbiBvdmVybG9va2VkIGJ1dCBzdXJwcmlzaW5nbHkgdXNlZnVsIGZvciB0cm91Ymxlc2hvb3RpbmcsIGVzcGVjaWFsbHkgd2hlbiB0aGluZ3Mgc2VlbSBzdGFsbGVkLiBMZXQncyBzZWUgd2hhdCB0aGF0IHJldmVhbHMuIFBlcmhhcHMgdGhlcmUncyBhIHNpbXBsZSBjb25maWd1cmF0aW9uIGlzc3VlIEknbSBtaXNzaW5nLCBvciBhIGJhc2ljIGNvbW1hbmQgc3ludGF4IGVycm9yIHRoYXQncyBrZWVwaW5nIGV2ZXJ5dGhpbmcgZnJvemVuLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDU3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDQ6NTEuNTQ1Nzc0NjQ4WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIxODA0ODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRmdHBfaGVscFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmM9MzA9RVhQT1JUX1NZTUJPTF9HUEwobmZfbmF0X3RmdHBfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jLTMxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYzozMjpzdGF0aWMgaW50IHRmdHBfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYy0zMy1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jPTEwNT1zdGF0aWMgaW50IF9faW5pdCBuZl9jb25udHJhY2tfdGZ0cF9pbml0KHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMtMTEyLVxcdFxcdFxcdCAgSEVMUEVSX05BTUUsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjExMzpcXHRcXHRcXHQgIFxcdTAwMjZ0ZnRwX2V4cF9wb2xpY3ksIDAsIHRmdHBfaGVscCwgTlVMTCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMtMTE0LVxcdFxcdFxcdCAgVEhJU19NT0RVTEUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NDo1My4yNjc1ODQzNDhaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg4ODcxNzc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9scyBmb3IgTmV0ZmlsdGVyL0Nvbm50cmFjayBDaGFuZ2VzKipcblxuT2theSwgdGhpcyBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29tYmluYXRpb24gb2Ygc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBzb21lIE5ldGZpbHRlci9Db25udHJhY2sgY2hhbmdlcy4gVGhlIHdob2xlIHNldHVwIHNlZW1zIHN0YXRpYywgd2hpY2ggaXMgZ29vZCDigJMgbGVzcyBkeW5hbWljIGJlaGF2aW9yIHRvIHdvcnJ5IGFib3V0LlxuXG5GaXJzdCwgSSdtIGlkZW50aWZ5aW5nIHRoZSBrZXkgZnVuY3Rpb24gc3ltYm9scyBpbnZvbHZlZC4gSSBzZWUgYSBmZXcgdGhhdCBhcmUgY2xlYXJseSByZWxldmFudDogYGFtYW5kYV9oZWxwYCwgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYGN0bmV0bGlua19hbGxvY19leHBlY3RgLCBgdGZ0cF9oZWxwYCwgYW5kIGBuZl9uYXRfZnRwYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIG1ha2Ugc3VyZSBhcmUgY29ycmVjdGx5IGNvbmZpZ3VyZWQuXG5cbk5leHQsIEknbSBjaGVja2luZyB0aGUgY29uZmlndXJhdGlvbnMuIEkndmUgZ290IGEgbGlzdCBvZiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AsIGBORl9DT05OVFJBQ0tfU05NUGAsIGBORl9DVF9ORVRMSU5LYCwgYW5kIGBORl9OQVRgLlxuXG5Ob3csIEknbSByZW1lbWJlcmluZyB0aGF0IHNvbWUgb2YgdGhlc2UgYE5GX05BVF8qYCBjb25maWd1cmF0aW9ucyAoYE5GX05BVF9BTUFOREFgLCBgTkZfTkFUX0ZUUGAsIGBORl9OQVRfSVJDYCwgYE5GX05BVF9URlRQYCkgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCAqaWYqIHRoZWlyIGNvcnJlc3BvbmRpbmcgYE5GX0NPTk5UUkFDS18qYCBhbmQgYE5GX05BVGAgYXJlIGVuYWJsZWQuIFNpbmNlIHRoZXNlIGFyZSBwcm9tcHRsZXNzIGNvbmZpZ3MsIGl0IG1lYW5zIHRoZSBzeXprYWxsZXIgY29uZmlnIGdlbmVyYXRvciBtaWdodCBub3QgYmUgYWJsZSB0byBlbmFibGUgdGhlbSBkaXJlY3RseS4gQnV0LCBpdCB3aWxsIGVuYWJsZSB0aGUgcGFyZW50IGRlcGVuZGVuY2llcy4gVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIEkgaW5jbHVkZSBhbGwgdGhlIGltcG9ydGFudCBvbmVzIHdpdGggcHJvbXB0cywgc28gSSdsbCBjcmVhdGUgYSBsaXN0IG9mIGNvbmZpZ3M6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCwgYE5GX0NPTk5UUkFDS19TTk1QYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGBORl9DT05OVFJBQ0tfRVZFTlRTYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkIGZvciB0aG9zZSBzcGVjaWZpYyBlY2FjaGUgY2hhbmdlcy4gWWVzLCBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIHRoZSBvbmUuXG5cbkRpZ2dpbmcgZnVydGhlciwgSSBrbm93IGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfTkFUYCBhcmUgb2J2aW91c2x5IG5lZWRlZCBhcyBkZXBlbmRlbmNpZXMsIGJ1dCB0aGV5IGFyZSBpbXBsaWVkIGJ5IHRoZSBvdGhlciBjb25maWdzLlxuXG5MZXQncyBkbyBhIGRvdWJsZSBjaGVjayBhbmQgbWFrZSBzdXJlIEkndmUgaWRlbnRpZmllZCBhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gT0ssIGl0IGxvb2tzIGxpa2UgYG5mX25hdF9hbWFuZGFgLCBgbmZfbmF0X2lyY2AsIGFuZCBgbmZfbmF0X3RmdHBgIGFsbCBoYXZlIGEgYGhlbHBgIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgYG5mX25hdF9mdHBgIGRvZXNuJ3QgZm9sbG93IHRoYXQgcGF0dGVybiwgc28gSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgb2YgaXQuXG5cbkdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMgd2l0aCBgaGVscGAsIEknbSBnb2luZyB0byBsaXN0IHRoZSB1bmlxdWUgZnVuY3Rpb24gbmFtZXMuIFRoaXMgbWVhbnMgYGFtYW5kYV9oZWxwYCwgYHRmdHBfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGFuZCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgYXJlIHRoZSBvbmVzIHRvIHBheSBhdHRlbnRpb24gdG8uXG5cbkFscmlnaHQsIHRoYXQgY292ZXJzIHRoZSBlc3NlbnRpYWxzLiBJIGhhdmUgYSBzb2xpZCBsaXN0IG9mIGNvbmZpZ3MgYW5kIGZ1bmN0aW9uIHN5bWJvbHMgdG8gdXNlIGZvciB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzkwMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NTowMi4xNTYzMDQ1NzRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzA5MzU2MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbmF0X2FtYW5kYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmg9MTA9dHlwZWRlZiB1bnNpZ25lZCBpbnRcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmg6MTE6bmZfbmF0X2FtYW5kYV9ob29rX2ZuKHN0cnVjdCBza19idWZmICpza2IsXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5oLTEyLVxcdFxcdCAgICAgIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaC0xOC1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmg6MTk6ZXh0ZXJuIG5mX25hdF9hbWFuZGFfaG9va19mbiBfX3JjdSAqbmZfbmF0X2FtYW5kYV9ob29rO1xcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaC0yMC0jZW5kaWYgLyogX05GX0NPTk5UUkFDS19BTUFOREFfSCAqL1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT02OT1lbmRpZlxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS03MS0jIE5BVCBoZWxwZXJzXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfTkZfTkFUX0FNQU5EQSkgKz0gbmZfbmF0X2FtYW5kYS5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS03My1vYmotJChDT05GSUdfTkZfTkFUX0ZUUCkgKz0gbmZfbmF0X2Z0cC5vXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYz0zOD1NT0RVTEVfUEFSTV9ERVNDKHRzX2FsZ28sIFxcXCJ0ZXh0c2VhcmNoIGFsZ29yaXRobSB0byB1c2UgKGRlZmF1bHQga21wKVxcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTM5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjQwOm5mX25hdF9hbWFuZGFfaG9va19mbiBfX3JjdSAqbmZfbmF0X2FtYW5kYV9ob29rIF9fcmVhZF9tb3N0bHk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6NDE6RVhQT1JUX1NZTUJPTF9HUEwobmZfbmF0X2FtYW5kYV9ob29rKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy00Mi1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTgzPXN0YXRpYyBpbnQgYW1hbmRhX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTk0LVxcdGludCByZXQgPSBORl9BQ0NFUFQ7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6OTU6XFx0bmZfbmF0X2FtYW5kYV9ob29rX2ZuICpuZl9uYXRfYW1hbmRhO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTk2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTUxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE1MjpcXHRcXHRuZl9uYXRfYW1hbmRhID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9hbWFuZGFfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTUzOlxcdFxcdGlmIChuZl9uYXRfYW1hbmRhIFxcdTAwMjZcXHUwMDI2IGN0LVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBJUFNfTkFUX01BU0spXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTU0OlxcdFxcdFxcdHJldCA9IG5mX25hdF9hbWFuZGEoc2tiLCBjdCwgY3RpbmZvLCBwcm90b2ZmLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE1NS1cXHRcXHRcXHRcXHRcXHQgICAgb2ZmIC0gZGF0YW9mZiwgbGVuLCBleHApO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmM9Mjg9c3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy02NC1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo2NTpzdGF0aWMgdm9pZCBfX2V4aXQgbmZfbmF0X2FtYW5kYV9maW5pKHZvaWQpXFxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNjYte1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTY3LVxcdG5mX25hdF9oZWxwZXJfdW5yZWdpc3RlcihcXHUwMDI2bmF0X2hlbHBlcl9hbWFuZGEpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjY4OlxcdFJDVV9JTklUX1BPSU5URVIobmZfbmF0X2FtYW5kYV9ob29rLCBOVUxMKTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy02OS1cXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTcxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjcyOnN0YXRpYyBpbnQgX19pbml0IG5mX25hdF9hbWFuZGFfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTczLXtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo3NDpcXHRCVUdfT04obmZfbmF0X2FtYW5kYV9ob29rICE9IE5VTEwpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTc1LVxcdG5mX25hdF9oZWxwZXJfcmVnaXN0ZXIoXFx1MDAyNm5hdF9oZWxwZXJfYW1hbmRhKTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo3NjpcXHRSQ1VfSU5JVF9QT0lOVEVSKG5mX25hdF9hbWFuZGFfaG9vaywgaGVscCk7XFxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNzctXFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy03OS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo4MDptb2R1bGVfaW5pdChuZl9uYXRfYW1hbmRhX2luaXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjgxOm1vZHVsZV9leGl0KG5mX25hdF9hbWFuZGFfZmluaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQ1OjAzLjg4NzI0NDYwNVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjUwMjY2MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJldmlld2luZyB0aGUgQ29ubnRyYWNrIEhlbHBlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMg4oCTIGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgYW5kIG5ldGxpbmsgc3BlY2lmaWNhbGx5LiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGhvdyB0aGUgZXhwZWN0YXRpb24vZXZlbnQgY2FjaGUgbG9naWMgaXMgaGFuZGxlZC4gVGhlIHBhdGNoIGlzIG5vdyBjYWNoaW5nIHRoZSBgZXZlbnRfbWFza2Agd2l0aGluIHRoZSBleHBlY3RhdGlvbiBvYmplY3QgYXQgY3JlYXRpb24gdGltZSwgcmF0aGVyIHRoYW4gcHVsbGluZyBpdCBkaXJlY3RseSBmcm9tIHRoZSBtYXN0ZXIgY29ubmVjdGlvbidzIGVjYWNoZSB3aGVuIGFuIGV2ZW50IGlzIHJlcG9ydGVkLiBPbiB0b3Agb2YgdGhpcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgaXMgYmVpbmcgcGFzc2VkIGRpcmVjdGx5IHRvIE5BVCBob29rIGZ1bmN0aW9ucy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIGFmZmVjdHMgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy4gV2UgbmVlZCB0byBiZSBlc3BlY2lhbGx5IGNhcmVmdWwgYWJvdXQgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBpZiB0aGlzIGNhY2hlZCBtYXNrIGlzIHVzZWQgaW5jb3JyZWN0bHksIG9yIGlmIHRoZSBjb25uZWN0aW9uIG9iamVjdCBpcyBtaXNoYW5kbGVkIHdpdGhpbiB0aGVzZSBOQVQgZnVuY3Rpb25zLiBXZSBzaG91bGQgZGVmaW5pdGVseSByZWNvbW1lbmQgZnV6emluZyBhcyB0aGUgYmVzdCB3YXkgdG8gZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5JJ3ZlIGFscmVhZHkgcmV2aWV3ZWQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBkb3VibGUgY2hlY2tpbmcgdGhhdCB0aGV5IGFyZSB3aGF0IEkgZXhwZWN0OiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AsIGBORl9DT05OVFJBQ0tfU05NUGAsIGBORl9DVF9ORVRMSU5LYCwgYW5kIGBORl9OQVRgLiBJJ3ZlIGNoZWNrZWQgYW5kIGRvdWJsZS1jaGVja2VkIHRoZSBkZXBlbmRlbmNpZXMuIEV2ZXJ5dGhpbmcgYXBwZWFycyB0byBiZSBjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgdXRpbGl6ZWQuXG5cbkluIHRoZSBmaWxlIGBuZl9uYXRfYW1hbmRhLmNgLCB0aGUgZnVuY3Rpb24gYGFtYW5kYV9oZWxwYCBpcyBjb3JyZWN0LCBhbmQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcmV2aWV3LCBub3c6IGBhbWFuZGFfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAuIEl0J3MgYWxsIGxvb2tpbmcgZ29vZC4gSSBhbSBoYXBweSB3aXRoIHRoZSByZXN1bHRzIG9mIG15IHJldmlldyBhbmQgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjIwLCJPdXRwdXRUb2tlbnMiOjI2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NToxMi41Mzc1MTI0MzZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODAwNDY2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0VWRU5UU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0FNQU5EQVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0ZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0lSQ1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1RGVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19ORVRCSU9TX05TXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU05NUFwiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfTkFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYW1hbmRhX2hlbHBcIixcbiAgICBcIm5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscFwiLFxuICAgIFwibmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydFwiLFxuICAgIFwibmZfY3RfZXhwZWN0X2luaXRcIixcbiAgICBcImN0bmV0bGlua19hbGxvY19leHBlY3RcIixcbiAgICBcInRmdHBfaGVscFwiLFxuICAgIFwibmZfbmF0X2Z0cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyAoYW1hbmRhLCBmdHAsIGlyYywgdGZ0cCwgYnJvYWRjYXN0LCBuZXRsaW5rKSBhbmQgdGhlIGV4cGVjdGF0aW9uL2V2ZW50IGNhY2hlIGxvZ2ljLiBJdCBjYWNoZXMgYGV2ZW50X21hc2tgIGluIHRoZSBleHBlY3RhdGlvbiBvYmplY3QgYXQgY3JlYXRpb24gdGltZSBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQgdXAgZnJvbSB0aGUgbWFzdGVyIGNvbm5lY3Rpb24ncyBlY2FjaGUgYXQgZXZlbnQgcmVwb3J0IHRpbWUuIEl0IGFsc28gcGFzc2VzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBkaXJlY3RseSB0byBOQVQgaG9vayBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBhZmZlY3QgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgTkFUIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19BTUFOREFcIixcbiAgICBcIk5GX0NPTk5UUkFDS19GVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19JUkNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19URlRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfTkVUQklPU19OU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NOTVBcIixcbiAgICBcIk5GX0NUX05FVExJTktcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFtYW5kYV9oZWxwXCIsXG4gICAgXCJuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9pbml0XCIsXG4gICAgXCJjdG5ldGxpbmtfYWxsb2NfZXhwZWN0XCIsXG4gICAgXCJ0ZnRwX2hlbHBcIixcbiAgICBcIm5mX25hdF9mdHBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgKGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgbmV0bGluaykgYW5kIHRoZSBleHBlY3RhdGlvbi9ldmVudCBjYWNoZSBsb2dpYy4gSXQgY2FjaGVzIGBldmVudF9tYXNrYCBpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBjb25uZWN0aW9uJ3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 21:24:12 +0000 UTC FinishedAt: 2026-07-13 21:45:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_EVENTS", "NF_CONNTRACK_AMANDA", "NF_CONNTRACK_FTP", "NF_CONNTRACK_IRC", "NF_CONNTRACK_TFTP", "NF_CONNTRACK_NETBIOS_NS", "NF_CONNTRACK_SNMP", "NF_CT_NETLINK", "NF_NAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_EVENTS", "NF_CONNTRACK_AMANDA", "NF_CONNTRACK_FTP", "NF_CONNTRACK_IRC", "NF_CONNTRACK_TFTP", "NF_CONNTRACK_NETBIOS_NS", "NF_CONNTRACK_SNMP", "NF_CT_NETLINK", "NF_NAT" ], "series_id": "aeb64e34-1a72-4d14-8009-2e407f82c084" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "amanda_help", "nf_conntrack_broadcast_help", "nf_ct_expect_event_report", "nf_ct_expect_init", "ctnetlink_alloc_expect", "tftp_help", "nf_nat_ftp" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19FVkVOVFMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0FNQU5EQSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfRlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19JUkMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1RGVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX05FVEJJT1NfTlMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NOTVAmIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbWFuZGFfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAmIzM0OywKICAgICYjMzQ7bmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydCYjMzQ7LAogICAgJiMzNDtuZl9jdF9leHBlY3RfaW5pdCYjMzQ7LAogICAgJiMzNDtjdG5ldGxpbmtfYWxsb2NfZXhwZWN0JiMzNDssCiAgICAmIzM0O3RmdHBfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfZnRwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyAoYW1hbmRhLCBmdHAsIGlyYywgdGZ0cCwgYnJvYWRjYXN0LCBuZXRsaW5rKSBhbmQgdGhlIGV4cGVjdGF0aW9uL2V2ZW50IGNhY2hlIGxvZ2ljLiBJdCBjYWNoZXMgYGV2ZW50X21hc2tgIGluIHRoZSBleHBlY3RhdGlvbiBvYmplY3QgYXQgY3JlYXRpb24gdGltZSBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQgdXAgZnJvbSB0aGUgbWFzdGVyIGNvbm5lY3Rpb24mIzM5O3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNlMWYwNWZhMDQ5OTliMDMwNDYxZGJhNWY1ZjY1MGQ4ZWU1ZGMwYTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAyMTo0MTo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmhcbmluZGV4IDE3MTk5ODdlOGZkODM4Li5kZWI1NjBiYjc5YzQzMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5oXG5AQCAtOSw2ICYjNDM7OSw3IEBAXG4gXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfYW1hbmRhX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgICAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oXG5pbmRleCA3YjYyNDQ2Y2NlYzRmNC4uNzEyNzAyMTgzYjk0NzMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuaFxuQEAgLTI4LDYgJiM0MzsyOCw3IEBAIHN0cnVjdCBuZl9jdF9mdHBfbWFzdGVyIHtcbiAgKiBjb25uZWN0aW9uIHdlIHNob3VsZCBleHBlY3QuICovXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfZnRwX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdCAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgIGVudW0gbmZfY3RfZnRwX3R5cGUgdHlwZSxcbiBcdFx0ICAgdW5zaWduZWQgaW50IHByb3RvZmYsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oXG5pbmRleCBjZTA3MjUwYWZiNGU5ZS4uYzczYjNiNDRhMGI3ZWYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaFxuQEAgLTEwLDYgJiM0MzsxMCw3IEBAXG4gXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfaXJjX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdCAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbmluZGV4IGUzZDE3MzljNTU3ZDE1Li44MDJjYjdmYzE5Y2RlYyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbkBAIC0xOSw2ICYjNDM7MTksNyBAQCBzdHJ1Y3QgdGZ0cGhkciB7XG4gXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfdGZ0cF9ob29rX2ZuKHN0cnVjdCBza19idWZmICpza2IsXG4mIzQzO1x0XHQgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHQgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgICBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxuaW5kZXggYzAyNDM0NWM5YmQ4NjIuLjVkMGY1YjJmMTJhNzI0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxuQEAgLTQyLDYgJiM0Mzs0Miw5IEBAIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0IHtcbiBcdC8qIEV4cGVjdGF0aW9uIGNsYXNzICovXG4gXHR1bnNpZ25lZCBpbnQgY2xhc3M7XG4gXG4mIzQzO1x0LyogRXZlbnQgZmlsdGVyIG1hc2sgKi9cbiYjNDM7XHR1MTYgZXZlbnRfbWFzaztcbiYjNDM7XG4gXHQvKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIHNldHVwIGFuZCBpbnNlcnRpb24gKi9cbiBcdHZvaWQgKCpleHBlY3Rmbikoc3RydWN0IG5mX2Nvbm4gKm5ldyxcbiBcdFx0XHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmNcbmluZGV4IDA2ZDZlYzEyYzg2ZGZhLi4xNGFlNjYwNDkxZjM2MCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuY1xuQEAgLTE1MSw3ICYjNDM7MTUxLDcgQEAgc3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0XHRuZl9uYXRfYW1hbmRhID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9hbWFuZGFfaG9vayk7XG4gXHRcdGlmIChuZl9uYXRfYW1hbmRhIFx1MDAyNlx1MDAyNiBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSylcbi1cdFx0XHRyZXQgPSBuZl9uYXRfYW1hbmRhKHNrYiwgY3RpbmZvLCBwcm90b2ZmLFxuJiM0MztcdFx0XHRyZXQgPSBuZl9uYXRfYW1hbmRhKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZixcbiBcdFx0XHRcdFx0ICAgIG9mZiAtIGRhdGFvZmYsIGxlbiwgZXhwKTtcbiBcdFx0ZWxzZSBpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XG4gXHRcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jXG5pbmRleCA2ZmY5NTRmMWJmYjg3Yy4uMDkyMmUzMGI2YWIwNzAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNcbkBAIC0xNCw2ICYjNDM7MTQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oXHUwMDNlXG4gXG4gaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0c3RydWN0IG5mX2Nvbm4gKmN0LFxuQEAgLTI3LDYgJiM0MzsyOCw3IEBAIGludCBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xuIFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xuIFx0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscCA9IG5mY3RfaGVscChjdCk7XG4mIzQzO1x0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcbiBcdF9fYmUzMiBtYXNrID0gMDtcbiBcbiBcdGlmICghaGVscClcbkBAIC03OSw2ICYjNDM7ODEsMTAgQEAgaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuICNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXG4gXHRleHAtXHUwMDNlem9uZSA9IGN0LVx1MDAzZXpvbmU7XG4gI2VuZGlmXG4mIzQzO1x0ZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpO1xuJiM0MztcdGlmIChlY2FjaGUpXG4mIzQzO1x0XHRleHAtXHUwMDNlZXZlbnRfbWFzayA9IGVjYWNoZS1cdTAwM2VleHBtYXNrO1xuJiM0MztcbiBcdG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCk7XG4gXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xuaW5kZXggOWRmMTU5NDQ4Yjg5NzkuLjRjN2QxNzk5MTU4ZDJhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXG5AQCAtMjQ1LDcgJiM0MzsyNDUsNiBAQCB2b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXhwZWN0X2V2ZW50cyBldmVudCxcbiB7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBuZl9jdF9leHBfbmV0KGV4cCk7XG4gXHRzdHJ1Y3QgbmZfY3RfZXZlbnRfbm90aWZpZXIgKm5vdGlmeTtcbi1cdHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplO1xuIFxuIFx0bG9ja2RlcF9uZmN0X2V4cGVjdF9sb2NrX2hlbGQoKTtcbiBcbkBAIC0yNTQsMTEgJiM0MzsyNTMsNyBAQCB2b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXhwZWN0X2V2ZW50cyBldmVudCxcbiBcdGlmICghbm90aWZ5KVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4tXHRlID0gbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVx1MDAzZW1hc3Rlcik7XG4tXHRpZiAoIWUpXG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cbi1cdGlmIChlLVx1MDAzZWV4cG1hc2sgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBldmVudCkpIHtcbiYjNDM7XHRpZiAoZXhwLVx1MDAzZWV2ZW50X21hc2sgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBldmVudCkpIHtcbiBcdFx0c3RydWN0IG5mX2V4cF9ldmVudCBpdGVtID0ge1xuIFx0XHRcdC5leHBcdD0gZXhwLFxuIFx0XHRcdC5wb3J0aWRcdD0gcG9ydGlkLFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbmluZGV4IDdhZTY4ZDYwNTg2YTIzLi5jZDlhZjM2MjBhZjU4NyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuQEAgLTMzMCw2ICYjNDM7MzMwLDcgQEAgdm9pZCBuZl9jdF9leHBlY3RfaW5pdChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLCB1bnNpZ25lZCBpbnQgY2xhc3MsXG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqaGVscGVyID0gTlVMTDtcbiBcdHN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC1cdTAwM2VtYXN0ZXI7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSByZWFkX3BuZXQoXHUwMDI2Y3QtXHUwMDNlY3RfbmV0KTtcbiYjNDM7XHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xuIFx0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcbiBcdGludCBsZW47XG4gXG5AQCAtMzQyLDYgJiM0MzszNDMsMTAgQEAgdm9pZCBuZl9jdF9leHBlY3RfaW5pdChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLCB1bnNpZ25lZCBpbnQgY2xhc3MsXG4gXHRleHAtXHUwMDNlY2xhc3MgPSBjbGFzcztcbiBcdGV4cC1cdTAwM2VleHBlY3RmbiA9IE5VTEw7XG4gXG4mIzQzO1x0ZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpO1xuJiM0MztcdGlmIChlY2FjaGUpXG4mIzQzO1x0XHRleHAtXHUwMDNlZXZlbnRfbWFzayA9IGVjYWNoZS1cdTAwM2VleHBtYXNrO1xuJiM0MztcbiBcdGhlbHAgPSBuZmN0X2hlbHAoY3QpO1xuIFx0aWYgKGhlbHApXG4gXHRcdGhlbHBlciA9IHJjdV9kZXJlZmVyZW5jZShoZWxwLVx1MDAzZWhlbHBlcik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuY1xuaW5kZXggZjM5NDQ1OThjMTcyNmYuLmY0ZmUxM2ZkMGU3MDJhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jXG5AQCAtNTE1LDcgJiM0Mzs1MTUsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIChwb3NzaWJseSBjaGFuZ2VkKSBleHBlY3RhdGlvbiBpdHNlbGYuICovXG4gXHRuZl9uYXRfZnRwID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9mdHBfaG9vayk7XG4gXHRpZiAobmZfbmF0X2Z0cCBcdTAwMjZcdTAwMjYgY3QtXHUwMDNlc3RhdHVzIFx1MDAyNiBJUFNfTkFUX01BU0spXG4tXHRcdHJldCA9IG5mX25hdF9mdHAoc2tiLCBjdGluZm8sIHNlYXJjaFtkaXJdW2ldLmZ0cHR5cGUsXG4mIzQzO1x0XHRyZXQgPSBuZl9uYXRfZnRwKHNrYiwgY3QsIGN0aW5mbywgc2VhcmNoW2Rpcl1baV0uZnRwdHlwZSxcbiBcdFx0XHRcdCBwcm90b2ZmLCBtYXRjaG9mZiwgbWF0Y2hsZW4sIGV4cCk7XG4gXHRlbHNlIHtcbiBcdFx0LyogQ2FuJiMzOTt0IGV4cGVjdCB0aGlzPyAgQmVzdCB0byBkcm9wIHBhY2tldCBub3cuICovXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuY1xuaW5kZXggNGU2YmFmZTQxNDM3NTIuLjkyMzYwOTYzNzU3YTk3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jXG5AQCAtMjMxLDcgJiM0MzsyMzEsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXG4gXHRcdFx0bmZfbmF0X2lyYyA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaXJjX2hvb2spO1xuIFx0XHRcdGlmIChuZl9uYXRfaXJjIFx1MDAyNlx1MDAyNiBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSylcbi1cdFx0XHRcdHJldCA9IG5mX25hdF9pcmMoc2tiLCBjdGluZm8sIHByb3RvZmYsXG4mIzQzO1x0XHRcdFx0cmV0ID0gbmZfbmF0X2lyYyhza2IsIGN0LCBjdGluZm8sIHByb3RvZmYsXG4gXHRcdFx0XHRcdFx0IGFkZHJfYmVnX3AgLSBpYl9wdHIsXG4gXHRcdFx0XHRcdFx0IGFkZHJfZW5kX3AgLSBhZGRyX2JlZ19wLFxuIFx0XHRcdFx0XHRcdCBleHApO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuaW5kZXggMzFjYmIxYjU1YjllNmMuLmZjM2Y2MDA5OWFmM2I1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbkBAIC0zNTI0LDYgJiM0MzszNTI0LDcgQEAgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcbiB7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSByZWFkX3BuZXQoXHUwMDI2Y3QtXHUwMDNlY3RfbmV0KTtcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfaGVscGVyICpoZWxwZXI7XG4mIzQzO1x0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHA7XG4gXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwO1xuIFx0dTMyIGNsYXNzID0gMDtcbkBAIC0zNTc1LDYgJiM0MzszNTc2LDEwIEBAIGN0bmV0bGlua19hbGxvY19leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGNkYVtdLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gXHRleHAtXHUwMDNlbWFzay5zcmMudTMgPSBtYXNrLVx1MDAzZXNyYy51MztcbiBcdGV4cC1cdTAwM2VtYXNrLnNyYy51LmFsbCA9IG1hc2stXHUwMDNlc3JjLnUuYWxsO1xuIFxuJiM0MztcdGVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcbiYjNDM7XHRpZiAoZWNhY2hlKVxuJiM0MztcdFx0ZXhwLVx1MDAzZWV2ZW50X21hc2sgPSBlY2FjaGUtXHUwMDNlZXhwbWFzaztcbiYjNDM7XG4gXHRpZiAoY2RhW0NUQV9FWFBFQ1RfTkFUXSkge1xuIFx0XHRlcnIgPSBjdG5ldGxpbmtfcGFyc2VfZXhwZWN0X25hdChjZGFbQ1RBX0VYUEVDVF9OQVRdLFxuIFx0XHRcdFx0XHRcdCBleHAsIG5mX2N0X2wzbnVtKGN0KSk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jXG5pbmRleCBhNjk1NTllZGY5YjM2My4uZTY3MmQ3NGE2ODE3ZWEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuY1xuQEAgLTY5LDcgJiM0Mzs2OSw3IEBAIHN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRcdG5mX25hdF90ZnRwID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF90ZnRwX2hvb2spO1xuIFx0XHRpZiAobmZfbmF0X3RmdHAgXHUwMDI2XHUwMDI2IGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKVxuLVx0XHRcdHJldCA9IG5mX25hdF90ZnRwKHNrYiwgY3RpbmZvLCBleHApO1xuJiM0MztcdFx0XHRyZXQgPSBuZl9uYXRfdGZ0cChza2IsIGN0LCBjdGluZm8sIGV4cCk7XG4gXHRcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xuIFx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvblwmIzM0Oyk7XG4gXHRcdFx0cmV0ID0gTkZfRFJPUDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jXG5pbmRleCA4ZjEwNTQ5MjBhODU3MS4uMzMwNDE1ODA5NDI1Y2UgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcbkBAIC0yNiw2ICYjNDM7MjYsNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19uYXRfaGVscGVyIG5hdF9oZWxwZXJfYW1hbmRhID1cbiBcdE5GX0NUX05BVF9IRUxQRVJfSU5JVChOQVRfSEVMUEVSX05BTUUpO1xuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztcdFx0XHQgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHRcdCBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0XHQgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRcdFx0IHVuc2lnbmVkIGludCBtYXRjaG9mZixcbkBAIC00NiwxNSAmIzQzOzQ3LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0LyogVHJ5IHRvIGdldCBzYW1lIHBvcnQ6IGlmIG5vdCwgdHJ5IHRvIGNoYW5nZSBpdC4gKi9cbiBcdHBvcnQgPSBuZl9uYXRfZXhwX2ZpbmRfcG9ydChleHAsIG50b2hzKGV4cC1cdTAwM2VzYXZlZF9wcm90by50Y3AucG9ydCkpO1xuIFx0aWYgKHBvcnQgPT0gMCkge1xuLVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgXCYjMzQ7YWxsIHBvcnRzIGluIHVzZVwmIzM0Oyk7XG4mIzQzO1x0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2FsbCBwb3J0cyBpbiB1c2VcJiMzNDspO1xuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdH1cbiBcbiBcdHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIFwmIzM0OyV1XCYjMzQ7LCBwb3J0KTtcbi1cdGlmICghbmZfbmF0X21hbmdsZV91ZHBfcGFja2V0KHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgY3RpbmZvLFxuJiM0MztcdGlmICghbmZfbmF0X21hbmdsZV91ZHBfcGFja2V0KHNrYiwgY3QsIGN0aW5mbyxcbiBcdFx0XHRcdCAgICAgIHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbixcbiBcdFx0XHRcdCAgICAgIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlcikpKSB7XG4tXHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtXHUwMDNlbWFzdGVyLCBcJiMzNDtjYW5ub3QgbWFuZ2xlIHBhY2tldFwmIzM0Oyk7XG4mIzQzO1x0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBtYW5nbGUgcGFja2V0XCYjMzQ7KTtcbiBcdFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChleHApO1xuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jXG5pbmRleCBjOTJhNDM2ZDljNDg2ZS4uMjVkMjBlMjk3MGFlMWIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmNcbkBAIC02MSw2ICYjNDM7NjEsNyBAQCBzdGF0aWMgaW50IG5mX25hdF9mdHBfZm10X2NtZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZnRwX3R5cGUgdHlwZSxcbiAvKiBTbywgdGhpcyBwYWNrZXQgaGFzIGhpdCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBtYXRjaGluZyBjb2RlLlxuICAgIE1hbmdsZSBpdCwgYW5kIGNoYW5nZSB0aGUgZXhwZWN0YXRpb24gdG8gbWF0Y2ggdGhlIG5ldyB2ZXJzaW9uLiAqL1xuIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHRcdCAgICAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0XHQgICAgICAgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbkBAIC03MSw3ICYjNDM7NzIsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHVuaW9uIG5mX2luZXRfYWRkciBuZXdhZGRyO1xuIFx0dV9pbnQxNl90IHBvcnQ7XG4gXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xuLVx0c3RydWN0IG5mX2Nvbm4gKmN0ID0gZXhwLVx1MDAzZW1hc3RlcjtcbiBcdGNoYXIgYnVmZmVyW3NpemVvZihcJiMzNDt8MXx8NjU1MzV8XCYjMzQ7KSAmIzQzOyBJTkVUNl9BRERSU1RSTEVOXTtcbiBcdHVuc2lnbmVkIGludCBidWZsZW47XG4gXG5AQCAtODgsNyAmIzQzOzg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRwb3J0ID0gbmZfbmF0X2V4cF9maW5kX3BvcnQoZXhwLCBudG9ocyhleHAtXHUwMDNlc2F2ZWRfcHJvdG8udGNwLnBvcnQpKTtcbiBcdGlmIChwb3J0ID09IDApIHtcbi1cdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cdTAwM2VtYXN0ZXIsIFwmIzM0O2FsbCBwb3J0cyBpbiB1c2VcJiMzNDspO1xuJiM0MztcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcJiMzNDthbGwgcG9ydHMgaW4gdXNlXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIE5GX0RST1A7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuY1xuaW5kZXggMTljNGZjYzYwYzUwZjIuLjg5YjMxZmU5MzJiYWMwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXG5AQCAtMzAsNiAmIzQzOzMwLDcgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2lyYyA9XG4gXHRORl9DVF9OQVRfSEVMUEVSX0lOSVQoTkFUX0hFTFBFUl9OQU1FKTtcbiBcbiBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdFx0IHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRcdCB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5AQCAtMzcsNyAmIzQzOzM4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHApXG4ge1xuIFx0Y2hhciBidWZmZXJbc2l6ZW9mKFwmIzM0OzQyOTQ5NjcyOTYgNjU2MzVcJiMzNDspXTtcbi1cdHN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC1cdTAwM2VtYXN0ZXI7XG4gXHR1bmlvbiBuZl9pbmV0X2FkZHIgbmV3YWRkcjtcbiBcdHVfaW50MTZfdCBwb3J0O1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuY1xuaW5kZXggMWE1OTExMzJkNmViOTMuLjcxMjFlNjcwNGYzNDFjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmNcbkBAIC0yMSwxNyAmIzQzOzIxLDE2IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl90ZnRwID1cbiBcdE5GX0NUX05BVF9IRUxQRVJfSU5JVChOQVRfSEVMUEVSX05BTUUpO1xuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztcdFx0XHQgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHRcdCBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0XHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXHUwMDNlbWFzdGVyO1xuLVxuIFx0ZXhwLVx1MDAzZXNhdmVkX3Byb3RvLnVkcC5wb3J0XG4gXHRcdD0gY3QtXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9PUklHSU5BTF0udHVwbGUuc3JjLnUudWRwLnBvcnQ7XG4gXHRleHAtXHUwMDNlZGlyID0gSVBfQ1RfRElSX1JFUExZO1xuIFx0ZXhwLVx1MDAzZWV4cGVjdGZuID0gbmZfbmF0X2ZvbGxvd19tYXN0ZXI7XG4gXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XG4tXHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtXHUwMDNlbWFzdGVyLCBcJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCYjMzQ7KTtcbiYjNDM7XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvblwmIzM0Oyk7XG4gXHRcdHJldHVybiBORl9EUk9QO1xuIFx0fVxuIFx0cmV0dXJuIE5GX0FDQ0VQVDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0tfRVZFTlRTJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19BTUFOREEmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0ZUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfSVJDJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19URlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19ORVRCSU9TX05TJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TTk1QJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTksmIzM0OywKICAgICYjMzQ7TkZfTkFUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YW1hbmRhX2hlbHAmIzM0OywKICAgICYjMzQ7bmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwJiMzNDssCiAgICAmIzM0O25mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQmIzM0OywKICAgICYjMzQ7bmZfY3RfZXhwZWN0X2luaXQmIzM0OywKICAgICYjMzQ7Y3RuZXRsaW5rX2FsbG9jX2V4cGVjdCYjMzQ7LAogICAgJiMzNDt0ZnRwX2hlbHAmIzM0OywKICAgICYjMzQ7bmZfbmF0X2Z0cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgKGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgbmV0bGluaykgYW5kIHRoZSBleHBlY3RhdGlvbi9ldmVudCBjYWNoZSBsb2dpYy4gSXQgY2FjaGVzIGBldmVudF9tYXNrYCBpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBjb25uZWN0aW9uJiMzOTtzIGVjYWNoZSBhdCBldmVudCByZXBvcnQgdGltZS4gSXQgYWxzbyBwYXNzZXMgdGhlIGNvbm5lY3Rpb24gb2JqZWN0IGRpcmVjdGx5IHRvIE5BVCBob29rIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IGFmZmVjdCBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNlMWYwNWZhMDQ5OTliMDMwNDYxZGJhNWY1ZjY1MGQ4ZWU1ZGMwYTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAyMTo0MTo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaAppbmRleCAxNzE5OTg3ZThmZDgzOC4uZGViNTYwYmI3OWM0MzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmgKQEAgLTksNiAmIzQzOzksNyBAQAogCiB0eXBlZGVmIHVuc2lnbmVkIGludAogbmZfbmF0X2FtYW5kYV9ob29rX2ZuKHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7CQkgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCSAgICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLAogCQkgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZiwKIAkJICAgICAgdW5zaWduZWQgaW50IG1hdGNob2ZmLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oCmluZGV4IDdiNjI0NDZjY2VjNGY0Li43MTI3MDIxODNiOTQ3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuaApAQCAtMjgsNiAmIzQzOzI4LDcgQEAgc3RydWN0IG5mX2N0X2Z0cF9tYXN0ZXIgewogICogY29ubmVjdGlvbiB3ZSBzaG91bGQgZXhwZWN0LiAqLwogdHlwZWRlZiB1bnNpZ25lZCBpbnQKIG5mX25hdF9mdHBfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJICAgc3RydWN0IG5mX2Nvbm4gKmN0LAogCQkgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbywKIAkJICAgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLAogCQkgICB1bnNpZ25lZCBpbnQgcHJvdG9mZiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaAppbmRleCBjZTA3MjUwYWZiNGU5ZS4uYzczYjNiNDRhMGI3ZWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmgKQEAgLTEwLDYgJiM0MzsxMCw3IEBACiAKIHR5cGVkZWYgdW5zaWduZWQgaW50CiBuZl9uYXRfaXJjX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYiwKJiM0MzsJCSAgIHN0cnVjdCBuZl9jb25uICpjdCwKIAkJICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCiAJCSAgIHVuc2lnbmVkIGludCBwcm90b2ZmLAogCQkgICB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaAppbmRleCBlM2QxNzM5YzU1N2QxNS4uODAyY2I3ZmMxOWNkZWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaApAQCAtMTksNiAmIzQzOzE5LDcgQEAgc3RydWN0IHRmdHBoZHIgewogCiB0eXBlZGVmIHVuc2lnbmVkIGludAogbmZfbmF0X3RmdHBfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJICAgIHN0cnVjdCBuZl9jb25uICpjdCwKIAkJICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLAogCQkgICAgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oCmluZGV4IGMwMjQzNDVjOWJkODYyLi41ZDBmNWIyZjEyYTcyNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oCkBAIC00Miw2ICYjNDM7NDIsOSBAQCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCB7CiAJLyogRXhwZWN0YXRpb24gY2xhc3MgKi8KIAl1bnNpZ25lZCBpbnQgY2xhc3M7CiAKJiM0MzsJLyogRXZlbnQgZmlsdGVyIG1hc2sgKi8KJiM0MzsJdTE2IGV2ZW50X21hc2s7CiYjNDM7CiAJLyogRnVuY3Rpb24gdG8gY2FsbCBhZnRlciBzZXR1cCBhbmQgaW5zZXJ0aW9uICovCiAJdm9pZCAoKmV4cGVjdGZuKShzdHJ1Y3QgbmZfY29ubiAqbmV3LAogCQkJIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICp0aGlzKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMKaW5kZXggMDZkNmVjMTJjODZkZmEuLjE0YWU2NjA0OTFmMzYwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYwpAQCAtMTUxLDcgJiM0MzsxNTEsNyBAQCBzdGF0aWMgaW50IGFtYW5kYV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJbmZfbmF0X2FtYW5kYSA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfYW1hbmRhX2hvb2spOwogCQlpZiAobmZfbmF0X2FtYW5kYSAmYW1wOyZhbXA7IGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKQotCQkJcmV0ID0gbmZfbmF0X2FtYW5kYShza2IsIGN0aW5mbywgcHJvdG9mZiwKJiM0MzsJCQlyZXQgPSBuZl9uYXRfYW1hbmRhKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZiwKIAkJCQkJICAgIG9mZiAtIGRhdGFvZmYsIGxlbiwgZXhwKTsKIAkJZWxzZSBpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7CiAJCQluZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsICYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvbiYjMzQ7KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMKaW5kZXggNmZmOTU0ZjFiZmI4N2MuLjA5MjJlMzBiNmFiMDcwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYwpAQCAtMTQsNiAmIzQzOzE0LDcgQEAKICNpbmNsdWRlICZsdDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaCZndDsKIAogaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCXN0cnVjdCBuZl9jb25uICpjdCwKQEAgLTI3LDYgJiM0MzsyOCw3IEBAIGludCBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgcnRhYmxlICpydCA9IHNrYl9ydGFibGUoc2tiKTsKIAlzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXY7CiAJc3RydWN0IG5mX2Nvbm5faGVscCAqaGVscCA9IG5mY3RfaGVscChjdCk7CiYjNDM7CXN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplY2FjaGU7CiAJX19iZTMyIG1hc2sgPSAwOwogCiAJaWYgKCFoZWxwKQpAQCAtNzksNiAmIzQzOzgxLDEwIEBAIGludCBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTCiAJZXhwLSZndDt6b25lID0gY3QtJmd0O3pvbmU7CiAjZW5kaWYKJiM0MzsJZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpOwomIzQzOwlpZiAoZWNhY2hlKQomIzQzOwkJZXhwLSZndDtldmVudF9tYXNrID0gZWNhY2hlLSZndDtleHBtYXNrOwomIzQzOwogCW5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCk7CiAJbmZfY3RfZXhwZWN0X3B1dChleHApOwogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jCmluZGV4IDlkZjE1OTQ0OGI4OTc5Li40YzdkMTc5OTE1OGQyYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMKQEAgLTI0NSw3ICYjNDM7MjQ1LDYgQEAgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsCiB7CiAJc3RydWN0IG5ldCAqbmV0ID0gbmZfY3RfZXhwX25ldChleHApOwogCXN0cnVjdCBuZl9jdF9ldmVudF9ub3RpZmllciAqbm90aWZ5OwotCXN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplOwogCiAJbG9ja2RlcF9uZmN0X2V4cGVjdF9sb2NrX2hlbGQoKTsKIApAQCAtMjU0LDExICYjNDM7MjUzLDcgQEAgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsCiAJaWYgKCFub3RpZnkpCiAJCWdvdG8gb3V0X3VubG9jazsKIAotCWUgPSBuZl9jdF9lY2FjaGVfZmluZChleHAtJmd0O21hc3Rlcik7Ci0JaWYgKCFlKQotCQlnb3RvIG91dF91bmxvY2s7Ci0KLQlpZiAoZS0mZ3Q7ZXhwbWFzayAmYW1wOyAoMSAmbHQ7Jmx0OyBldmVudCkpIHsKJiM0MzsJaWYgKGV4cC0mZ3Q7ZXZlbnRfbWFzayAmYW1wOyAoMSAmbHQ7Jmx0OyBldmVudCkpIHsKIAkJc3RydWN0IG5mX2V4cF9ldmVudCBpdGVtID0gewogCQkJLmV4cAk9IGV4cCwKIAkJCS5wb3J0aWQJPSBwb3J0aWQsCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jCmluZGV4IDdhZTY4ZDYwNTg2YTIzLi5jZDlhZjM2MjBhZjU4NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMKQEAgLTMzMCw2ICYjNDM7MzMwLDcgQEAgdm9pZCBuZl9jdF9leHBlY3RfaW5pdChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLCB1bnNpZ25lZCBpbnQgY2xhc3MsCiAJc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmhlbHBlciA9IE5VTEw7CiAJc3RydWN0IG5mX2Nvbm4gKmN0ID0gZXhwLSZndDttYXN0ZXI7CiAJc3RydWN0IG5ldCAqbmV0ID0gcmVhZF9wbmV0KCZhbXA7Y3QtJmd0O2N0X25ldCk7CiYjNDM7CXN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplY2FjaGU7CiAJc3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDsKIAlpbnQgbGVuOwogCkBAIC0zNDIsNiAmIzQzOzM0MywxMCBAQCB2b2lkIG5mX2N0X2V4cGVjdF9pbml0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHVuc2lnbmVkIGludCBjbGFzcywKIAlleHAtJmd0O2NsYXNzID0gY2xhc3M7CiAJZXhwLSZndDtleHBlY3RmbiA9IE5VTEw7CiAKJiM0MzsJZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpOwomIzQzOwlpZiAoZWNhY2hlKQomIzQzOwkJZXhwLSZndDtldmVudF9tYXNrID0gZWNhY2hlLSZndDtleHBtYXNrOwomIzQzOwogCWhlbHAgPSBuZmN0X2hlbHAoY3QpOwogCWlmIChoZWxwKQogCQloZWxwZXIgPSByY3VfZGVyZWZlcmVuY2UoaGVscC0mZ3Q7aGVscGVyKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMKaW5kZXggZjM5NDQ1OThjMTcyNmYuLmY0ZmUxM2ZkMGU3MDJhIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYwpAQCAtNTE1LDcgJiM0Mzs1MTUsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiAocG9zc2libHkgY2hhbmdlZCkgZXhwZWN0YXRpb24gaXRzZWxmLiAqLwogCW5mX25hdF9mdHAgPSByY3VfZGVyZWZlcmVuY2UobmZfbmF0X2Z0cF9ob29rKTsKIAlpZiAobmZfbmF0X2Z0cCAmYW1wOyZhbXA7IGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKQotCQlyZXQgPSBuZl9uYXRfZnRwKHNrYiwgY3RpbmZvLCBzZWFyY2hbZGlyXVtpXS5mdHB0eXBlLAomIzQzOwkJcmV0ID0gbmZfbmF0X2Z0cChza2IsIGN0LCBjdGluZm8sIHNlYXJjaFtkaXJdW2ldLmZ0cHR5cGUsCiAJCQkJIHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbiwgZXhwKTsKIAllbHNlIHsKIAkJLyogQ2FuJiMzOTt0IGV4cGVjdCB0aGlzPyAgQmVzdCB0byBkcm9wIHBhY2tldCBub3cuICovCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jCmluZGV4IDRlNmJhZmU0MTQzNzUyLi45MjM2MDk2Mzc1N2E5NyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmMKQEAgLTIzMSw3ICYjNDM7MjMxLDcgQEAgc3RhdGljIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLAogCiAJCQluZl9uYXRfaXJjID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9pcmNfaG9vayk7CiAJCQlpZiAobmZfbmF0X2lyYyAmYW1wOyZhbXA7IGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKQotCQkJCXJldCA9IG5mX25hdF9pcmMoc2tiLCBjdGluZm8sIHByb3RvZmYsCiYjNDM7CQkJCXJldCA9IG5mX25hdF9pcmMoc2tiLCBjdCwgY3RpbmZvLCBwcm90b2ZmLAogCQkJCQkJIGFkZHJfYmVnX3AgLSBpYl9wdHIsCiAJCQkJCQkgYWRkcl9lbmRfcCAtIGFkZHJfYmVnX3AsCiAJCQkJCQkgZXhwKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwppbmRleCAzMWNiYjFiNTViOWU2Yy4uZmMzZjYwMDk5YWYzYjUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMKQEAgLTM1MjQsNiAmIzQzOzM1MjQsNyBAQCBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSwgc3RydWN0IG5mX2Nvbm4gKmN0LAogewogCXN0cnVjdCBuZXQgKm5ldCA9IHJlYWRfcG5ldCgmYW1wO2N0LSZndDtjdF9uZXQpOwogCXN0cnVjdCBuZl9jb25udHJhY2tfaGVscGVyICpoZWxwZXI7CiYjNDM7CXN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplY2FjaGU7CiAJc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cDsKIAlzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwOwogCXUzMiBjbGFzcyA9IDA7CkBAIC0zNTc1LDYgJiM0MzszNTc2LDEwIEBAIGN0bmV0bGlua19hbGxvY19leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGNkYVtdLCBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJZXhwLSZndDttYXNrLnNyYy51MyA9IG1hc2stJmd0O3NyYy51MzsKIAlleHAtJmd0O21hc2suc3JjLnUuYWxsID0gbWFzay0mZ3Q7c3JjLnUuYWxsOwogCiYjNDM7CWVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTsKJiM0MzsJaWYgKGVjYWNoZSkKJiM0MzsJCWV4cC0mZ3Q7ZXZlbnRfbWFzayA9IGVjYWNoZS0mZ3Q7ZXhwbWFzazsKJiM0MzsKIAlpZiAoY2RhW0NUQV9FWFBFQ1RfTkFUXSkgewogCQllcnIgPSBjdG5ldGxpbmtfcGFyc2VfZXhwZWN0X25hdChjZGFbQ1RBX0VYUEVDVF9OQVRdLAogCQkJCQkJIGV4cCwgbmZfY3RfbDNudW0oY3QpKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYwppbmRleCBhNjk1NTllZGY5YjM2My4uZTY3MmQ3NGE2ODE3ZWEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMKQEAgLTY5LDcgJiM0Mzs2OSw3IEBAIHN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJbmZfbmF0X3RmdHAgPSByY3VfZGVyZWZlcmVuY2UobmZfbmF0X3RmdHBfaG9vayk7CiAJCWlmIChuZl9uYXRfdGZ0cCAmYW1wOyZhbXA7IGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKQotCQkJcmV0ID0gbmZfbmF0X3RmdHAoc2tiLCBjdGluZm8sIGV4cCk7CiYjNDM7CQkJcmV0ID0gbmZfbmF0X3RmdHAoc2tiLCBjdCwgY3RpbmZvLCBleHApOwogCQllbHNlIGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHsKIAkJCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uJiMzNDspOwogCQkJcmV0ID0gTkZfRFJPUDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMKaW5kZXggOGYxMDU0OTIwYTg1NzEuLjMzMDQxNTgwOTQyNWNlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYwpAQCAtMjYsNiAmIzQzOzI2LDcgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2FtYW5kYSA9CiAJTkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCSBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQkgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCiAJCQkgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJCQkgdW5zaWduZWQgaW50IG1hdGNob2ZmLApAQCAtNDYsMTUgJiM0Mzs0NywxNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkvKiBUcnkgdG8gZ2V0IHNhbWUgcG9ydDogaWYgbm90LCB0cnkgdG8gY2hhbmdlIGl0LiAqLwogCXBvcnQgPSBuZl9uYXRfZXhwX2ZpbmRfcG9ydChleHAsIG50b2hzKGV4cC0mZ3Q7c2F2ZWRfcHJvdG8udGNwLnBvcnQpKTsKIAlpZiAocG9ydCA9PSAwKSB7Ci0JCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtJmd0O21hc3RlciwgJiMzNDthbGwgcG9ydHMgaW4gdXNlJiMzNDspOwomIzQzOwkJbmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCAmIzM0O2FsbCBwb3J0cyBpbiB1c2UmIzM0Oyk7CiAJCXJldHVybiBORl9EUk9QOwogCX0KIAogCXNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICYjMzQ7JXUmIzM0OywgcG9ydCk7Ci0JaWYgKCFuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQoc2tiLCBleHAtJmd0O21hc3RlciwgY3RpbmZvLAomIzQzOwlpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sCiAJCQkJICAgICAgcHJvdG9mZiwgbWF0Y2hvZmYsIG1hdGNobGVuLAogCQkJCSAgICAgIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlcikpKSB7Ci0JCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtJmd0O21hc3RlciwgJiMzNDtjYW5ub3QgbWFuZ2xlIHBhY2tldCYjMzQ7KTsKJiM0MzsJCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgJiMzNDtjYW5ub3QgbWFuZ2xlIHBhY2tldCYjMzQ7KTsKIAkJbmZfY3RfdW5leHBlY3RfcmVsYXRlZChleHApOwogCQlyZXR1cm4gTkZfRFJPUDsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jCmluZGV4IGM5MmE0MzZkOWM0ODZlLi4yNWQyMGUyOTcwYWUxYiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmMKQEAgLTYxLDYgJiM0Mzs2MSw3IEBAIHN0YXRpYyBpbnQgbmZfbmF0X2Z0cF9mbXRfY21kKHN0cnVjdCBuZl9jb25uICpjdCwgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLAogLyogU28sIHRoaXMgcGFja2V0IGhhcyBoaXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWF0Y2hpbmcgY29kZS4KICAgIE1hbmdsZSBpdCwgYW5kIGNoYW5nZSB0aGUgZXhwZWN0YXRpb24gdG8gbWF0Y2ggdGhlIG5ldyB2ZXJzaW9uLiAqLwogc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwKHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7CQkJICAgICAgIHN0cnVjdCBuZl9jb25uICpjdCwKIAkJCSAgICAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbywKIAkJCSAgICAgICBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IHByb3RvZmYsCkBAIC03MSw3ICYjNDM7NzIsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl1bmlvbiBuZl9pbmV0X2FkZHIgbmV3YWRkcjsKIAl1X2ludDE2X3QgcG9ydDsKIAlpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pOwotCXN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC0mZ3Q7bWFzdGVyOwogCWNoYXIgYnVmZmVyW3NpemVvZigmIzM0O3wxfHw2NTUzNXwmIzM0OykgJiM0MzsgSU5FVDZfQUREUlNUUkxFTl07CiAJdW5zaWduZWQgaW50IGJ1ZmxlbjsKIApAQCAtODgsNyAmIzQzOzg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwKHN0cnVjdCBza19idWZmICpza2IsCiAKIAlwb3J0ID0gbmZfbmF0X2V4cF9maW5kX3BvcnQoZXhwLCBudG9ocyhleHAtJmd0O3NhdmVkX3Byb3RvLnRjcC5wb3J0KSk7CiAJaWYgKHBvcnQgPT0gMCkgewotCQluZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLSZndDttYXN0ZXIsICYjMzQ7YWxsIHBvcnRzIGluIHVzZSYjMzQ7KTsKJiM0MzsJCW5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgJiMzNDthbGwgcG9ydHMgaW4gdXNlJiMzNDspOwogCQlyZXR1cm4gTkZfRFJPUDsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMKaW5kZXggMTljNGZjYzYwYzUwZjIuLjg5YjMxZmU5MzJiYWMwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYwpAQCAtMzAsNiAmIzQzOzMwLDcgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2lyYyA9CiAJTkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCSBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQkgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCiAJCQkgdW5zaWduZWQgaW50IHByb3RvZmYsCiAJCQkgdW5zaWduZWQgaW50IG1hdGNob2ZmLApAQCAtMzcsNyAmIzQzOzM4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCkKIHsKIAljaGFyIGJ1ZmZlcltzaXplb2YoJiMzNDs0Mjk0OTY3Mjk2IDY1NjM1JiMzNDspXTsKLQlzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtJmd0O21hc3RlcjsKIAl1bmlvbiBuZl9pbmV0X2FkZHIgbmV3YWRkcjsKIAl1X2ludDE2X3QgcG9ydDsKIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jCmluZGV4IDFhNTkxMTMyZDZlYjkzLi43MTIxZTY3MDRmMzQxYyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYwpAQCAtMjEsMTcgJiM0MzsyMSwxNiBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19uYXRfaGVscGVyIG5hdF9oZWxwZXJfdGZ0cCA9CiAJTkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCSBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQkgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCiAJCQkgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCkKIHsKLQljb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtJmd0O21hc3RlcjsKLQogCWV4cC0mZ3Q7c2F2ZWRfcHJvdG8udWRwLnBvcnQKIAkJPSBjdC0mZ3Q7dHVwbGVoYXNoW0lQX0NUX0RJUl9PUklHSU5BTF0udHVwbGUuc3JjLnUudWRwLnBvcnQ7CiAJZXhwLSZndDtkaXIgPSBJUF9DVF9ESVJfUkVQTFk7CiAJZXhwLSZndDtleHBlY3RmbiA9IG5mX25hdF9mb2xsb3dfbWFzdGVyOwogCWlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHsKLQkJbmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC0mZ3Q7bWFzdGVyLCAmIzM0O2Nhbm5vdCBhZGQgZXhwZWN0YXRpb24mIzM0Oyk7CiYjNDM7CQluZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsICYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvbiYjMzQ7KTsKIAkJcmV0dXJuIE5GX0RST1A7CiAJfQogCXJldHVybiBORl9BQ0NFUFQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNDkKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA1NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIGZvciBGdXp6aW5nIFJlbGV2YW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgcGF0Y2ggYW5kIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzLCBzcGVjaWZpY2FsbHkgdGhlIEFtYW5kYSwgRlRQLCBJUkMsIFRGVFAsIGJyb2FkY2FzdCwgbmV0bGluaywgZWNhY2hlLCBhbmQgZXhwZWN0IG1vZHVsZXMuCgpGaXJzdCwgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIGFkZGluZyBhIGBzdHJ1Y3QgbmZfY29ubiAqY3RgIHBhcmFtZXRlciB0byBzZXZlcmFsIGhvb2sgZnVuY3Rpb25zOiBgbmZfbmF0X2FtYW5kYV9ob29rX2ZuYCwgYG5mX25hdF9mdHBfaG9va19mbmAsIGBuZl9uYXRfaXJjX2hvb2tfZm5gLCBhbmQgYG5mX25hdF90ZnRwX2hvb2tfZm5gLiBOb3QgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGZvciBmdXp6aW5nIGluIGl0c2VsZi4gQWRkaW5nIHRoZSBjb25udHJhY2sgaXNuJiMzOTt0IHZlcnkgY29uY2VybmluZyAtIHRoZSBjYWxsZXIgbm93IGhhcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgoKU2Vjb25kLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiBpbiBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAuIFRoZXkmIzM5O3ZlIGNoYW5nZWQgaXQgdG8gdXNlIGBleHAtJmd0O2V2ZW50X21hc2tgIGRpcmVjdGx5IGluc3RlYWQgb2YgZG9pbmcgYSBsb29rdXAgd2l0aCBgbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLSZndDttYXN0ZXIpYC4gVGhpcyBpcyBhICpkZWZpbml0ZSogY2hhbmdlIGluIGJlaGF2aW9yLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IGF2b2lkcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXB0ci1kZXJlZiBpZiBgZXhwLSZndDttYXN0ZXJgIGlzIGZyZWVkIG9yIGl0cyBlY2FjaGUgaXMgZnJlZWQvbm90IGZvdW5kLCBvciBpdCBqdXN0IG9wdGltaXplcyB0aGUgbG9va3VwLiBXYWl0LCB0aGUgY29kZSBub3cgY2FjaGVzIHRoZSBldmVudCBtYXNrIGF0IGV4cGVjdGF0aW9uIGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBhdCBldmVudCByZXBvcnQgdGltZS4gVGhpcyBpcyBjYWNoaW5nIGEgdmFsdWUgZnJvbSBgZXhwLSZndDttYXN0ZXJgIGluIGBleHBgIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBldmVyeSB0aW1lIHdlIGNhbGwgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgLiBUaGlzIGF2b2lkcyBhY2Nlc3NpbmcgYGV4cC0mZ3Q7bWFzdGVyYCYjMzk7cyBlY2FjaGUgbGF0ZXIsIHdoaWNoIG1pZ2h0IGJlIHVuc2FmZSBvciBqdXN0IGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuCgpUaGlyZCwgdGhlIHBhdGNoIGFsc28gaW5pdGlhbGl6ZXMgYGV4cC0mZ3Q7ZXZlbnRfbWFza2AgaW4gYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGFuZCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgYnkgbG9va2luZyB1cCB0aGUgZWNhY2hlIG9mIHRoZSBtYXN0ZXIgY29ubmVjdGlvbi4gVGhpcyBpcyB0aWVkIHRvIHRoZSBwcmV2aW91cyBjaGFuZ2UgYmVjYXVzZSBgZXhwLSZndDtldmVudF9tYXNrYCBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgc29tZSBwb2ludC4gSXQmIzM5O3MgaW5pdGlhbGl6aW5nIHRoYXQgbWVtYmVyLgoKU28sIEkgdGhpbmsgd2UgaGF2ZSBhIHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZSBiZWNhdXNlIGl0JiMzOTtzIGF2b2lkaW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG51bGwtcHRyLWRlcmVmIG9yIGF0IGxlYXN0IG9wdGltaXppbmcgdGhlIGxvb2t1cC4gVGhlIG9yaWdpbmFsIGNvZGUgbG9va2VkIGxpa2U6CgpgYGBjCi0JZSA9IG5mX2N0X2VjYWNoZV9maW5kKGV4cC0mZ3Q7bWFzdGVyKTsKLQlpZiAoIWUpCi0JCWdvdG8gb3V0X3VubG9jazsKLQotCWlmIChlLSZndDtleHBtYXNrICZhbXA7ICgxICZsdDsmbHQ7IGV2ZW50KSkgewomIzQzOwlpZiAoZXhwLSZndDtldmVudF9tYXNrICZhbXA7ICgxICZsdDsmbHQ7IGV2ZW50KSkgewpgYGAKClRoaXMgY2hhbmdlIGludm9sdmVzIHN0b3JpbmcgYSB2YWx1ZSBpbiBhbiBleHBlY3RhdGlvbiB3aGVuIHRoZSBleHBlY3RhdGlvbiBpcyBjcmVhdGVkIGFuZCBzdWJzZXF1ZW50bHkgdXNpbmcgdGhhdCB2YWx1ZS4gU28sIGl0JiMzOTtzIGNhY2hpbmcgYXQgZXhwZWN0YXRpb24gY3JlYXRpb24gdGltZSBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQgdXAgZnJvbSB0aGUgbWFzdGVyIGF0IGV2ZW50IHJlcG9ydCB0aW1lLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIGBDT05GSUdfTkZfQ09OTlRSQUNLYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTYCwgYENPTkZJR19ORl9OQVRgLCBgQ09ORklHX05GX0NPTk5UUkFDS19BTUFOREFgLCBgQ09ORklHX05GX0NPTk5UUkFDS19GVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19JUkNgLCBgQ09ORklHX05GX0NPTk5UUkFDS19URlRQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYW5kIGBDT05GSUdfTkZfQ1RfTkVUTElOS2AuIEJlc3QgdG8gdXNlIGBncmVwcGVyYCB0byBmaW5kIHRoZSBleGFjdCBjb25maWcgbmFtZXMgZm9yIHNhZmV0eSwgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfQ09OTlRSQUNLX0VWRU5UUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc9ODA9Q09ORklHX05GX0NPTk5UUkFDS19aT05FUz15XG5hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWc6ODE6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTgyLUNPTkZJR19ORl9DT05OVFJBQ0tfVElNRU9VVD15XG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xNDk9Q09ORklHX05GX0NPTk5UUkFDSz1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE1MDpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE1MS1DT05GSUdfTkVURklMVEVSX1hUX01BUks9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTU0PUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo1NTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy01Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTU3PUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc6NTg6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTU5LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTYxPUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjYyOkNPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctNjMtQ09ORklHX05GX0NPTk5UUkFDS19BTUFOREE9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz02MD1DT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjYxOkNPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy02Mi1DT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnPTQ0PUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc6NDU6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTQ2LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWc9NDg9Q09ORklHX05GX0NPTk5UUkFDS19NQVJLPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZzo0OTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWctNTAtQ09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTIzPUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjEyNDpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTEyNS1DT05GSUdfTkZfQ09OTlRSQUNLX0FNQU5EQT1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTE4ND1DT05GSUdfTkZfQ09OTlRSQUNLX1BST0NGUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTg1OkNPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xODYtQ09ORklHX05GX0NPTk5UUkFDS19USU1FT1VUPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MTc1PUNPTkZJR19ORl9DT05OVFJBQ0tfUFJPQ0ZTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxNzY6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE3Ny1DT05GSUdfTkZfQ09OTlRSQUNLX1RJTUVPVVQ9eVxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaD01MT1zdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oLTYyLSNlbmRpZlxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oOjYzOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oLTY0LVx0c3RydWN0IG5mX2Nvbm50cmFja19uZXRfZWNhY2hlIGVjYWNoZTtcbi0tXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oPTM0PW5mX2N0X2VjYWNoZV9maW5kKGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMzUte1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDozNjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMzctXHRyZXR1cm4gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9FQ0FDSEUpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9NDM9c3RhdGljIGlubGluZSBib29sIG5mX2N0X2VjYWNoZV9leGlzdChjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTQ0LXtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6NDU6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTQ2LVx0cmV0dXJuIG5mX2N0X2V4dF9leGlzdChjdCwgTkZfQ1RfRVhUX0VDQUNIRSk7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC01MS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6NTI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTUzLVxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTAyPW5mX2Nvbm50cmFja19ldmVudF9jYWNoZShlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdClcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTAzLXtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTA0OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xMDUtXHRzdHJ1Y3QgbmV0ICpuZXQgPSBuZl9jdF9uZXQoY3QpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTI4PW5mX2Nvbm50cmFja19ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXZlbnRzIGV2ZW50LCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xMzAte1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxMzE6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTEzMi1cdGlmIChuZl9jdF9lY2FjaGVfZXhpc3QoY3QpKVxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTM5PW5mX2Nvbm50cmFja19ldmVudChlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdClcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTQwLXtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTQxOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNDItXHRpZiAobmZfY3RfZWNhY2hlX2V4aXN0KGN0KSlcbi0tXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0Ny1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTQ4OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNDktdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xNjA9c3RhdGljIGlubGluZSBib29sIG5mX2Nvbm50cmFja19lY2FjaGVfZHdvcmtfcGVuZGluZyhjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNjMtfVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxNjQ6I2Vsc2UgLyogQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgKi9cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTY1LVxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTg1PXN0YXRpYyBpbmxpbmUgYm9vbCBuZl9jb25udHJhY2tfZWNhY2hlX2R3b3JrX3BlbmRpbmcoY29uc3Qgc3RydWN0IG5ldCAqbmV0KSB7IHJldHVybiBmYWxzZTsgfVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxODY6I2VuZGlmIC8qIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTICovXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE4Ny0jZW5kaWYgLypfTkZfQ09OTlRSQUNLX0VDQUNIRV9IKi9cbi0tXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5oPTk9ZW51bSBuZl9jdF9leHRfaWQge1xuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmgtMTUtXHRORl9DVF9FWFRfQUNDVCxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmg6MTY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5oLTE3LVx0TkZfQ1RfRVhUX0VDQUNIRSxcbi0tXG5pbmNsdWRlL25ldC9uZXRucy9jb25udHJhY2suaD04Mz1zdHJ1Y3QgbmV0bnNfY3Qge1xuaW5jbHVkZS9uZXQvbmV0bnMvY29ubnRyYWNrLmg6ODQ6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5pbmNsdWRlL25ldC9uZXRucy9jb25udHJhY2suaC04NS1cdGJvb2wgZWNhY2hlX2R3b3JrX3BlbmRpbmc7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTE0OD1jb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTI9bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19USU1FU1RBTVApICYjNDM7PSBuZl9jb25udHJhY2tfdGltZXN0YW1wLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMpICYjNDM7PSBuZl9jb25udHJhY2tfZWNhY2hlLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQtbmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFMpICYjNDM7PSBuZl9jb25udHJhY2tfbGFiZWxzLm9cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM9NjUwPXN0YXRpYyB2b2lkIG5mX2N0X2FkZF90b19lY2FjaGVfbGlzdChzdHJ1Y3QgbmZfY29ubiAqY3QpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjUxLXtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzo2NTI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjUzLVx0c3RydWN0IG5mX2Nvbm50cmFja19uZXQgKmNuZXQgPSBuZl9jdF9wZXJuZXQobmZfY3RfbmV0KGN0KSk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jPTE3NTQ9aW5pdF9jb25udHJhY2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZfY29ubiAqdG1wbCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTc2MS1cdHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgcmVwbF90dXBsZTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzoxNzYyOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE3NjMtXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xNzk0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE3OTU6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTc5Ni1cdGVjYWNoZSA9IHRtcGwgPyBuZl9jdF9lY2FjaGVfZmluZCh0bXBsKSA6IE5VTEw7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM9MzA9c3RhdGljIGNvbnN0IHU4IG5mX2N0X2V4dF90eXBlX2xlbltORl9DVF9FWFRfTlVNXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0zNi1cdFtORl9DVF9FWFRfQUNDVF0gPSBzaXplb2Yoc3RydWN0IG5mX2Nvbm5fYWNjdCksXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYzozNzojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTM4LVx0W05GX0NUX0VYVF9FQ0FDSEVdID0gc2l6ZW9mKHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlKSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYz01Nz1zdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCB0b3RhbF9leHRlbnNpb25fc2l6ZSh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTY4LVx0XHQmIzQzOyBzaXplb2Yoc3RydWN0IG5mX2Nvbm5fYWNjdClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jOjY5OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtNzAtXHRcdCYjNDM7IHNpemVvZihzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU3PXN0YXRpYyBpbnQgY3RuZXRsaW5rX2R1bXBfc2VjY3R4KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODYtc3RhdGljIGludFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz02NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGN0YV9pcF9ubGFfcG9saWN5W0NUQV9JUF9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTY1MC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzo2NTE6I2lmIGRlZmluZWQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1QpIHx8IGRlZmluZWQoQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtNjUyLXN0YXRpYyBzaXplX3QgY3RuZXRsaW5rX3Byb3RvX3NpemUoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz02OTY9c3RhdGljIGlubGluZSBzaXplX3QgY3RuZXRsaW5rX3RpbWVzdGFtcF9zaXplKGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtNzA3LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjcwODojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy03MDktc3RhdGljIHNpemVfdCBjdG5ldGxpbmtfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTc0ND1jdG5ldGxpbmtfY29ubnRyYWNrX2V2ZW50KHVuc2lnbmVkIGludCBldmVudHMsIGNvbnN0IHN0cnVjdCBuZl9jdF9ldmVudCAqaXRlbSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtODgyLX1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzo4ODM6I2VuZGlmIC8qIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtODg0LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xNjY2PXN0YXRpYyBpbnQgY3RuZXRsaW5rX2dldF9jb25udHJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTcyOS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxNzMwOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3MzEtc3RhdGljIGludCBjdG5ldGxpbmtfZHVtcF9vbmVfZW50cnkoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MTc3Nj1jdG5ldGxpbmtfZHVtcF9keWluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3NzgtXHRzdHJ1Y3QgY3RuZXRsaW5rX2xpc3RfZHVtcF9jdHggKmN0eCA9ICh2b2lkICopY2ItXHUwMDNlY3R4O1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE3Nzk6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMTc4MC1cdGNvbnN0IHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3OTEtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MTc5MjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xNzkzLVx0ZWNhY2hlX25ldCA9IG5mX2Nvbm5fcGVybmV0X2VjYWNoZShuZXQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zMDY2PWN0bmV0bGlua19leHBfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBwb3J0aWQsIHUzMiBzZXEsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTMwODktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzA5MDojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDkxLXN0YXRpYyBpbnRcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mzc0Mj1zdGF0aWMgaW50IGN0bmV0bGlua19zdGF0X2V4cF9jcHUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzc1NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozNzU2OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NTctc3RhdGljIHN0cnVjdCBuZl9jdF9ldmVudF9ub3RpZmllciBjdG5sX25vdGlmaWVyID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zODQ5PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBjdG5ldGxpbmtfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NTAte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTE6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg1Mi1cdG5mX2Nvbm50cmFja19yZWdpc3Rlcl9ub3RpZmllcihuZXQsIFx1MDAyNmN0bmxfbm90aWZpZXIpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zODU3PXN0YXRpYyB2b2lkIGN0bmV0bGlua19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NTgte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTk6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg2MC1cdG5mX2Nvbm50cmFja191bnJlZ2lzdGVyX25vdGlmaWVyKG5ldCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jPTU4NT1lbnVtIG5mX2N0X3N5c2N0bF9pbmRleCB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jLTU5Mi1cdE5GX1NZU0NUTF9DVF9BQ0NULFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jOjU5MzojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy01OTQtXHRORl9TWVNDVExfQ1RfRVZFTlRTLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYz02NDI9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmZfY3Rfc3lzY3RsX3RhYmxlW10gPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jLTY5OC1cdH0sXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM6Njk5OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jLTcwMC1cdFtORl9TWVNDVExfQ1RfRVZFTlRTXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM9MTAwMz1zdGF0aWMgaW50IG5mX2Nvbm50cmFja19zdGFuZGFsb25lX2luaXRfc3lzY3RsKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtMTAxOS1cdHRhYmxlW05GX1NZU0NUTF9DVF9BQ0NUXS5kYXRhID0gXHUwMDI2bmV0LVx1MDAzZWN0LnN5c2N0bF9hY2N0O1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jOjEwMjA6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtMTAyMS1cdHRhYmxlW05GX1NZU0NUTF9DVF9FVkVOVFNdLmRhdGEgPSBcdTAwMjZuZXQtXHUwMDNlY3Quc3lzY3RsX2V2ZW50cztcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jPTQ0PXN0YXRpYyB1bnNpZ25lZCBpbnQgbmZuZXRsaW5rX3Blcm5ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy00NS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM6NDY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTQ3LXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobmZubF9ncnBfYWN0aXZlX2xvY2spO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM9NjcwPXN0YXRpYyB2b2lkIG5mbmV0bGlua19iaW5kX2V2ZW50KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGdyb3VwKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy02NzEte1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYzo2NzI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTY3My1cdGludCB0eXBlLCBncm91cF9iaXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYz03Mjg9c3RhdGljIHZvaWQgbmZuZXRsaW5rX3VuYmluZChzdHJ1Y3QgbmV0ICpuZXQsIGludCBncm91cClcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNzI5LXtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM6NzMwOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy03MzEtXHRpbnQgdHlwZSwgZ3JvdXBfYml0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9Mjc0PXN0YXRpYyB2b2lkIG5mdF9jdF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMTQtI2VuZGlmXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMxNTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzE2LVx0Y2FzZSBORlRfQ1RfRVZFTlRNQVNLOiB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz01NTc9c3RhdGljIGludCBuZnRfY3Rfc2V0X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU5Ni0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTk3OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy01OTgtXHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWc9NjQ9Q09ORklHX05GX0NPTk5UUkFDSz1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzo2NTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZy02Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyODQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIE5ldHdvcmsgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgdG91Y2hpbmcgcXVpdGUgYSBmZXcgZmlsZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBuZl9jb25udHJhY2tgIGFuZCBgbmZfbmF0YCBzdWJzeXN0ZW1zLiBUaGUgY2hhbmdlcyBzZWVtIGNlbnRlcmVkIGFyb3VuZCBzcGVjaWZpYyBwcm90b2NvbHM6IEFtYW5kYSwgRlRQLCBJUkMsIGFuZCBURlRQLCBhcyB3ZWxsIGFzIHNvbWUgbW9yZSBnZW5lcmFsIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBmdW5jdGlvbmFsaXRpZXMuIFRoZSBsaXN0IGlzIGV4dGVuc2l2ZTogYG5mX2Nvbm50cmFja19hbWFuZGEuY2AsIGBuZl9jb25udHJhY2tfZnRwLmNgLCBgbmZfY29ubnRyYWNrX2lyYy5jYCwgYW5kIGBuZl9jb25udHJhY2tfdGZ0cC5jYCwgZm9sbG93ZWQgYnkgYG5mX2Nvbm50cmFja19icm9hZGNhc3QuY2AsIGBuZl9jb25udHJhY2tfbmV0bGluay5jYCwgYG5mX2Nvbm50cmFja19lY2FjaGUuY2AsIGBuZl9jb25udHJhY2tfZXhwZWN0LmNgLCB0aGVuIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2Z0cC5jYCwgYG5mX25hdF9pcmMuY2AsIGFuZCBgbmZfbmF0X3RmdHAuY2AuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgcGF0Y2ggaXMgZWl0aGVyIGVuaGFuY2luZyBvciBmaXhpbmcgaW50ZXJhY3Rpb25zIHdpdGggdGhlc2Ugc3BlY2lmaWMgcHJvdG9jb2xzLCBsaWtlbHkgaGFuZGxpbmcgdGhlaXIgY29ubmVjdGlvbiB0cmFja2luZyBvciBOQVQgdHJhdmVyc2FsIG1vcmUgZWZmZWN0aXZlbHkuCgpJIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIGFyZSBlbmFibGVkLiBUaGUgcmVxdWlyZWQgY29uZmlncyB3b3VsZCBiZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYE5GX0NUX05FVExJTktgLCBgTkZfTkFUX0FNQU5EQWAsIGBORl9OQVRfRlRQYCwgYE5GX05BVF9JUkNgLCBhbmQgYE5GX05BVF9URlRQYC4KCkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpZiBgTkZfTkFUX0FNQU5EQWAgaXMgcmVhbGx5IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX05BVF9BTUFOREEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQwNz1jb25maWcgTkZfTkFUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MTY6Y29uZmlnIE5GX05BVF9BTUFOREFcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9Njk9ZW5kaWZcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTcxLSMgTkFUIGhlbHBlcnNcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NzI6b2JqLSQoQ09ORklHX05GX05BVF9BTUFOREEpICYjNDM7PSBuZl9uYXRfYW1hbmRhLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNzMtb2JqLSQoQ09ORklHX05GX05BVF9GVFApICYjNDM7PSBuZl9uYXRfZnRwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTExNAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBNb2R1bGUgQ2hlY2sqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZywgJiMzNDtZZXAsIEkga25vdyB0aG9zZSBOQVQgbW9kdWxlcywgYE5GX05BVF9BTUFOREFgLCBgTkZfTkFUX0ZUUGAsIGBORl9OQVRfSVJDYCwgYW5kIGBORl9OQVRfVEZUUGAgYXJlIGRlZmluaXRlbHkgYXJvdW5kLiBUaGV5JiMzOTtyZSBwcmV0dHkgc3RhbmRhcmQgaW5jbHVzaW9ucywgZXNwZWNpYWxseSBmb3IgYW55b25lIGRlYWxpbmcgd2l0aCBsZWdhY3kgcHJvdG9jb2xzIG9yIHNwZWNpZmljIGFwcGxpY2F0aW9uIGxheWVyIGdhdGV3YXlzLiYjMzQ7IE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgdGhhdCB0aGUgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIG1vZHVsZSBpcyBsb2FkZWQuIFRoYXQmIzM5O3MgYW4gaW1wb3J0YW50IG9uZSBhbmQgSSB3YW50IHRvIHZlcmlmeSBpdHMgZXhpc3RlbmNlLiBHb3R0YSBiZSBzeXN0ZW1hdGljIGFib3V0IHRoZXNlIHRoaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORl9DT05OVFJBQ0tfQlJPQURDQVNUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yNTg9Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjczLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3NDpjb25maWcgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTI3Nz1jb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXHR0cmlzdGF0ZSBcJiMzNDtOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc5Olx0c2VsZWN0IE5GX0NPTk5UUkFDS19CUk9BRENBU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yODAtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTI5Nj1jb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk4LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyOTk6XHRzZWxlY3QgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMwMC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTQ3PW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfSVJDKSAmIzQzOz0gbmZfY29ubnRyYWNrX2lyYy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfQlJPQURDQVNUKSAmIzQzOz0gbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTQ5LW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfTkVUQklPU19OUykgJiM0Mzs9IG5mX2Nvbm50cmFja19uZXRiaW9zX25zLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTcwNQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29ubnRyYWNrIEhlbHBlciBGdW5jdGlvbnMqKgoKT2theSwgaXQgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyBwcmVzZW50IHRoYXQgcmVxdWlyZXMgbXkgYXR0ZW50aW9uLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmb2N1cyBzeW1ib2xzLiBGaXJzdCwgSSBuZWVkIHRvIGxpc3QgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBzZWUgd2hhdCB0aGV5JiMzOTtyZSBkb2luZy4gTGV0JiMzOTtzIHNlZS4uLgoKSSBoYXZlOgoqICAgYGFtYW5kYV9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmNgCiogICBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgCiogICBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jYAoqICAgYG5mX2N0X2V4cGVjdF9pbml0YCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNgCiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jYCB3aGljaCwgd2FpdCwgaXMgdGhhdCAqcmVhbGx5KiBqdXN0IGBoZWxwYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhY2N1cmF0ZSwgcGVyaGFwcyBpdCYjMzk7cyB1c2luZyB0aGUgaGVscGVyIGBmdHBfaGVscGA/CiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jYCAtIHNhbWUgdGhpbmcgaGVyZSwgY291bGQgYmUgbW9yZSBzcGVjaWZpYwoqICAgYGN0bmV0bGlua19hbGxvY19leHBlY3RgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgCiogICBgdGZ0cF9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jYAoqICAgYGhlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY2AgLSBhaCwgdGhlcmUgYXJlIE5BVCBoZWxwZXJzIGFzIHdlbGwKKiAgIGBuZl9uYXRfZnRwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmNgIC0gYSBuYXQgZnVuY3Rpb24gaGVyZSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZwoqICAgYGhlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuY2AgLSBhbmQgYW5vdGhlciBgaGVscGAgZnVuY3Rpb24uCiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuY2AgLSBhbmQgdGhpcyBhcyB3ZWxsLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbmZfY29ubnRyYWNrX2Z0cC5jYCwgYG5mX2Nvbm50cmFja19pcmMuY2AsIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2lyYy5jYCwgYW5kIGBuZl9uYXRfdGZ0cC5jYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGdlbmVyaWMgYGhlbHBgIGZ1bmN0aW9ucyBhcmUgbm90IG1hc2tpbmcgYW55IGRlZXBlciwgbW9yZSBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5LCBhbmQgSSBzaG91bGQgYWxzbyBnZXQgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlc2UgaGVscGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgaGVscFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jPTMzNj1zdGF0aWMgdm9pZCB1cGRhdGVfbmxfc2VxKHN0cnVjdCBuZl9jb25uICpjdCwgdTMyIG5sX3NlcSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYy0zNjAtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYzozNjE6c3RhdGljIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYy0zNjItXHRcdHVuc2lnbmVkIGludCBwcm90b2ZmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjgzMQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYGhlbHBgIEZ1bmN0aW9ucyBmb3IgU3l6a2FsbGVyIENvdmVyYWdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UgY2FuIGxldmVyYWdlIHRoZXNlIGBoZWxwYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgU3l6a2FsbGVyJiMzOTtzIGNvdmVyYWdlIG1lY2hhbmlzbS4gVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYGhlbHBgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGNvdWxkIHBvdGVudGlhbGx5IHByZXNlbnQgYSBuYW1pbmcgY29uZmxpY3QgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGZ1bmN0aW9ucyB3aXRoIHRoYXQgbmFtZSwgbWFraW5nIGRpcmVjdCB0YXJnZXRpbmcgZGlmZmljdWx0LiBIb3dldmVyLCBTeXprYWxsZXIgdXNlcyBQQyBhZGRyZXNzZXMgZm9yIGl0cyBjb3ZlcmFnZSBhbmFseXNpcywgc28gdGhhdCBwYXJ0aWN1bGFyIGlzc3VlIGlzbiYjMzk7dCBhIHByb2JsZW0uCgpGb3IgdGhlIGBGb2N1c1N5bWJvbHNgIGNvbXBvbmVudCwgd2UmIzM5O3ZlIGdvdCBvcHRpb25zOiB3ZSBjYW4gcHJvdmlkZSBhbGwgZXhwb3J0ZWQgZnVuY3Rpb25zIChzdGF0aWMgYW5kIG5vbi1zdGF0aWMpLCBvciBqdXN0IHRoZSBzdGF0aWMgb25lcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxpc3QgdGhlbSBhbmQgZXZhbHVhdGUuIExldCYjMzk7cyBzZWUuLi4gd2UgaGF2ZTogYGFtYW5kYV9oZWxwYCwgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYGN0bmV0bGlua19hbGxvY19leHBlY3RgLCBgdGZ0cF9oZWxwYCwgYW5kIGBuZl9uYXRfZnRwYC4KCkZvciB0aGVzZSBzdGF0aWMgYGhlbHBgIGZ1bmN0aW9ucywgd2UgaGF2ZSB0aGUgb3B0aW9uIG9mIGVpdGhlciBpbmNsdWRpbmcgdGhlbSBvciBvbWl0dGluZyB0aGVtIGZyb20gdGhlIGZvY3VzIHN5bWJvbHMuIEl0IHNlZW1zIGJldHRlciB0byBpbmNsdWRlIHRob3NlIHdpdGggdW5pcXVlIG5hbWVzLCBzaW5jZSB0aG9zZSBhcmUgY2xlYXJseSBkaXN0aW5ndWlzaGFibGUuCgpOb3csIHdhaXQgYSBtb21lbnQsIHRoaW5raW5nIHRocm91Z2ggdGhpcy4uLiBsZXQmIzM5O3MgaWRlbnRpZnkgc29tZSB0YXJnZXRzOiBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAgbG9va3MgbGlrZSBhIHNvbGlkIGNob2ljZS4gQWxzbywgYG5mX2N0X2V4cGVjdF9pbml0YCwgYW5kIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCBsb29rIGdvb2QsIHRvby4gT2gsIGFuZCBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCwgYGFtYW5kYV9oZWxwYCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAgYWxzby4KCkkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgaWYgYG5mX25hdF9hbWFuZGFgIGlzIHVuaXF1ZWx5IG5hbWVkOyBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byB2ZXJpZnkgdGhlc2UgdGhpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIHVuc2lnbmVkIGludCBoZWxwXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmM9MjU9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2FtYW5kYSA9XG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtMjctXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzoyODpzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTI5LVx0XHRcdCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3Njc4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCBhbiBleHBlcnQmIzM5O3MgbWluZDoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIFRyb3VibGVzaG9vdGluZyBEaXJlY3RpdmUqKgoKUmlnaHQsIGl0IGJvaWxzIGRvd24gdG8gc29tZXRoaW5nIHN0cmFpZ2h0Zm9yd2FyZDogKmhlbHAqLiBJIG5lZWQgdG8gZmlndXJlIHRoaXMgb3V0LCB3aGljaCBtZWFucyBJJiMzOTttIGxvb2tpbmcgZm9yIGd1aWRhbmNlIG9yIGEgc29sdXRpb24uIEl0JiMzOTtzIGEgdHJvdWJsZXNob290aW5nIHNpdHVhdGlvbiwgcHJvYmFibHkgZGVhbGluZyB3aXRoIE5BVCAoTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uKS4KCkdpdmVuIHRoZSBjb250ZXh0LCB0aGUgaW1tZWRpYXRlbHkgcmVsZXZhbnQgYXJlYXMgYXJlIGxpa2VseSB0aGUga2VybmVsIG1vZHVsZXMgaGFuZGxpbmcgSVJDIGFuZCBURlRQIE5BVCBzcGVjaWZpY2FsbHkuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRob3NlIG1vZHVsZXMsIGBuZl9uYXRfaXJjLmNgIGFuZCBgbmZfbmF0X3RmdHAuY2AsIGhhbmRsZSB0aGVpciByZXNwZWN0aXZlIHByb3RvY29scyB3aXRoaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcmsuIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhleSBpbnRlcmNlcHQsIHRyYW5zbGF0ZSwgYW5kIGZvcndhcmQgcGFja2V0cyB0byBzZWUgaWYgSSBjYW4gZmluZCB0aGUgcm9vdCBjYXVzZSBvZiB3aGF0ZXZlciBpcyBnb2luZyB3cm9uZy4gUGVyaGFwcyB0aGVyZSBhcmUgc29tZSBlZGdlIGNhc2VzIEkmIzM5O20gb3Zlcmxvb2tpbmcgaW4gdGhlaXIgbG9naWMuIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgdW5zaWduZWQgaW50IGhlbHBcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYz0yOT1zdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19uYXRfaGVscGVyIG5hdF9oZWxwZXJfaXJjID1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYy0zMS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jOjMyOnN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMtMzMtXHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwNTcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyB0aG91Z2h0IHByb2Nlc3M6CgoqKlJldmlld2luZyBhbmQgVmFsaWRhdGluZyBGdW5jdGlvbiBOYW1pbmcqKgoKQWxyaWdodCwgc28gaXQmIzM5O3MgYWxsIGFib3V0IGNoZWNraW5nIHRoZXNlIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IHRoZSAmIzM5O2hlbHAmIzM5OyBmdW5jdGlvbnMuIFRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgc3RyYWlnaHRmb3J3YXJkLCB0aGVzZSBzeW1ib2xzIGFyZSBpbmRlZWQgcmVsYXRlZCB0byBoZWxwIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O3ZlIGdvdCB0aGlzIGxpc3Qgb2YgZm9jdXMgc3ltYm9sczogYGFtYW5kYV9oZWxwYCwgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYGN0bmV0bGlua19hbGxvY19leHBlY3RgLCBgdGZ0cF9oZWxwYCwgYW5kIGBuZl9uYXRfZnRwYC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdXNpbmcgdGhlIHJpZ2h0IG5hbWUgZm9yIHRoYXQgbGFzdCBvbmUsIGBuZl9uYXRfZnRwYC4gVGhhdCBzb3VuZHMgZmFtaWxpYXIgYnV0IGJlc3QgdG8gY29uZmlybSBiZWZvcmUgcHJvY2VlZGluZy4gVGltZSB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBvZiBgbmZfbmF0X2Z0cGAuIEkmIzM5O20gYSBzdGlja2xlciBmb3IgYWNjdXJhY3kgYW5kIHRoaXMgd2lsbCBsaWtlbHkgYmUgaW1wb3J0YW50IGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmM9MzM9c3RhdGljIGludCBuZl9uYXRfZnRwX2ZtdF9jbWQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmMtNjItICAgTWFuZ2xlIGl0LCBhbmQgY2hhbmdlIHRoZSBleHBlY3RhdGlvbiB0byBtYXRjaCB0aGUgbmV3IHZlcnNpb24uICovXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYzo2MzpzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jLTY0LVx0XHRcdCAgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTQ5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgbmZfbmF0X2Z0cGAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBgbmZfbmF0X2Z0cGAuIE5vdywgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlc2UgYXJlIGVuYWJsZWQ6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgLCBgTkZfQ1RfTkVUTElOS2AsIGBORl9OQVRfQU1BTkRBYCwgYE5GX05BVF9GVFBgLCBgTkZfTkFUX0lSQ2AsIGFuZCBgTkZfTkFUX1RGVFBgLgoKV2FpdCBhIG1pbnV0ZSwgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIGlzIGEgdHJpc3RhdGUgY29uZmlnLiBUaGF0IG1lYW5zIGl0IGNhbiBiZSBvbiwgb2ZmLCBvciBtb2R1bGFyLiBCdXQgaXQgc2VlbXMgdG8gYmUgc2VsZWN0ZWQgaW5kaXJlY3RseSBieSBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgLiBJZGVhbGx5LCBJJiMzOTtkIHdhbnQgdG8gZW5hYmxlIGl0IGRpcmVjdGx5IGlmIEkgY2FuLCBvciwgaWYgbm90LCBJJiMzOTtkIGNob29zZSB0aGUgb25lcyB0aGF0IHNlbGVjdCBpdC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIHNlZSBpZiBJIGNhbiBlbmFibGUgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIGRpcmVjdGx5LiBBbHJpZ2h0LCBoZXJlJiMzOTtzIHRoZSByZWxldmFudCBzZWN0aW9uOgoKYGBgCmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUCgl0cmlzdGF0ZQpgYGAKCkFoLCBpdCBoYXMgbm8gcHJvbXB0LiBUaGF0IG1lYW5zIHRoZSB1c2VyIGNhbiYjMzk7dCBzZWxlY3QgaXQgZGlyZWN0bHkuIFNvLCB0aGUgYmVzdCBhcHByb2FjaCBoZXJlIGlzIHRvIGdvIHdpdGggZW5hYmxpbmcgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCBhbmQgYE5GX0NPTk5UUkFDS19TTk1QYCBpbnN0ZWFkLiBUaGV5JiMzOTtsbCBwdWxsIGl0IGluIGF1dG9tYXRpY2FsbHkuIFRoYXQmIzM5O3MgdGhlIGNsZWFuZXIgc29sdXRpb24sIGtlZXBpbmcgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGEgaGlkZGVuIGNvbmZpZyBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mjc0PWNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzc6Y29uZmlnIE5GX0NPTk5UUkFDS19ORVRCSU9TX05TXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0QklPUyBuYW1lIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM1MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gUmV2aWV3KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGluY29ycG9yYXRlIGEgY291cGxlIG9mIG5ldyBjb25uZWN0aW9uIHRyYWNraW5nIG9wdGlvbnMgaW50byB0aGUgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGFkZGluZyBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgIHRvIHRoZSBsaXN0LiBUaGV5IHNlZW0gcmVsZXZhbnQgdG8gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLCBhbmQgSSB3YW50IHRvIGJlIGNvbXByZWhlbnNpdmUuCgpOb3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHNvbWV0aGluZy4gSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgYE5GX0NPTk5UUkFDS19FVkVOVFNgIG9wdGlvbiB0byBzZWUgaWYgaXQmIzM5O3Mgc2V0IHVwIHdpdGggYSBwcm9tcHQuIEFoLCBnb29kLiBZZXMsIGl0IGhhcyBhIGJvb2xlYW4gcHJvbXB0LiBUaGlzIGlzIGltcG9ydGFudCBmb3IgdXNlciBjdXN0b21pemF0aW9uIGluIGEgd2F5IEkgZXhwZWN0LgoKT2theSwgbmV4dCB1cCBpcyBgTkZfQ1RfTkVUTElOS2AuIE5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DVF9ORVRMSU5LJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zNTU9Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM2NS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjY6Y29uZmlnIE5GX0NUX05FVExJTktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjctXHR0cmlzdGF0ZSAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgbmV0bGluayBpbnRlcmZhY2UmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzczOmNvbmZpZyBORl9DVF9ORVRMSU5LX1RJTUVPVVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzQtXHR0cmlzdGF0ZSAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM4NTpjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODYtXHR0cmlzdGF0ZSAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycyBpbiB1c2VyLXNwYWNlIHZpYSBOZXRsaW5rJiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQXNzZXNzaW5nIHRoZSBMYW5kc2NhcGUqKgoKQWxyaWdodCwgd2UmIzM5O3ZlIGdvdCBhIHByb21wdCB0byB3b3JrIHdpdGgsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIGdpdmVuIHRoZSBpbXBsaWVkIGNvbnRleHQgb2YgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpLCBhbmQgdGhlIHNwZWNpZmljIGZvY3VzIG9uIHNvbWUgd2VsbC1rbm93biBhcHBsaWNhdGlvbiBsYXllciBwcm90b2NvbHMsIGxldCBtZSBxdWlja2x5IHJldmlldyB0aGVzZSBOQVQgbW9kdWxlczogYE5GX05BVF9BTUFOREFgLCBgTkZfTkFUX0ZUUGAsIGBORl9OQVRfSVJDYCwgYW5kIGBORl9OQVRfVEZUUGAuIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHdoYXQgdGhleSBkbywgaWYgdGhleSBhcmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBwcm9ibGVtIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIG1vcmUgZ2VuZXJhbCBOQVQgZnVuY3Rpb25hbGl0eSBvciBzb21lIG5ldHdvcmsgZmlsdGVyaW5nLCBzbyBJJiMzOTtsbCBjb25zaWRlciBob3cgdGhlc2UgYXJlIGFwcGxpZWQgYXMgd2VsbC4gVGhpcyBzZXRzIHRoZSBzdGFnZSBmb3IgYSBtb3JlIGZvY3VzZWQgYW5hbHlzaXMsIG5vdCBqdXN0IGEgc3VyZmFjZS1sZXZlbCByZXNwb25zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9BTUFOREEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQwNz1jb25maWcgTkZfTkFUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MTY6Y29uZmlnIE5GX05BVF9BTUFOREFcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE3MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBTZWxlY3Rpb24gTWVjaGFuaXNtIG9mIGBORl9OQVRfQU1BTkRBYCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyBpbml0aWFsIHByb21wdCBmb3IgYE5GX05BVF9BTUFOREFgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiAqaG93KiBpcyB0aGlzIHBhcnRpY3VsYXIgZW50aXR5IGJlaW5nIGNob3NlbiBvciB0cmlnZ2VyZWQ/IFNpbmNlIEkmIzM5O20gbm90IGdpdmVuIGFueSBjb250ZXh0LCBJJiMzOTtsbCBuZWVkIHRvIHJlY29uc3RydWN0IHRoZSBleGVjdXRpb24gcGF0aC4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRpcmVjdCBmdW5jdGlvbiBjYWxsLCBhbiBldmVudC1kcml2ZW4gYWN0aXZhdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gSSBuZWVkIHRvIGxvb2sgZm9yIGNsdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIOKAkyBjYWxscyB0byBzaW1pbGFyIGZ1bmN0aW9ucywgY29udGV4dC1kZXBlbmRlbnQgc2VsZWN0aW9uIGxvZ2ljLCBvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbiBwbGF5PyBJcyB0aGlzIHJlbGF0ZWQgdG8gc29tZSBicm9hZGVyIG5ldHdvcmtpbmcgYXJjaGl0ZWN0dXJlIG9yIGlzIGl0IHN0YW5kYWxvbmUuCgpFc3NlbnRpYWxseSwgd2l0aG91dCBhIHByb21wdCwgdGhlIHNlbGVjdGlvbiAqbWVjaGFuaXNtKiBpcyB0aGUgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBoZXJlLCBub3QgdGhlIG91dHB1dCBpdHNlbGYsIGFuZCBpdCBsaWtlbHkgaG9sZHMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvci4gTXkgbWluZCBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc2NlbmFyaW9zOiBJcyB0aGlzIHBhcnQgb2YgYSBydWxlLWJhc2VkIHN5c3RlbT8gQSBzdGF0ZSBtYWNoaW5lPyBPciBzb21ldGhpbmcgbW9yZSBhZCBob2M/IEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvbnRyb2wgZmxvdyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IHRoaXMgdGhpbmcgZ2V0cyBpbnN0YW50aWF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5GX05BVF9BTUFOREEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ3OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFbmFibGVtZW50IG9mIE5GX05BVF9BTUFOREEqKgoKT2theSwgc28gSSBzZWUgYE5GX05BVF9BTUFOREFgIGlzIGVuYWJsZWQgc29tZXdoZXJlLCBidXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKmhvdyouIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgTmV0ZmlsdGVyIG9wdGlvbnMgYXJlIGRlZmluZWQsIHNvIGl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBvciByZWxhdGlvbnNoaXBzIHRoYXQgbWlnaHQgYmUgZW5hYmxpbmcgYE5GX05BVF9BTUFOREFgLiBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoYXQgcGFydGljdWxhciBzeW1ib2wgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEl0JiMzOTtzIGxpa2VseSBnb2luZyB0byBiZSBjb25kaXRpb25hbCBiYXNlZCBvbiBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZmVhdHVyZXMuIEnigJlsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cyBvciBhbnkgb3RoZXIgbG9naWMgdGhhdCBkZXRlcm1pbmVzIGl0cyBpbmNsdXNpb24gaW4gdGhlIGtlcm5lbCBidWlsZC4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQxMDpcdFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4gNDExOlx0XHRoZWxwXG4gNDEyOlx0XHQgIFRoZSBOQVQgb3B0aW9uIGFsbG93cyBtYXNxdWVyYWRpbmcsIHBvcnQgZm9yd2FyZGluZyBhbmQgb3RoZXJcbiA0MTM6XHRcdCAgZm9ybXMgb2YgZnVsbCBOZXR3b3JrIEFkZHJlc3MgUG9ydCBUcmFuc2xhdGlvbi4gVGhpcyBjYW4gYmVcbiA0MTQ6XHRcdCAgY29udHJvbGxlZCBieSBpcHRhYmxlcywgaXA2dGFibGVzIG9yIG5mdC5cbiA0MTU6XHRcbiA0MTY6XHRjb25maWcgTkZfTkFUX0FNQU5EQVxuIDQxNzpcdFx0dHJpc3RhdGVcbiA0MTg6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9OQVRcbiA0MTk6XHRcdGRlZmF1bHQgTkZfTkFUIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfQU1BTkRBXG4gNDIwOlx0XG4gNDIxOlx0Y29uZmlnIE5GX05BVF9GVFBcbiA0MjI6XHRcdHRyaXN0YXRlXG4gNDIzOlx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUXG4gNDI0Olx0XHRkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX0ZUUFxuIDQyNTpcdFxuIDQyNjpcdGNvbmZpZyBORl9OQVRfSVJDXG4gNDI3Olx0XHR0cmlzdGF0ZVxuIDQyODpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVFxuIDQyOTpcdFx0ZGVmYXVsdCBORl9OQVQgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19JUkNcbiA0MzA6XHRcbiA0MzE6XHRjb25maWcgTkZfTkFUX1NJUFxuIDQzMjpcdFx0dHJpc3RhdGVcbiA0MzM6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9OQVRcbiA0MzQ6XHRcdGRlZmF1bHQgTkZfTkFUIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfU0lQXG4gNDM1Olx0XG4gNDM2Olx0Y29uZmlnIE5GX05BVF9URlRQXG4gNDM3Olx0XHR0cmlzdGF0ZVxuIDQzODpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVFxuIDQzOTpcdFx0ZGVmYXVsdCBORl9OQVQgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19URlRQXG4gNDQwOlx0XG4gNDQxOlx0Y29uZmlnIE5GX05BVF9SRURJUkVDVFxuIDQ0MjpcdFx0Ym9vbFxuIDQ0MzpcdFxuIDQ0NDpcdGNvbmZpZyBORl9OQVRfTUFTUVVFUkFERVxuIDQ0NTpcdFx0Ym9vbFxuIDQ0NjpcdFxuIDQ0NzpcdGNvbmZpZyBORl9OQVRfT1ZTXG4gNDQ4Olx0XHRib29sXG4gNDQ5Olx0XG4gNDUwOlx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxuIDQ1MTpcdFx0dHJpc3RhdGVcbiA0NTI6XHRcbiA0NTM6XHRlbmRpZiAjIE5GX0NPTk5UUkFDS1xuIDQ1NDpcdFxuIDQ1NTpcdGNvbmZpZyBORl9UQUJMRVNcbiA0NTY6XHRcdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuIDQ1NzpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiA0NTg6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFwmIzM0O1xuIDQ1OTpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM2NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgbG9naWNhbGx5OgoKKipFbmFibGluZyBOQVQgU3VwcG9ydCBmb3IgU3BlY2lmaWMgUHJvdG9jb2xzKioKClJpZ2h0LCBzbywgaWYgSSYjMzk7bSB1bmRlcnN0YW5kaW5nIHRoaXMgY29ycmVjdGx5LCB0aGUgYmFzaWMgTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIChOQVQpIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGBORl9OQVRgIGJlaW5nIGFjdGl2ZS4gQW5kLCBvZiBjb3Vyc2UsIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gdHJhY2tpbmcgcGllY2VzIChgTkZfQ09OTlRSQUNLXypgKSBuZWVkIHRvIGJlIGVuYWJsZWQgYXMgd2VsbCwgc2luY2UgTkFUIHJlbGllcyBvbiB0aGF0LiBUaGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uLgoKVGhlcmVmb3JlLCBmb3Igc3BlY2lmaWMgcHJvdG9jb2wgc3VwcG9ydCwgSSBuZWVkIHRvIGVuYWJsZSBhIGZldyBrZXkgbW9kdWxlcy4gSSBzaG91bGQgZW5hYmxlIGBORl9OQVRgLCBvZiBjb3Vyc2UsIGFuZCB0aGVuIGV4cGxpY2l0bHkgZW5hYmxlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlcyBmb3IgdGhlIHByb3RvY29scyBJJiMzOTttIGludGVyZXN0ZWQgaW46IHNwZWNpZmljYWxseSwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYW5kIGBORl9DT05OVFJBQ0tfVEZUUGAuIFRoYXQgc2hvdWxkIGNvdmVyIHRoZSBjcnVjaWFsIG9uZXMgZm9yIHRoaXMgdXNlIGNhc2UuCgpOb3csIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgYE5GX05BVGAgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uIHdpdGggYSBwcm9tcHQuIEFoIHllcywgSSByZW1lbWJlciB0aGF0IGBjb25maWcgTkZfTkFUYCBpbmRlZWQgaGFzIGEgcHJvbXB0LCB1c3VhbGx5IHNvbWV0aGluZyBhbG9uZyB0aGUgbGluZXMgb2YgJiMzNDtOZXR3b3JrIGFkZHJlc3MgdHJhbnNsYXRpb24gc3VwcG9ydCYjMzQ7IG9yIGEgc2ltaWxhciBwaHJhc2luZy4gVGhpcyBjb25maXJtcyBpdCYjMzk7cyBhIHNlbGVjdGFibGUgb3B0aW9uLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGZsZXhpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0XHRkZWZhdWx0IG5cbiA0MDE6XHRcdGRlcGVuZHMgb24gKE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIHx8IE5FVEZJTFRFUl9ORVRMSU5LX0xPRykgXHUwMDI2XHUwMDI2IE5GX0NUX05FVExJTktcbiA0MDI6XHRcdGhlbHBcbiA0MDM6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgTkZRVUVVRSBhbmQgTkZMT0cgY2FuIGluY2x1ZGVcbiA0MDQ6XHRcdCAgQ29ubmVjdGlvbiBUcmFja2luZyBpbmZvcm1hdGlvbiB0b2dldGhlciB3aXRoIHRoZSBwYWNrZXQgaXNcbiA0MDU6XHRcdCAgdGhlIGVucXVldWVkIHZpYSBORk5FVExJTksuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIE5GX05BVFxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4gNDEwOlx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiA0MTE6XHRcdGhlbHBcbiA0MTI6XHRcdCAgVGhlIE5BVCBvcHRpb24gYWxsb3dzIG1hc3F1ZXJhZGluZywgcG9ydCBmb3J3YXJkaW5nIGFuZCBvdGhlclxuIDQxMzpcdFx0ICBmb3JtcyBvZiBmdWxsIE5ldHdvcmsgQWRkcmVzcyBQb3J0IFRyYW5zbGF0aW9uLiBUaGlzIGNhbiBiZVxuIDQxNDpcdFx0ICBjb250cm9sbGVkIGJ5IGlwdGFibGVzLCBpcDZ0YWJsZXMgb3IgbmZ0LlxuIDQxNTpcdFxuIDQxNjpcdGNvbmZpZyBORl9OQVRfQU1BTkRBXG4gNDE3Olx0XHR0cmlzdGF0ZVxuIDQxODpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVFxuIDQxOTpcdFx0ZGVmYXVsdCBORl9OQVQgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19BTUFOREFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwODIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gKE5BVCkgYW5kIENvbm5lY3Rpb24gVHJhY2tpbmcgTW9kdWxlcyoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzIGNvbmZpcm1lZDogYE5GX05BVGAgZG9lcyBpbmRlZWQgaGF2ZSBhIHByb21wdCwgd2hpY2ggaXMgZ29vZC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBhbmQgaW50ZXJwbGF5IHdpdGggdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlcy4gSSYjMzk7bSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgaG93IHRoZXNlIGludGVyYWN0IGluIHNjZW5hcmlvcyB3aXRoIG1vcmUgc3BlY2lmaWMgcHJvdG9jb2xzLiBUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpbiBvbiBgTkZfQ09OTlRSQUNLX0FNQU5EQWAsIGBORl9DT05OVFJBQ0tfRlRQYCwgYE5GX0NPTk5UUkFDS19JUkNgLCBhbmQgYE5GX0NPTk5UUkFDS19URlRQYC4gSSB3YW50IHRvIHNlZSBpZiB0aGUgTkFUIHByb21wdHMgaGF2ZSBiZWVuIGludGVncmF0ZWQgdG8gd29yayB3aXRoIHRob3NlIGNvbm5lY3Rpb24gdHJhY2tlcnMuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlZXBlciBOQVQgYmVoYXZpb3IgaW4gdGhlc2UgbW9yZSBzcGVjaWFsaXplZCBwcm90b2NvbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQyNwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIHRoZXNlIHByb21wdHMsIHdoaWNoIEkgdW5kZXJzdGFuZC4gTXkgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSBuZWVkIHRvIGVuYWJsZS4gQmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIGF0IGhhbmQsIEkgYmVsaWV2ZSB3ZSBuZWVkIHRvIGVuYWJsZSB0aGUgZm9sbG93aW5nOiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AsIGBORl9DT05OVFJBQ0tfU05NUGAsIGBORl9DVF9ORVRMSU5LYCwgYW5kIGBORl9OQVRgLgoKQmVmb3JlIEkgbW92ZSBvbiwgSSB3YW50IHRvIGNvbmZpcm0gc29tZXRoaW5nIHRoYXQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AgYW5kIGBORl9DT05OVFJBQ0tfU05NUGAgYXJlICp0aGUgb25seSogb3B0aW9ucyB0cmlnZ2VyaW5nIHRoZSBzZWxlY3Rpb24gb2YgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgLiBUaGF0IGJpdCBvZiBpbmZvcm1hdGlvbiBpcyBrZXkgdG8gZW5zdXJpbmcgdGhhdCB3ZSBoYXZlIGEgbGVhbiwgd2VsbC1zdHJ1Y3R1cmVkIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORl9DT05OVFJBQ0tfQlJPQURDQVNUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yNzc9Y29uZmlnIE5GX0NPTk5UUkFDS19ORVRCSU9TX05TXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0QklPUyBuYW1lIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9LY29uZmlnOjI3OTpcdHNlbGVjdCBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjgwLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yOTY9Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5OC1cdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk5Olx0c2VsZWN0IE5GX0NPTk5UUkFDS19CUk9BRENBU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMDAtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTkxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhlIGN1cnJlbnQgZGlyZWN0aW9uIHNlZW1zIHNvdW5kLiBXZSYjMzk7cmUgZ29pbmcgdG8gaW5jbHVkZSBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgLiBNYWtlcyBwZXJmZWN0IHNlbnNlLgoKSG9sZCBvbiBhIHNlYy4uLiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AgaXMgYSBib29sZWFuLCByaWdodD8gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlLi4uCgpSaWdodCwgdGhlIHBhdGNoIGl0c2VsZiB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgbmZfY29ubnRyYWNrX2FtYW5kYS5jYCwgYG5mX2Nvbm50cmFja19mdHAuY2AsIGBuZl9jb25udHJhY2tfaXJjLmNgLCBgbmZfY29ubnRyYWNrX3RmdHAuY2AsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgLCBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGBuZl9jb25udHJhY2tfZWNhY2hlLmNgLCBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCwgYW5kIHRoZSBOQVQgY291bnRlcnBhcnRzIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2Z0cC5jYCwgYG5mX25hdF9pcmMuY2AsIGBuZl9uYXRfdGZ0cC5jYC4gQSBmYWlybHkgY29tcHJlaGVuc2l2ZSBzZXQgb2YgbW9kdWxlcy4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczogYGFtYW5kYV9oZWxwYCwgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYGN0bmV0bGlua19hbGxvY19leHBlY3RgLCBgdGZ0cF9oZWxwYCwgYW5kIGBuZl9uYXRfZnRwYC4gR290IGl0LgoKQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAgaXMgZXhwb3J0ZWQgYXMgYSBzeW1ib2wgb3IgaWYgaXQmIzM5O3Mgc3RhdGljLiBUaGF0JiMzOTtsbCBiZSBhIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGV2ZW50IHJlcG9ydGluZyBpcyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTM5PW5mX2Nvbm50cmFja19ldmVudChlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdClcbi0tXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0OC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTQ5OnZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGV2ZW50LFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNTAtXHRcdFx0ICAgICAgIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xNjA9c3RhdGljIGlubGluZSBib29sIG5mX2Nvbm50cmFja19lY2FjaGVfZHdvcmtfcGVuZGluZyhjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNjUtXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjE2NjpzdGF0aWMgaW5saW5lIHZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGUsXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE2Ny1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jPTIzOT1FWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9kZWxpdmVyX2NhY2hlZF9ldmVudHMpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMjQwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MjQxOnZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGV2ZW50LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMjQyLVx0XHRcdCAgICAgICBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDE1MwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBOb24tU3RhdGljIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIGRlZmluaXRlbHkgKmV4cG9ydGVkKiBvciBhdCBsZWFzdCBpc24mIzM5O3QgZGVjbGFyZWQgc3RhdGljLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBpbXBvcnRhbnQgb2JzZXJ2YXRpb24uIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBob3cgaXMgaXQgYmVpbmcgaW5pdGlhbGl6ZWQ/IFdlIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBpbnN0YW50aWF0aW9uIHByb2Nlc3MgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKR2l2ZW4gdGhhdCBjb250ZXh0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgbmZfY3RfZXhwZWN0X2luaXRgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQsIGNvbnNpZGVyaW5nIHRoZSBuYW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgKnRoYXQqIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCwgd2hhdCBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCwgYW5kIHRoZSBzY29wZSBvZiBpdHMgaW1wYWN0LiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgc3Vycm91bmRpbmcgZGF0YSBzdHJ1Y3R1cmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIG5mX2N0X2V4cGVjdF9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg9MTUzPXN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpuZl9jdF9leHBlY3RfYWxsb2Moc3RydWN0IG5mX2Nvbm4gKm1lKTtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTU0OnZvaWQgbmZfY3RfZXhwZWN0X2luaXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKiwgdW5zaWduZWQgaW50LCB1X2ludDhfdCxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmgtMTU1LVx0XHQgICAgICAgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICosXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM9MzE4PUVYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X2V4cGVjdF9hbGxvYyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtMzIzLSAqL1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM6MzI0OnZvaWQgbmZfY3RfZXhwZWN0X2luaXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCwgdW5zaWduZWQgaW50IGNsYXNzLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtMzI1LVx0XHQgICAgICAgdV9pbnQ4X3QgZmFtaWx5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYzNgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIHRoZSBEeW5hbWljIE5hdHVyZSoqCgpSaWdodCwgc28gdGhlIGNvbnRleHQgaXMgY3J1Y2lhbCBoZXJlLiBUaGUgc2l0dWF0aW9uIGF0IGhhbmQgY2xlYXJseSBpc24mIzM5O3Qgc3RhdGljLiBJdCYjMzk7cyBkeW5hbWljLCBjaGFuZ2luZywgZXZvbHZpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbHVpZGl0eSBvZiBpdCBhbGwsIHNvIEkgY2FuIHN0YXJ0IHRvIGJ1aWxkIGEgZ29vZCBtb2RlbCwgYW5kIHNvbHZlIHRoZSBwcm9ibGVtLgoKTGV0JiMzOTtzIG5vdCBvdmVyLWVuZ2luZWVyIHRoaXMuIEluc3RlYWQgb2YgYSBkZWVwIGRpdmUsIGxldCYjMzk7cyBqdXN0IG1ha2UgYSBzaW1wbGUgY2hlY2sgd2l0aCBhIHRhcmdldGVkIGFwcHJvYWNoIHRvIGdldCB0aGUgaGlnaC1sZXZlbCBwaWN0dXJlLCByaWdodD8gTGV0IG1lIHNlZS4uLiBJIHNob3VsZCBjaGVjayBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgdG8gZ2V0IGEgZ29vZCBiZWFyaW5nLiBGcm9tIHRoYXQsIEkgc2hvdWxkIGJlIGFibGUgdG8gZGVkdWNlIHRoZSBjb3JyZWN0IGNvdXJzZSBvZiBhY3Rpb24sIGFuZCBrbm93IHdoYXQgZnVydGhlciBpbmZvcm1hdGlvbiBpcyBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N0bmV0bGlua19hbGxvY19leHBlY3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI2MzA9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyNjMxOmN0bmV0bGlua19hbGxvY19leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNjMyLVx0XHQgICAgICAgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmFzc2lnbl9oZWxwZXIsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI4NTY9Y3RuZXRsaW5rX2dsdWVfYXR0YWNoX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI4ODctXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mjg4ODpcdGV4cCA9IGN0bmV0bGlua19hbGxvY19leHBlY3QoKGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCAqKWNkYSwgY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg4OS1cdFx0XHRcdCAgICAgYXNzaWduX2hlbHBlciwgXHUwMDI2dHVwbGUsIFx1MDAyNm1hc2spO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNTE5PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzUyMDpjdG5ldGxpbmtfYWxsb2NfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSwgc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM1MjEtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqYXNzaWduX2hlbHBlcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU5Nj1jdG5ldGxpbmtfY3JlYXRlX2V4cGVjdChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MjctXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYyODpcdGV4cCA9IGN0bmV0bGlua19hbGxvY19leHBlY3QoY2RhLCBjdCwgTlVMTCwgXHUwMDI2dHVwbGUsIFx1MDAyNm1hc2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MjktXHRpZiAoSVNfRVJSKGV4cCkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzODEKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYSBQb3RlbnRpYWwgU3l6a2FsbGVyIFRhcmdldCoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBzcGVjaWZpYyBwaWVjZSBvZiBjb2RlLCB3aGF0ZXZlciBpdCBpcywgcHJlc2VudHMgYSBzdGF0aWMgc3RhdGUsIHdoaWNoIGlzIGludHJpZ3VpbmcuIFN0YXRpYyB1c3VhbGx5IG1lYW5zIGVhc2llciB0byBhbmFseXplLCBpbiBhIHdheSwgYnV0IGFsc28gcG90ZW50aWFsbHkgYSBsZXNzIGR5bmFtaWMgYXR0YWNrIHN1cmZhY2UuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyICpjYW4qIHRhcmdldCBpdCBpcyB0aGUgcmVhbCBraWNrZXIuIFRoYXQgbWVhbnMgdGhlcmUmIzM5O3Mgc29tZSBpbnRlcmFjdGlvbiBwb3NzaWJsZSwgd2hpY2ggaW1tZWRpYXRlbHkgZWxldmF0ZXMgaXRzIHJlbGV2YW5jZS4gR2l2ZW4gc3l6a2FsbGVy4oCZcyBmb2N1cyBvbiBkZXRlY3RpbmcgYW5kIGV4cGxvaXRpbmcgYnVncywgdGhpcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYC4gVGhhdCBmdW5jdGlvbiYjMzk7cyBuYW1lIGhpbnRzIGF0IGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3Qg4oCTIG5ldHdvcmsgY29ubmVjdGlvbiB0cmFja2luZywgYnJvYWRjYXN0IGhhbmRsaW5nLCBhbmQgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxsIHBvdGVudGlhbCBhcmVhcyByaXBlIGZvciB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgcmFjZSBjb25kaXRpb25zIG9yIGJ1ZmZlciBvdmVyZmxvd3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHVzZXItY29udHJvbGxlZCBkYXRhIG9yIG1hbGZvcm1lZCBwYWNrZXRzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5oPTE2Mj12b2lkIG5mX2Nvbm50cmFja19oZWxwZXJfZmluaSh2b2lkKTtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmgtMTYzLVxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oZWxwZXIuaDoxNjQ6aW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2hlbHBlci5oLTE2NS1cdFx0XHRcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTE4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM6MTk6aW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMtMjAtXHRcdFx0XHRzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMtOTQtfVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM6OTU6RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTk2LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGJpb3NfbnMuYz0zOT1zdGF0aWMgaW50IG5ldGJpb3NfbnNfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRiaW9zX25zLmMtNDIte1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0Ymlvc19ucy5jOjQzOlx0cmV0dXJuIG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChza2IsIGN0LCBjdGluZm8sIHRpbWVvdXQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0Ymlvc19ucy5jLTQ0LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zbm1wLmM9Mjk9c3RhdGljIGludCBzbm1wX2Nvbm50cmFja19oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NubXAuYy0zNC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NubXAuYzozNTpcdG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChza2IsIGN0LCBjdGluZm8sIHRpbWVvdXQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc25tcC5jLTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjIyOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk9wZXJhdGlvbmFsIENoZWNrIGFuZCBWYXJpYWJsZSBWYWxpZGF0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgZGF0YSYjMzk7cyBiZWVuIGV4cG9ydGVkLCB0aGF0JiMzOTtzIHRoZSBmaXJzdCBjcml0aWNhbCBwb2ludCB0byBjb25maXJtLiBOb3csIGJlZm9yZSBJIGp1bXAgaW50byBhbnkgYW5hbHlzaXMgb3IgcHJvY2Vzc2luZywgSSBuZWVkIHRvIHZlcmlmeSBpdHMgaW50ZWdyaXR5IGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBhbWFuZGFfaGVscGAgZnVuY3Rpb24gb3IgZG9jdW1lbnRhdGlvbi4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IHZhcmlhYmxlLCBgYW1hbmRhX2hlbHBgLCBpcyBhIGRhdGEgZGljdGlvbmFyeSwgYSBsb2csIGRvY3VtZW50YXRpb24sIG9yIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGNoZWNrIGBhbWFuZGFfaGVscGAgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBmbGFncywgdGhhdCB0aGUgZXhwb3J0IHdhcyBzdWNjZXNzZnVsLiBUaGF0IHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gdGhlIGRhdGEgZm9ybWF0LCByZWxldmFudCBwYXJhbWV0ZXJzLCBwb3RlbnRpYWwgY2F2ZWF0cywgYW5kIGFueSBrbm93biBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgZXhwb3J0IHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FtYW5kYV9oZWxwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTUyPXN0YXRpYyBzdHJ1Y3Qge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTgyLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6ODM6c3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtODQtXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xMDctXHRpZiAoZGF0YW9mZiBcdTAwM2U9IHNrYi1cdTAwM2VsZW4pIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjEwODpcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcJiMzNDthbWFuZGFfaGVscDogc2tibGVuID0gJXVcXG5cJiMzNDssIHNrYi1cdTAwM2VsZW4pO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTA5LVx0XHRyZXR1cm4gTkZfQUNDRVBUO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTE2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5IGFtYW5kYV9leHBfcG9saWN5ID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE3MS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE3MjpzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgYW1hbmRhX2hlbHBlclsyXSBfX3JlYWRfbW9zdGx5O1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTczOnN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqYW1hbmRhX2hlbHBlcl9wdHJbMl0gX19yZWFkX21vc3RseTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE3NC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTE3NT1zdGF0aWMgdm9pZCBfX2V4aXQgbmZfY29ubnRyYWNrX2FtYW5kYV9maW5pKHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTc4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTc5Olx0bmZfY29ubnRyYWNrX2hlbHBlcnNfdW5yZWdpc3RlcihhbWFuZGFfaGVscGVyX3B0cixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE4MDpcdFx0XHRcdFx0QVJSQVlfU0laRShhbWFuZGFfaGVscGVyX3B0cikpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTgxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShzZWFyY2gpOyBpJiM0MzsmIzQzOylcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYz0xODU9c3RhdGljIGludCBfX2luaXQgbmZfY29ubnRyYWNrX2FtYW5kYV9pbml0KHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjAwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjAxOlx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2YW1hbmRhX2hlbHBlclswXSwgQUZfSU5FVCwgSVBQUk9UT19VRFAsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0yMDItXHRcdFx0ICBIRUxQRVJfTkFNRSxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwMzpcdFx0XHQgIFx1MDAyNmFtYW5kYV9leHBfcG9saWN5LCAwLCBhbWFuZGFfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjA0Olx0bmZfY3RfaGVscGVyX2luaXQoXHUwMDI2YW1hbmRhX2hlbHBlclsxXSwgQUZfSU5FVDYsIElQUFJPVE9fVURQLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjA1LVx0XHRcdCAgSEVMUEVSX05BTUUsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzoyMDY6XHRcdFx0ICBcdTAwMjZhbWFuZGFfZXhwX3BvbGljeSwgMCwgYW1hbmRhX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTIwNy1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwODpcdHJldCA9IG5mX2Nvbm50cmFja19oZWxwZXJzX3JlZ2lzdGVyKGFtYW5kYV9oZWxwZXIsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzoyMDk6XHRcdFx0XHRcdCAgICBBUlJBWV9TSVpFKGFtYW5kYV9oZWxwZXIpLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjEwOlx0XHRcdFx0XHQgICAgYW1hbmRhX2hlbHBlcl9wdHIpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjExLVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc0NTcKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyB0aGUgQ3VycmVudCBTdGF0ZSoqCgpSaWdodCwgdGhpcyBmZWVscy4uLnN0YXRpYy4gTm90IG11Y2ggaXMgaGFwcGVuaW5nLCBubyBpbW1lZGlhdGUgbW92ZW1lbnQuIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rLCBzZWUgaWYgSSBjYW4gZ2V0IHRoaW5ncyB1bnN0dWNrLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIHBlcmNlaXZlZCBsYWNrIG9mIHByb2dyZXNzLCBpcyB0byBjaGVjayB0aGUgYHRmdHBfaGVscGAgdXRpbGl0eS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCB0b29sLCBvZnRlbiBvdmVybG9va2VkIGJ1dCBzdXJwcmlzaW5nbHkgdXNlZnVsIGZvciB0cm91Ymxlc2hvb3RpbmcsIGVzcGVjaWFsbHkgd2hlbiB0aGluZ3Mgc2VlbSBzdGFsbGVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCByZXZlYWxzLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gaXNzdWUgSSYjMzk7bSBtaXNzaW5nLCBvciBhIGJhc2ljIGNvbW1hbmQgc3ludGF4IGVycm9yIHRoYXQmIzM5O3Mga2VlcGluZyBldmVyeXRoaW5nIGZyb3plbi4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZnRwX2hlbHAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jPTMwPUVYUE9SVF9TWU1CT0xfR1BMKG5mX25hdF90ZnRwX2hvb2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jLTMxLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjMyOnN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMtMzMtXHRcdCAgICAgdW5zaWduZWQgaW50IHByb3RvZmYsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jPTEwNT1zdGF0aWMgaW50IF9faW5pdCBuZl9jb25udHJhY2tfdGZ0cF9pbml0KHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jLTExMi1cdFx0XHQgIEhFTFBFUl9OQU1FLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjExMzpcdFx0XHQgIFx1MDAyNnRmdHBfZXhwX3BvbGljeSwgMCwgdGZ0cF9oZWxwLCBOVUxMLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jLTExNC1cdFx0XHQgIFRISVNfTU9EVUxFKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5MDEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA3MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gYW5kIFN5bWJvbHMgZm9yIE5ldGZpbHRlci9Db25udHJhY2sgQ2hhbmdlcyoqCgpPa2F5LCB0aGlzIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBjb21iaW5hdGlvbiBvZiBzeW1ib2xzIGFuZCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHNvbWUgTmV0ZmlsdGVyL0Nvbm50cmFjayBjaGFuZ2VzLiBUaGUgd2hvbGUgc2V0dXAgc2VlbXMgc3RhdGljLCB3aGljaCBpcyBnb29kIOKAkyBsZXNzIGR5bmFtaWMgYmVoYXZpb3IgdG8gd29ycnkgYWJvdXQuCgpGaXJzdCwgSSYjMzk7bSBpZGVudGlmeWluZyB0aGUga2V5IGZ1bmN0aW9uIHN5bWJvbHMgaW52b2x2ZWQuIEkgc2VlIGEgZmV3IHRoYXQgYXJlIGNsZWFybHkgcmVsZXZhbnQ6IGBhbWFuZGFfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBtYWtlIHN1cmUgYXJlIGNvcnJlY3RseSBjb25maWd1cmVkLgoKTmV4dCwgSSYjMzk7bSBjaGVja2luZyB0aGUgY29uZmlndXJhdGlvbnMuIEkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2YgYE5GX0NPTk5UUkFDS19FVkVOVFNgLCBgTkZfQ09OTlRSQUNLX0FNQU5EQWAsIGBORl9DT05OVFJBQ0tfRlRQYCwgYE5GX0NPTk5UUkFDS19JUkNgLCBgTkZfQ09OTlRSQUNLX1RGVFBgLCBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgLCBgTkZfQ09OTlRSQUNLX1NOTVBgLCBgTkZfQ1RfTkVUTElOS2AsIGFuZCBgTkZfTkFUYC4KCk5vdywgSSYjMzk7bSByZW1lbWJlcmluZyB0aGF0IHNvbWUgb2YgdGhlc2UgYE5GX05BVF8qYCBjb25maWd1cmF0aW9ucyAoYE5GX05BVF9BTUFOREFgLCBgTkZfTkFUX0ZUUGAsIGBORl9OQVRfSVJDYCwgYE5GX05BVF9URlRQYCkgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCAqaWYqIHRoZWlyIGNvcnJlc3BvbmRpbmcgYE5GX0NPTk5UUkFDS18qYCBhbmQgYE5GX05BVGAgYXJlIGVuYWJsZWQuIFNpbmNlIHRoZXNlIGFyZSBwcm9tcHRsZXNzIGNvbmZpZ3MsIGl0IG1lYW5zIHRoZSBzeXprYWxsZXIgY29uZmlnIGdlbmVyYXRvciBtaWdodCBub3QgYmUgYWJsZSB0byBlbmFibGUgdGhlbSBkaXJlY3RseS4gQnV0LCBpdCB3aWxsIGVuYWJsZSB0aGUgcGFyZW50IGRlcGVuZGVuY2llcy4gVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIEkgaW5jbHVkZSBhbGwgdGhlIGltcG9ydGFudCBvbmVzIHdpdGggcHJvbXB0cywgc28gSSYjMzk7bGwgY3JlYXRlIGEgbGlzdCBvZiBjb25maWdzOiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AsIGBORl9DT05OVFJBQ0tfU05NUGAsIGBORl9DVF9ORVRMSU5LYCwgYW5kIGBORl9OQVRgLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5GX0NPTk5UUkFDS19FVkVOVFNgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQgZm9yIHRob3NlIHNwZWNpZmljIGVjYWNoZSBjaGFuZ2VzLiBZZXMsIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCYjMzk7cyB0aGUgb25lLgoKRGlnZ2luZyBmdXJ0aGVyLCBJIGtub3cgYE5GX0NPTk5UUkFDS2AgYW5kIGBORl9OQVRgIGFyZSBvYnZpb3VzbHkgbmVlZGVkIGFzIGRlcGVuZGVuY2llcywgYnV0IHRoZXkgYXJlIGltcGxpZWQgYnkgdGhlIG90aGVyIGNvbmZpZ3MuCgpMZXQmIzM5O3MgZG8gYSBkb3VibGUgY2hlY2sgYW5kIG1ha2Ugc3VyZSBJJiMzOTt2ZSBpZGVudGlmaWVkIGFsbCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBPSywgaXQgbG9va3MgbGlrZSBgbmZfbmF0X2FtYW5kYWAsIGBuZl9uYXRfaXJjYCwgYW5kIGBuZl9uYXRfdGZ0cGAgYWxsIGhhdmUgYSBgaGVscGAgZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBgbmZfbmF0X2Z0cGAgZG9lc24mIzM5O3QgZm9sbG93IHRoYXQgcGF0dGVybiwgc28gSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIG9mIGl0LgoKR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9ucyB3aXRoIGBoZWxwYCwgSSYjMzk7bSBnb2luZyB0byBsaXN0IHRoZSB1bmlxdWUgZnVuY3Rpb24gbmFtZXMuIFRoaXMgbWVhbnMgYGFtYW5kYV9oZWxwYCwgYHRmdHBfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGFuZCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgYXJlIHRoZSBvbmVzIHRvIHBheSBhdHRlbnRpb24gdG8uCgpBbHJpZ2h0LCB0aGF0IGNvdmVycyB0aGUgZXNzZW50aWFscy4gSSBoYXZlIGEgc29saWQgbGlzdCBvZiBjb25maWdzIGFuZCBmdW5jdGlvbiBzeW1ib2xzIHRvIHVzZSBmb3IgdGhlc2UgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfbmF0X2FtYW5kYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmg9MTA9dHlwZWRlZiB1bnNpZ25lZCBpbnRcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaDoxMTpuZl9uYXRfYW1hbmRhX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaC0xMi1cdFx0ICAgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaC0xOC1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaDoxOTpleHRlcm4gbmZfbmF0X2FtYW5kYV9ob29rX2ZuIF9fcmN1ICpuZl9uYXRfYW1hbmRhX2hvb2s7XG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmgtMjAtI2VuZGlmIC8qIF9ORl9DT05OVFJBQ0tfQU1BTkRBX0ggKi9cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTY5PWVuZGlmXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS03MS0jIE5BVCBoZWxwZXJzXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19ORl9OQVRfQU1BTkRBKSAmIzQzOz0gbmZfbmF0X2FtYW5kYS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTczLW9iai0kKENPTkZJR19ORl9OQVRfRlRQKSAmIzQzOz0gbmZfbmF0X2Z0cC5vXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM9Mzg9TU9EVUxFX1BBUk1fREVTQyh0c19hbGdvLCBcJiMzNDt0ZXh0c2VhcmNoIGFsZ29yaXRobSB0byB1c2UgKGRlZmF1bHQga21wKVwmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0zOS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjQwOm5mX25hdF9hbWFuZGFfaG9va19mbiBfX3JjdSAqbmZfbmF0X2FtYW5kYV9ob29rIF9fcmVhZF9tb3N0bHk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzo0MTpFWFBPUlRfU1lNQk9MX0dQTChuZl9uYXRfYW1hbmRhX2hvb2spO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtNDItXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM9ODM9c3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTk0LVx0aW50IHJldCA9IE5GX0FDQ0VQVDtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjk1Olx0bmZfbmF0X2FtYW5kYV9ob29rX2ZuICpuZl9uYXRfYW1hbmRhO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtOTYtXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTUxLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTUyOlx0XHRuZl9uYXRfYW1hbmRhID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9hbWFuZGFfaG9vayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzoxNTM6XHRcdGlmIChuZl9uYXRfYW1hbmRhIFx1MDAyNlx1MDAyNiBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSylcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE1NDpcdFx0XHRyZXQgPSBuZl9uYXRfYW1hbmRhKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE1NS1cdFx0XHRcdFx0ICAgIG9mZiAtIGRhdGFvZmYsIGxlbiwgZXhwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYz0yOD1zdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy02NC1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjY1OnN0YXRpYyB2b2lkIF9fZXhpdCBuZl9uYXRfYW1hbmRhX2Zpbmkodm9pZClcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTY2LXtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTY3LVx0bmZfbmF0X2hlbHBlcl91bnJlZ2lzdGVyKFx1MDAyNm5hdF9oZWxwZXJfYW1hbmRhKTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjY4Olx0UkNVX0lOSVRfUE9JTlRFUihuZl9uYXRfYW1hbmRhX2hvb2ssIE5VTEwpO1xubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNjktXHRzeW5jaHJvbml6ZV9yY3UoKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy03MS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjcyOnN0YXRpYyBpbnQgX19pbml0IG5mX25hdF9hbWFuZGFfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNzMte1xubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmM6NzQ6XHRCVUdfT04obmZfbmF0X2FtYW5kYV9ob29rICE9IE5VTEwpO1xubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNzUtXHRuZl9uYXRfaGVscGVyX3JlZ2lzdGVyKFx1MDAyNm5hdF9oZWxwZXJfYW1hbmRhKTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjc2Olx0UkNVX0lOSVRfUE9JTlRFUihuZl9uYXRfYW1hbmRhX2hvb2ssIGhlbHApO1xubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNzctXHRyZXR1cm4gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy03OS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjgwOm1vZHVsZV9pbml0KG5mX25hdF9hbWFuZGFfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo4MTptb2R1bGVfZXhpdChuZl9uYXRfYW1hbmRhX2ZpbmkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDYyMAoJCQkJCQkJb3V0cHV0OiAyNjkKCQkJCQkJCXRob3VnaHRzOiA0ODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmV2aWV3aW5nIHRoZSBDb25udHJhY2sgSGVscGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzIOKAkyBhbWFuZGEsIGZ0cCwgaXJjLCB0ZnRwLCBicm9hZGNhc3QsIGFuZCBuZXRsaW5rIHNwZWNpZmljYWxseS4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBob3cgdGhlIGV4cGVjdGF0aW9uL2V2ZW50IGNhY2hlIGxvZ2ljIGlzIGhhbmRsZWQuIFRoZSBwYXRjaCBpcyBub3cgY2FjaGluZyB0aGUgYGV2ZW50X21hc2tgIHdpdGhpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUsIHJhdGhlciB0aGFuIHB1bGxpbmcgaXQgZGlyZWN0bHkgZnJvbSB0aGUgbWFzdGVyIGNvbm5lY3Rpb24mIzM5O3MgZWNhY2hlIHdoZW4gYW4gZXZlbnQgaXMgcmVwb3J0ZWQuIE9uIHRvcCBvZiB0aGlzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBpcyBiZWluZyBwYXNzZWQgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGFmZmVjdHMgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy4gV2UgbmVlZCB0byBiZSBlc3BlY2lhbGx5IGNhcmVmdWwgYWJvdXQgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBpZiB0aGlzIGNhY2hlZCBtYXNrIGlzIHVzZWQgaW5jb3JyZWN0bHksIG9yIGlmIHRoZSBjb25uZWN0aW9uIG9iamVjdCBpcyBtaXNoYW5kbGVkIHdpdGhpbiB0aGVzZSBOQVQgZnVuY3Rpb25zLiBXZSBzaG91bGQgZGVmaW5pdGVseSByZWNvbW1lbmQgZnV6emluZyBhcyB0aGUgYmVzdCB3YXkgdG8gZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGFuZ2VzLgoKSSYjMzk7dmUgYWxyZWFkeSByZXZpZXdlZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjaGVja2luZyB0aGF0IHRoZXkgYXJlIHdoYXQgSSBleHBlY3Q6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCwgYE5GX0NPTk5UUkFDS19TTk1QYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAuIEkmIzM5O3ZlIGNoZWNrZWQgYW5kIGRvdWJsZS1jaGVja2VkIHRoZSBkZXBlbmRlbmNpZXMuIEV2ZXJ5dGhpbmcgYXBwZWFycyB0byBiZSBjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgdXRpbGl6ZWQuCgpJbiB0aGUgZmlsZSBgbmZfbmF0X2FtYW5kYS5jYCwgdGhlIGZ1bmN0aW9uIGBhbWFuZGFfaGVscGAgaXMgY29ycmVjdCwgYW5kIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIHJldmlldywgbm93OiBgYW1hbmRhX2hlbHBgLCBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCwgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgLCBgbmZfY3RfZXhwZWN0X2luaXRgLCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAsIGB0ZnRwX2hlbHBgLCBhbmQgYG5mX25hdF9mdHBgLiBJdCYjMzk7cyBhbGwgbG9va2luZyBnb29kLiBJIGFtIGhhcHB5IHdpdGggdGhlIHJlc3VsdHMgb2YgbXkgcmV2aWV3IGFuZCB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19FVkVOVFMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0FNQU5EQSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfRlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19JUkMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1RGVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX05FVEJJT1NfTlMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NOTVAmIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbWFuZGFfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAmIzM0OywKICAgICYjMzQ7bmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydCYjMzQ7LAogICAgJiMzNDtuZl9jdF9leHBlY3RfaW5pdCYjMzQ7LAogICAgJiMzNDtjdG5ldGxpbmtfYWxsb2NfZXhwZWN0JiMzNDssCiAgICAmIzM0O3RmdHBfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfZnRwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyAoYW1hbmRhLCBmdHAsIGlyYywgdGZ0cCwgYnJvYWRjYXN0LCBuZXRsaW5rKSBhbmQgdGhlIGV4cGVjdGF0aW9uL2V2ZW50IGNhY2hlIGxvZ2ljLiBJdCBjYWNoZXMgYGV2ZW50X21hc2tgIGluIHRoZSBleHBlY3RhdGlvbiBvYmplY3QgYXQgY3JlYXRpb24gdGltZSBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQgdXAgZnJvbSB0aGUgbWFzdGVyIGNvbm5lY3Rpb24mIzM5O3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfQU1BTkRBJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19GVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0lSQyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfVEZUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfTkVUQklPU19OUyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfU05NUCYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FtYW5kYV9oZWxwJiMzNDssCiAgICAmIzM0O25mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscCYjMzQ7LAogICAgJiMzNDtuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0JiMzNDssCiAgICAmIzM0O25mX2N0X2V4cGVjdF9pbml0JiMzNDssCiAgICAmIzM0O2N0bmV0bGlua19hbGxvY19leHBlY3QmIzM0OywKICAgICYjMzQ7dGZ0cF9oZWxwJiMzNDssCiAgICAmIzM0O25mX25hdF9mdHAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzIChhbWFuZGEsIGZ0cCwgaXJjLCB0ZnRwLCBicm9hZGNhc3QsIG5ldGxpbmspIGFuZCB0aGUgZXhwZWN0YXRpb24vZXZlbnQgY2FjaGUgbG9naWMuIEl0IGNhY2hlcyBgZXZlbnRfbWFza2AgaW4gdGhlIGV4cGVjdGF0aW9uIG9iamVjdCBhdCBjcmVhdGlvbiB0aW1lIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBmcm9tIHRoZSBtYXN0ZXIgY29ubmVjdGlvbiYjMzk7cyBlY2FjaGUgYXQgZXZlbnQgcmVwb3J0IHRpbWUuIEl0IGFsc28gcGFzc2VzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBkaXJlY3RseSB0byBOQVQgaG9vayBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBhZmZlY3QgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgTkFUIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDE6NTYuNjM2NzE0NTk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1OTc4ODE0NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19BTUFOREFcIixcbiAgICBcIk5GX0NPTk5UUkFDS19GVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19JUkNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19URlRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfTkVUQklPU19OU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NOTVBcIixcbiAgICBcIk5GX0NUX05FVExJTktcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFtYW5kYV9oZWxwXCIsXG4gICAgXCJuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9pbml0XCIsXG4gICAgXCJjdG5ldGxpbmtfYWxsb2NfZXhwZWN0XCIsXG4gICAgXCJ0ZnRwX2hlbHBcIixcbiAgICBcIm5mX25hdF9mdHBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgKGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgbmV0bGluaykgYW5kIHRoZSBleHBlY3RhdGlvbi9ldmVudCBjYWNoZSBsb2dpYy4gSXQgY2FjaGVzIGBldmVudF9tYXNrYCBpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBjb25uZWN0aW9uJ3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDE6NTYuNjM2NzIwOTg2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjA3ODExNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzZTFmMDVmYTA0OTk5YjAzMDQ2MWRiYTVmNWY2NTBkOGVlNWRjMGE5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDIxOjQxOjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaFxcbmluZGV4IDE3MTk5ODdlOGZkODM4Li5kZWI1NjBiYjc5YzQzMSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmhcXG5AQCAtOSw2ICs5LDcgQEBcXG4gXFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XFxuIG5mX25hdF9hbWFuZGFfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHQgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuIFxcdFxcdCAgICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IG1hdGNob2ZmLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmhcXG5pbmRleCA3YjYyNDQ2Y2NlYzRmNC4uNzEyNzAyMTgzYjk0NzMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oXFxuQEAgLTI4LDYgKzI4LDcgQEAgc3RydWN0IG5mX2N0X2Z0cF9tYXN0ZXIge1xcbiAgKiBjb25uZWN0aW9uIHdlIHNob3VsZCBleHBlY3QuICovXFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XFxuIG5mX25hdF9mdHBfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHQgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuIFxcdFxcdCAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHQgICBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsXFxuIFxcdFxcdCAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmhcXG5pbmRleCBjZTA3MjUwYWZiNGU5ZS4uYzczYjNiNDRhMGI3ZWYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oXFxuQEAgLTEwLDYgKzEwLDcgQEBcXG4gXFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XFxuIG5mX25hdF9pcmNfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHQgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuIFxcdFxcdCAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHQgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0ICAgdW5zaWduZWQgaW50IG1hdGNob2ZmLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaFxcbmluZGV4IGUzZDE3MzljNTU3ZDE1Li44MDJjYjdmYzE5Y2RlYyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaFxcbkBAIC0xOSw2ICsxOSw3IEBAIHN0cnVjdCB0ZnRwaGRyIHtcXG4gXFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XFxuIG5mX25hdF90ZnRwX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0ICAgIHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHQgICAgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCk7XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxcbmluZGV4IGMwMjQzNDVjOWJkODYyLi41ZDBmNWIyZjEyYTcyNCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxcbkBAIC00Miw2ICs0Miw5IEBAIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0IHtcXG4gXFx0LyogRXhwZWN0YXRpb24gY2xhc3MgKi9cXG4gXFx0dW5zaWduZWQgaW50IGNsYXNzO1xcbiBcXG4rXFx0LyogRXZlbnQgZmlsdGVyIG1hc2sgKi9cXG4rXFx0dTE2IGV2ZW50X21hc2s7XFxuK1xcbiBcXHQvKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIHNldHVwIGFuZCBpbnNlcnRpb24gKi9cXG4gXFx0dm9pZCAoKmV4cGVjdGZuKShzdHJ1Y3QgbmZfY29ubiAqbmV3LFxcbiBcXHRcXHRcXHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jXFxuaW5kZXggMDZkNmVjMTJjODZkZmEuLjE0YWU2NjA0OTFmMzYwIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmNcXG5AQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBpbnQgYW1hbmRhX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdFxcdG5mX25hdF9hbWFuZGEgPSByY3VfZGVyZWZlcmVuY2UobmZfbmF0X2FtYW5kYV9ob29rKTtcXG4gXFx0XFx0aWYgKG5mX25hdF9hbWFuZGEgXFx1MDAyNlxcdTAwMjYgY3QtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IElQU19OQVRfTUFTSylcXG4tXFx0XFx0XFx0cmV0ID0gbmZfbmF0X2FtYW5kYShza2IsIGN0aW5mbywgcHJvdG9mZixcXG4rXFx0XFx0XFx0cmV0ID0gbmZfbmF0X2FtYW5kYShza2IsIGN0LCBjdGluZm8sIHByb3RvZmYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBvZmYgLSBkYXRhb2ZmLCBsZW4sIGV4cCk7XFxuIFxcdFxcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbiBcXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNcXG5pbmRleCA2ZmY5NTRmMWJmYjg3Yy4uMDkyMmUzMGI2YWIwNzAgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuY1xcbkBAIC0xNCw2ICsxNCw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oXFx1MDAzZVxcbiBcXG4gaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuQEAgLTI3LDYgKzI4LDcgQEAgaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRzdHJ1Y3QgcnRhYmxlICpydCA9IHNrYl9ydGFibGUoc2tiKTtcXG4gXFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xcbiBcXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwID0gbmZjdF9oZWxwKGN0KTtcXG4rXFx0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcXG4gXFx0X19iZTMyIG1hc2sgPSAwO1xcbiBcXG4gXFx0aWYgKCFoZWxwKVxcbkBAIC03OSw2ICs4MSwxMCBAQCBpbnQgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuICNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXFxuIFxcdGV4cC1cXHUwMDNlem9uZSA9IGN0LVxcdTAwM2V6b25lO1xcbiAjZW5kaWZcXG4rXFx0ZWNhY2hlID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpO1xcbitcXHRpZiAoZWNhY2hlKVxcbitcXHRcXHRleHAtXFx1MDAzZWV2ZW50X21hc2sgPSBlY2FjaGUtXFx1MDAzZWV4cG1hc2s7XFxuK1xcbiBcXHRuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApO1xcbiBcXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXFxuaW5kZXggOWRmMTU5NDQ4Yjg5NzkuLjRjN2QxNzk5MTU4ZDJhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcXG5AQCAtMjQ1LDcgKzI0NSw2IEBAIHZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGV2ZW50LFxcbiB7XFxuIFxcdHN0cnVjdCBuZXQgKm5ldCA9IG5mX2N0X2V4cF9uZXQoZXhwKTtcXG4gXFx0c3RydWN0IG5mX2N0X2V2ZW50X25vdGlmaWVyICpub3RpZnk7XFxuLVxcdHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplO1xcbiBcXG4gXFx0bG9ja2RlcF9uZmN0X2V4cGVjdF9sb2NrX2hlbGQoKTtcXG4gXFxuQEAgLTI1NCwxMSArMjUzLDcgQEAgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsXFxuIFxcdGlmICghbm90aWZ5KVxcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcbi1cXHRlID0gbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVxcdTAwM2VtYXN0ZXIpO1xcbi1cXHRpZiAoIWUpXFxuLVxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4tXFxuLVxcdGlmIChlLVxcdTAwM2VleHBtYXNrIFxcdTAwMjYgKDEgXFx1MDAzY1xcdTAwM2MgZXZlbnQpKSB7XFxuK1xcdGlmIChleHAtXFx1MDAzZWV2ZW50X21hc2sgXFx1MDAyNiAoMSBcXHUwMDNjXFx1MDAzYyBldmVudCkpIHtcXG4gXFx0XFx0c3RydWN0IG5mX2V4cF9ldmVudCBpdGVtID0ge1xcbiBcXHRcXHRcXHQuZXhwXFx0PSBleHAsXFxuIFxcdFxcdFxcdC5wb3J0aWRcXHQ9IHBvcnRpZCxcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbmluZGV4IDdhZTY4ZDYwNTg2YTIzLi5jZDlhZjM2MjBhZjU4NyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXFxuQEAgLTMzMCw2ICszMzAsNyBAQCB2b2lkIG5mX2N0X2V4cGVjdF9pbml0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHVuc2lnbmVkIGludCBjbGFzcyxcXG4gXFx0c3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmhlbHBlciA9IE5VTEw7XFxuIFxcdHN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC1cXHUwMDNlbWFzdGVyO1xcbiBcXHRzdHJ1Y3QgbmV0ICpuZXQgPSByZWFkX3BuZXQoXFx1MDAyNmN0LVxcdTAwM2VjdF9uZXQpO1xcbitcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwO1xcbiBcXHRpbnQgbGVuO1xcbiBcXG5AQCAtMzQyLDYgKzM0MywxMCBAQCB2b2lkIG5mX2N0X2V4cGVjdF9pbml0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHVuc2lnbmVkIGludCBjbGFzcyxcXG4gXFx0ZXhwLVxcdTAwM2VjbGFzcyA9IGNsYXNzO1xcbiBcXHRleHAtXFx1MDAzZWV4cGVjdGZuID0gTlVMTDtcXG4gXFxuK1xcdGVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcXG4rXFx0aWYgKGVjYWNoZSlcXG4rXFx0XFx0ZXhwLVxcdTAwM2VldmVudF9tYXNrID0gZWNhY2hlLVxcdTAwM2VleHBtYXNrO1xcbitcXG4gXFx0aGVscCA9IG5mY3RfaGVscChjdCk7XFxuIFxcdGlmIChoZWxwKVxcbiBcXHRcXHRoZWxwZXIgPSByY3VfZGVyZWZlcmVuY2UoaGVscC1cXHUwMDNlaGVscGVyKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuY1xcbmluZGV4IGYzOTQ0NTk4YzE3MjZmLi5mNGZlMTNmZDBlNzAyYSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jXFxuQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICogKHBvc3NpYmx5IGNoYW5nZWQpIGV4cGVjdGF0aW9uIGl0c2VsZi4gKi9cXG4gXFx0bmZfbmF0X2Z0cCA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfZnRwX2hvb2spO1xcbiBcXHRpZiAobmZfbmF0X2Z0cCBcXHUwMDI2XFx1MDAyNiBjdC1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgSVBTX05BVF9NQVNLKVxcbi1cXHRcXHRyZXQgPSBuZl9uYXRfZnRwKHNrYiwgY3RpbmZvLCBzZWFyY2hbZGlyXVtpXS5mdHB0eXBlLFxcbitcXHRcXHRyZXQgPSBuZl9uYXRfZnRwKHNrYiwgY3QsIGN0aW5mbywgc2VhcmNoW2Rpcl1baV0uZnRwdHlwZSxcXG4gXFx0XFx0XFx0XFx0IHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbiwgZXhwKTtcXG4gXFx0ZWxzZSB7XFxuIFxcdFxcdC8qIENhbid0IGV4cGVjdCB0aGlzPyAgQmVzdCB0byBkcm9wIHBhY2tldCBub3cuICovXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmNcXG5pbmRleCA0ZTZiYWZlNDE0Mzc1Mi4uOTIzNjA5NjM3NTdhOTcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuY1xcbkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbiBcXG4gXFx0XFx0XFx0bmZfbmF0X2lyYyA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaXJjX2hvb2spO1xcbiBcXHRcXHRcXHRpZiAobmZfbmF0X2lyYyBcXHUwMDI2XFx1MDAyNiBjdC1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgSVBTX05BVF9NQVNLKVxcbi1cXHRcXHRcXHRcXHRyZXQgPSBuZl9uYXRfaXJjKHNrYiwgY3RpbmZvLCBwcm90b2ZmLFxcbitcXHRcXHRcXHRcXHRyZXQgPSBuZl9uYXRfaXJjKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IGFkZHJfYmVnX3AgLSBpYl9wdHIsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBhZGRyX2VuZF9wIC0gYWRkcl9iZWdfcCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IGV4cCk7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xcbmluZGV4IDMxY2JiMWI1NWI5ZTZjLi5mYzNmNjAwOTlhZjNiNSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcXG5AQCAtMzUyNCw2ICszNTI0LDcgQEAgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0ICpuZXQgPSByZWFkX3BuZXQoXFx1MDAyNmN0LVxcdTAwM2VjdF9uZXQpO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqaGVscGVyO1xcbitcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwO1xcbiBcXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwO1xcbiBcXHR1MzIgY2xhc3MgPSAwO1xcbkBAIC0zNTc1LDYgKzM1NzYsMTAgQEAgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0ZXhwLVxcdTAwM2VtYXNrLnNyYy51MyA9IG1hc2stXFx1MDAzZXNyYy51MztcXG4gXFx0ZXhwLVxcdTAwM2VtYXNrLnNyYy51LmFsbCA9IG1hc2stXFx1MDAzZXNyYy51LmFsbDtcXG4gXFxuK1xcdGVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcXG4rXFx0aWYgKGVjYWNoZSlcXG4rXFx0XFx0ZXhwLVxcdTAwM2VldmVudF9tYXNrID0gZWNhY2hlLVxcdTAwM2VleHBtYXNrO1xcbitcXG4gXFx0aWYgKGNkYVtDVEFfRVhQRUNUX05BVF0pIHtcXG4gXFx0XFx0ZXJyID0gY3RuZXRsaW5rX3BhcnNlX2V4cGVjdF9uYXQoY2RhW0NUQV9FWFBFQ1RfTkFUXSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IGV4cCwgbmZfY3RfbDNudW0oY3QpKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jXFxuaW5kZXggYTY5NTU5ZWRmOWIzNjMuLmU2NzJkNzRhNjgxN2VhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuY1xcbkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRcXHRuZl9uYXRfdGZ0cCA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfdGZ0cF9ob29rKTtcXG4gXFx0XFx0aWYgKG5mX25hdF90ZnRwIFxcdTAwMjZcXHUwMDI2IGN0LVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBJUFNfTkFUX01BU0spXFxuLVxcdFxcdFxcdHJldCA9IG5mX25hdF90ZnRwKHNrYiwgY3RpbmZvLCBleHApO1xcbitcXHRcXHRcXHRyZXQgPSBuZl9uYXRfdGZ0cChza2IsIGN0LCBjdGluZm8sIGV4cCk7XFxuIFxcdFxcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbiBcXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuIFxcdFxcdFxcdHJldCA9IE5GX0RST1A7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcXG5pbmRleCA4ZjEwNTQ5MjBhODU3MS4uMzMwNDE1ODA5NDI1Y2UgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY1xcbkBAIC0yNiw2ICsyNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl9hbWFuZGEgPVxcbiBcXHRORl9DVF9OQVRfSEVMUEVSX0lOSVQoTkFUX0hFTFBFUl9OQU1FKTtcXG4gXFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHQgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbiBcXHRcXHRcXHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXFxuIFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0XFx0IHVuc2lnbmVkIGludCBtYXRjaG9mZixcXG5AQCAtNDYsMTUgKzQ3LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQvKiBUcnkgdG8gZ2V0IHNhbWUgcG9ydDogaWYgbm90LCB0cnkgdG8gY2hhbmdlIGl0LiAqL1xcbiBcXHRwb3J0ID0gbmZfbmF0X2V4cF9maW5kX3BvcnQoZXhwLCBudG9ocyhleHAtXFx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0KSk7XFxuIFxcdGlmIChwb3J0ID09IDApIHtcXG4tXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cXHUwMDNlbWFzdGVyLCBcXFwiYWxsIHBvcnRzIGluIHVzZVxcXCIpO1xcbitcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJhbGwgcG9ydHMgaW4gdXNlXFxcIik7XFxuIFxcdFxcdHJldHVybiBORl9EUk9QO1xcbiBcXHR9XFxuIFxcbiBcXHRzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCBcXFwiJXVcXFwiLCBwb3J0KTtcXG4tXFx0aWYgKCFuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQoc2tiLCBleHAtXFx1MDAzZW1hc3RlciwgY3RpbmZvLFxcbitcXHRpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXFxuIFxcdFxcdFxcdFxcdCAgICAgIHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbixcXG4gXFx0XFx0XFx0XFx0ICAgICAgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSkpIHtcXG4tXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cXHUwMDNlbWFzdGVyLCBcXFwiY2Fubm90IG1hbmdsZSBwYWNrZXRcXFwiKTtcXG4rXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcXFwiY2Fubm90IG1hbmdsZSBwYWNrZXRcXFwiKTtcXG4gXFx0XFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChleHApO1xcbiBcXHRcXHRyZXR1cm4gTkZfRFJPUDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jXFxuaW5kZXggYzkyYTQzNmQ5YzQ4NmUuLjI1ZDIwZTI5NzBhZTFiIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmNcXG5AQCAtNjEsNiArNjEsNyBAQCBzdGF0aWMgaW50IG5mX25hdF9mdHBfZm10X2NtZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZnRwX3R5cGUgdHlwZSxcXG4gLyogU28sIHRoaXMgcGFja2V0IGhhcyBoaXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWF0Y2hpbmcgY29kZS5cXG4gICAgTWFuZ2xlIGl0LCBhbmQgY2hhbmdlIHRoZSBleHBlY3RhdGlvbiB0byBtYXRjaCB0aGUgbmV3IHZlcnNpb24uICovXFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbiBcXHRcXHRcXHQgICAgICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXFxuIFxcdFxcdFxcdCAgICAgICBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsXFxuIFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG5AQCAtNzEsNyArNzIsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dW5pb24gbmZfaW5ldF9hZGRyIG5ld2FkZHI7XFxuIFxcdHVfaW50MTZfdCBwb3J0O1xcbiBcXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbi1cXHRzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXFx1MDAzZW1hc3RlcjtcXG4gXFx0Y2hhciBidWZmZXJbc2l6ZW9mKFxcXCJ8MXx8NjU1MzV8XFxcIikgKyBJTkVUNl9BRERSU1RSTEVOXTtcXG4gXFx0dW5zaWduZWQgaW50IGJ1ZmxlbjtcXG4gXFxuQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfZnRwKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRwb3J0ID0gbmZfbmF0X2V4cF9maW5kX3BvcnQoZXhwLCBudG9ocyhleHAtXFx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0KSk7XFxuIFxcdGlmIChwb3J0ID09IDApIHtcXG4tXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cXHUwMDNlbWFzdGVyLCBcXFwiYWxsIHBvcnRzIGluIHVzZVxcXCIpO1xcbitcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJhbGwgcG9ydHMgaW4gdXNlXFxcIik7XFxuIFxcdFxcdHJldHVybiBORl9EUk9QO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXFxuaW5kZXggMTljNGZjYzYwYzUwZjIuLjg5YjMxZmU5MzJiYWMwIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmNcXG5AQCAtMzAsNiArMzAsNyBAQCBzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19uYXRfaGVscGVyIG5hdF9oZWxwZXJfaXJjID1cXG4gXFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0XFx0IHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0XFx0IGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHRcXHQgdW5zaWduZWQgaW50IHByb3RvZmYsXFxuIFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXFxuQEAgLTM3LDcgKzM4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKVxcbiB7XFxuIFxcdGNoYXIgYnVmZmVyW3NpemVvZihcXFwiNDI5NDk2NzI5NiA2NTYzNVxcXCIpXTtcXG4tXFx0c3RydWN0IG5mX2Nvbm4gKmN0ID0gZXhwLVxcdTAwM2VtYXN0ZXI7XFxuIFxcdHVuaW9uIG5mX2luZXRfYWRkciBuZXdhZGRyO1xcbiBcXHR1X2ludDE2X3QgcG9ydDtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuY1xcbmluZGV4IDFhNTkxMTMyZDZlYjkzLi43MTIxZTY3MDRmMzQxYyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmNcXG5AQCAtMjEsMTcgKzIxLDE2IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl90ZnRwID1cXG4gXFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XFxuIFxcbiBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0XFx0IHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0XFx0IGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiBcXHRcXHRcXHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXFx1MDAzZW1hc3RlcjtcXG4tXFxuIFxcdGV4cC1cXHUwMDNlc2F2ZWRfcHJvdG8udWRwLnBvcnRcXG4gXFx0XFx0PSBjdC1cXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9PUklHSU5BTF0udHVwbGUuc3JjLnUudWRwLnBvcnQ7XFxuIFxcdGV4cC1cXHUwMDNlZGlyID0gSVBfQ1RfRElSX1JFUExZO1xcbiBcXHRleHAtXFx1MDAzZWV4cGVjdGZuID0gbmZfbmF0X2ZvbGxvd19tYXN0ZXI7XFxuIFxcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcXG4tXFx0XFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGV4cC1cXHUwMDNlbWFzdGVyLCBcXFwiY2Fubm90IGFkZCBleHBlY3RhdGlvblxcXCIpO1xcbitcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuIFxcdFxcdHJldHVybiBORl9EUk9QO1xcbiBcXHR9XFxuIFxcdHJldHVybiBORl9BQ0NFUFQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQxOjU3LjE1ODI1NTEyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk1NDU3MjY1ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19BTUFOREFcIixcbiAgICBcIk5GX0NPTk5UUkFDS19GVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19JUkNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19URlRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfTkVUQklPU19OU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NOTVBcIixcbiAgICBcIk5GX0NUX05FVExJTktcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFtYW5kYV9oZWxwXCIsXG4gICAgXCJuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9pbml0XCIsXG4gICAgXCJjdG5ldGxpbmtfYWxsb2NfZXhwZWN0XCIsXG4gICAgXCJ0ZnRwX2hlbHBcIixcbiAgICBcIm5mX25hdF9mdHBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgKGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgbmV0bGluaykgYW5kIHRoZSBleHBlY3RhdGlvbi9ldmVudCBjYWNoZSBsb2dpYy4gSXQgY2FjaGVzIGBldmVudF9tYXNrYCBpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBjb25uZWN0aW9uJ3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzZTFmMDVmYTA0OTk5YjAzMDQ2MWRiYTVmNWY2NTBkOGVlNWRjMGE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMjE6NDE6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmhcbmluZGV4IDE3MTk5ODdlOGZkODM4Li5kZWI1NjBiYjc5YzQzMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5oXG5AQCAtOSw2ICs5LDcgQEBcbiBcbiB0eXBlZGVmIHVuc2lnbmVkIGludFxuIG5mX25hdF9hbWFuZGFfaG9va19mbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHQgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gXHRcdCAgICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuIFx0XHQgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcdFx0ICAgICAgdW5zaWduZWQgaW50IG1hdGNob2ZmLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuaFxuaW5kZXggN2I2MjQ0NmNjZWM0ZjQuLjcxMjcwMjE4M2I5NDczIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmhcbkBAIC0yOCw2ICsyOCw3IEBAIHN0cnVjdCBuZl9jdF9mdHBfbWFzdGVyIHtcbiAgKiBjb25uZWN0aW9uIHdlIHNob3VsZCBleHBlY3QuICovXG4gdHlwZWRlZiB1bnNpZ25lZCBpbnRcbiBuZl9uYXRfZnRwX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0ICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHQgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0ICAgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmhcbmluZGV4IGNlMDcyNTBhZmI0ZTllLi5jNzNiM2I0NGEwYjdlZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5oXG5AQCAtMTAsNiArMTAsNyBAQFxuIFxuIHR5cGVkZWYgdW5zaWduZWQgaW50XG4gbmZfbmF0X2lyY19ob29rX2ZuKHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdCAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdCAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbmluZGV4IGUzZDE3MzljNTU3ZDE1Li44MDJjYjdmYzE5Y2RlYyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmhcbkBAIC0xOSw2ICsxOSw3IEBAIHN0cnVjdCB0ZnRwaGRyIHtcbiBcbiB0eXBlZGVmIHVuc2lnbmVkIGludFxuIG5mX25hdF90ZnRwX2hvb2tfZm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0ICAgIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxuIFx0XHQgICAgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCk7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbmluZGV4IGMwMjQzNDVjOWJkODYyLi41ZDBmNWIyZjEyYTcyNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbkBAIC00Miw2ICs0Miw5IEBAIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0IHtcbiBcdC8qIEV4cGVjdGF0aW9uIGNsYXNzICovXG4gXHR1bnNpZ25lZCBpbnQgY2xhc3M7XG4gXG4rXHQvKiBFdmVudCBmaWx0ZXIgbWFzayAqL1xuK1x0dTE2IGV2ZW50X21hc2s7XG4rXG4gXHQvKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIHNldHVwIGFuZCBpbnNlcnRpb24gKi9cbiBcdHZvaWQgKCpleHBlY3Rmbikoc3RydWN0IG5mX2Nvbm4gKm5ldyxcbiBcdFx0XHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmNcbmluZGV4IDA2ZDZlYzEyYzg2ZGZhLi4xNGFlNjYwNDkxZjM2MCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuY1xuQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgaW50IGFtYW5kYV9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRcdG5mX25hdF9hbWFuZGEgPSByY3VfZGVyZWZlcmVuY2UobmZfbmF0X2FtYW5kYV9ob29rKTtcbiBcdFx0aWYgKG5mX25hdF9hbWFuZGEgXHUwMDI2XHUwMDI2IGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKVxuLVx0XHRcdHJldCA9IG5mX25hdF9hbWFuZGEoc2tiLCBjdGluZm8sIHByb3RvZmYsXG4rXHRcdFx0cmV0ID0gbmZfbmF0X2FtYW5kYShza2IsIGN0LCBjdGluZm8sIHByb3RvZmYsXG4gXHRcdFx0XHRcdCAgICBvZmYgLSBkYXRhb2ZmLCBsZW4sIGV4cCk7XG4gXHRcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xuIFx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCIpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNcbmluZGV4IDZmZjk1NGYxYmZiODdjLi4wOTIyZTMwYjZhYjA3MCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuY1xuQEAgLTE0LDYgKzE0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oXHUwMDNlXG4gXG4gaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0c3RydWN0IG5mX2Nvbm4gKmN0LFxuQEAgLTI3LDYgKzI4LDcgQEAgaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c3RydWN0IHJ0YWJsZSAqcnQgPSBza2JfcnRhYmxlKHNrYik7XG4gXHRzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXY7XG4gXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwID0gbmZjdF9oZWxwKGN0KTtcbitcdHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplY2FjaGU7XG4gXHRfX2JlMzIgbWFzayA9IDA7XG4gXG4gXHRpZiAoIWhlbHApXG5AQCAtNzksNiArODEsMTAgQEAgaW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuICNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXG4gXHRleHAtXHUwMDNlem9uZSA9IGN0LVx1MDAzZXpvbmU7XG4gI2VuZGlmXG4rXHRlY2FjaGUgPSBuZl9jdF9lY2FjaGVfZmluZChjdCk7XG4rXHRpZiAoZWNhY2hlKVxuK1x0XHRleHAtXHUwMDNlZXZlbnRfbWFzayA9IGVjYWNoZS1cdTAwM2VleHBtYXNrO1xuK1xuIFx0bmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKTtcbiBcdG5mX2N0X2V4cGVjdF9wdXQoZXhwKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXG5pbmRleCA5ZGYxNTk0NDhiODk3OS4uNGM3ZDE3OTkxNThkMmEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcbkBAIC0yNDUsNyArMjQ1LDYgQEAgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsXG4ge1xuIFx0c3RydWN0IG5ldCAqbmV0ID0gbmZfY3RfZXhwX25ldChleHApO1xuIFx0c3RydWN0IG5mX2N0X2V2ZW50X25vdGlmaWVyICpub3RpZnk7XG4tXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZTtcbiBcbiBcdGxvY2tkZXBfbmZjdF9leHBlY3RfbG9ja19oZWxkKCk7XG4gXG5AQCAtMjU0LDExICsyNTMsNyBAQCB2b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXhwZWN0X2V2ZW50cyBldmVudCxcbiBcdGlmICghbm90aWZ5KVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXG4tXHRlID0gbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVx1MDAzZW1hc3Rlcik7XG4tXHRpZiAoIWUpXG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cbi1cdGlmIChlLVx1MDAzZWV4cG1hc2sgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBldmVudCkpIHtcbitcdGlmIChleHAtXHUwMDNlZXZlbnRfbWFzayBcdTAwMjYgKDEgXHUwMDNjXHUwMDNjIGV2ZW50KSkge1xuIFx0XHRzdHJ1Y3QgbmZfZXhwX2V2ZW50IGl0ZW0gPSB7XG4gXHRcdFx0LmV4cFx0PSBleHAsXG4gXHRcdFx0LnBvcnRpZFx0PSBwb3J0aWQsXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuaW5kZXggN2FlNjhkNjA1ODZhMjMuLmNkOWFmMzYyMGFmNTg3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG5AQCAtMzMwLDYgKzMzMCw3IEBAIHZvaWQgbmZfY3RfZXhwZWN0X2luaXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCwgdW5zaWduZWQgaW50IGNsYXNzLFxuIFx0c3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmhlbHBlciA9IE5VTEw7XG4gXHRzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXHUwMDNlbWFzdGVyO1xuIFx0c3RydWN0IG5ldCAqbmV0ID0gcmVhZF9wbmV0KFx1MDAyNmN0LVx1MDAzZWN0X25ldCk7XG4rXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZWNhY2hlO1xuIFx0c3RydWN0IG5mX2Nvbm5faGVscCAqaGVscDtcbiBcdGludCBsZW47XG4gXG5AQCAtMzQyLDYgKzM0MywxMCBAQCB2b2lkIG5mX2N0X2V4cGVjdF9pbml0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHVuc2lnbmVkIGludCBjbGFzcyxcbiBcdGV4cC1cdTAwM2VjbGFzcyA9IGNsYXNzO1xuIFx0ZXhwLVx1MDAzZWV4cGVjdGZuID0gTlVMTDtcbiBcbitcdGVjYWNoZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcbitcdGlmIChlY2FjaGUpXG4rXHRcdGV4cC1cdTAwM2VldmVudF9tYXNrID0gZWNhY2hlLVx1MDAzZWV4cG1hc2s7XG4rXG4gXHRoZWxwID0gbmZjdF9oZWxwKGN0KTtcbiBcdGlmIChoZWxwKVxuIFx0XHRoZWxwZXIgPSByY3VfZGVyZWZlcmVuY2UoaGVscC1cdTAwM2VoZWxwZXIpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmNcbmluZGV4IGYzOTQ0NTk4YzE3MjZmLi5mNGZlMTNmZDBlNzAyYSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuY1xuQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIChwb3NzaWJseSBjaGFuZ2VkKSBleHBlY3RhdGlvbiBpdHNlbGYuICovXG4gXHRuZl9uYXRfZnRwID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9mdHBfaG9vayk7XG4gXHRpZiAobmZfbmF0X2Z0cCBcdTAwMjZcdTAwMjYgY3QtXHUwMDNlc3RhdHVzIFx1MDAyNiBJUFNfTkFUX01BU0spXG4tXHRcdHJldCA9IG5mX25hdF9mdHAoc2tiLCBjdGluZm8sIHNlYXJjaFtkaXJdW2ldLmZ0cHR5cGUsXG4rXHRcdHJldCA9IG5mX25hdF9mdHAoc2tiLCBjdCwgY3RpbmZvLCBzZWFyY2hbZGlyXVtpXS5mdHB0eXBlLFxuIFx0XHRcdFx0IHByb3RvZmYsIG1hdGNob2ZmLCBtYXRjaGxlbiwgZXhwKTtcbiBcdGVsc2Uge1xuIFx0XHQvKiBDYW4ndCBleHBlY3QgdGhpcz8gIEJlc3QgdG8gZHJvcCBwYWNrZXQgbm93LiAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmNcbmluZGV4IDRlNmJhZmU0MTQzNzUyLi45MjM2MDk2Mzc1N2E5NyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuY1xuQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXG4gXHRcdFx0bmZfbmF0X2lyYyA9IHJjdV9kZXJlZmVyZW5jZShuZl9uYXRfaXJjX2hvb2spO1xuIFx0XHRcdGlmIChuZl9uYXRfaXJjIFx1MDAyNlx1MDAyNiBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSylcbi1cdFx0XHRcdHJldCA9IG5mX25hdF9pcmMoc2tiLCBjdGluZm8sIHByb3RvZmYsXG4rXHRcdFx0XHRyZXQgPSBuZl9uYXRfaXJjKHNrYiwgY3QsIGN0aW5mbywgcHJvdG9mZixcbiBcdFx0XHRcdFx0XHQgYWRkcl9iZWdfcCAtIGliX3B0cixcbiBcdFx0XHRcdFx0XHQgYWRkcl9lbmRfcCAtIGFkZHJfYmVnX3AsXG4gXHRcdFx0XHRcdFx0IGV4cCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jXG5pbmRleCAzMWNiYjFiNTViOWU2Yy4uZmMzZjYwMDk5YWYzYjUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY1xuQEAgLTM1MjQsNiArMzUyNCw3IEBAIGN0bmV0bGlua19hbGxvY19leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGNkYVtdLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4ge1xuIFx0c3RydWN0IG5ldCAqbmV0ID0gcmVhZF9wbmV0KFx1MDAyNmN0LVx1MDAzZWN0X25ldCk7XG4gXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqaGVscGVyO1xuK1x0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcbiBcdHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHA7XG4gXHRzdHJ1Y3QgbmZfY29ubl9oZWxwICpoZWxwO1xuIFx0dTMyIGNsYXNzID0gMDtcbkBAIC0zNTc1LDYgKzM1NzYsMTAgQEAgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgY2RhW10sIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdGV4cC1cdTAwM2VtYXNrLnNyYy51MyA9IG1hc2stXHUwMDNlc3JjLnUzO1xuIFx0ZXhwLVx1MDAzZW1hc2suc3JjLnUuYWxsID0gbWFzay1cdTAwM2VzcmMudS5hbGw7XG4gXG4rXHRlY2FjaGUgPSBuZl9jdF9lY2FjaGVfZmluZChjdCk7XG4rXHRpZiAoZWNhY2hlKVxuK1x0XHRleHAtXHUwMDNlZXZlbnRfbWFzayA9IGVjYWNoZS1cdTAwM2VleHBtYXNrO1xuK1xuIFx0aWYgKGNkYVtDVEFfRVhQRUNUX05BVF0pIHtcbiBcdFx0ZXJyID0gY3RuZXRsaW5rX3BhcnNlX2V4cGVjdF9uYXQoY2RhW0NUQV9FWFBFQ1RfTkFUXSxcbiBcdFx0XHRcdFx0XHQgZXhwLCBuZl9jdF9sM251bShjdCkpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuY1xuaW5kZXggYTY5NTU5ZWRmOWIzNjMuLmU2NzJkNzRhNjgxN2VhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmNcbkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBpbnQgdGZ0cF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRcdG5mX25hdF90ZnRwID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF90ZnRwX2hvb2spO1xuIFx0XHRpZiAobmZfbmF0X3RmdHAgXHUwMDI2XHUwMDI2IGN0LVx1MDAzZXN0YXR1cyBcdTAwMjYgSVBTX05BVF9NQVNLKVxuLVx0XHRcdHJldCA9IG5mX25hdF90ZnRwKHNrYiwgY3RpbmZvLCBleHApO1xuK1x0XHRcdHJldCA9IG5mX25hdF90ZnRwKHNrYiwgY3QsIGN0aW5mbywgZXhwKTtcbiBcdFx0ZWxzZSBpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XG4gXHRcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcImNhbm5vdCBhZGQgZXhwZWN0YXRpb25cIik7XG4gXHRcdFx0cmV0ID0gTkZfRFJPUDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jXG5pbmRleCA4ZjEwNTQ5MjBhODU3MS4uMzMwNDE1ODA5NDI1Y2UgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcbkBAIC0yNiw2ICsyNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl9hbWFuZGEgPVxuIFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdFx0IHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRcdCB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5AQCAtNDYsMTUgKzQ3LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0LyogVHJ5IHRvIGdldCBzYW1lIHBvcnQ6IGlmIG5vdCwgdHJ5IHRvIGNoYW5nZSBpdC4gKi9cbiBcdHBvcnQgPSBuZl9uYXRfZXhwX2ZpbmRfcG9ydChleHAsIG50b2hzKGV4cC1cdTAwM2VzYXZlZF9wcm90by50Y3AucG9ydCkpO1xuIFx0aWYgKHBvcnQgPT0gMCkge1xuLVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgXCJhbGwgcG9ydHMgaW4gdXNlXCIpO1xuK1x0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwiYWxsIHBvcnRzIGluIHVzZVwiKTtcbiBcdFx0cmV0dXJuIE5GX0RST1A7XG4gXHR9XG4gXG4gXHRzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCBcIiV1XCIsIHBvcnQpO1xuLVx0aWYgKCFuZl9uYXRfbWFuZ2xlX3VkcF9wYWNrZXQoc2tiLCBleHAtXHUwMDNlbWFzdGVyLCBjdGluZm8sXG4rXHRpZiAoIW5mX25hdF9tYW5nbGVfdWRwX3BhY2tldChza2IsIGN0LCBjdGluZm8sXG4gXHRcdFx0XHQgICAgICBwcm90b2ZmLCBtYXRjaG9mZiwgbWF0Y2hsZW4sXG4gXHRcdFx0XHQgICAgICBidWZmZXIsIHN0cmxlbihidWZmZXIpKSkge1xuLVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgXCJjYW5ub3QgbWFuZ2xlIHBhY2tldFwiKTtcbitcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcImNhbm5vdCBtYW5nbGUgcGFja2V0XCIpO1xuIFx0XHRuZl9jdF91bmV4cGVjdF9yZWxhdGVkKGV4cCk7XG4gXHRcdHJldHVybiBORl9EUk9QO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfZnRwLmNcbmluZGV4IGM5MmE0MzZkOWM0ODZlLi4yNWQyMGUyOTcwYWUxYiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuY1xuQEAgLTYxLDYgKzYxLDcgQEAgc3RhdGljIGludCBuZl9uYXRfZnRwX2ZtdF9jbWQoc3RydWN0IG5mX2Nvbm4gKmN0LCBlbnVtIG5mX2N0X2Z0cF90eXBlIHR5cGUsXG4gLyogU28sIHRoaXMgcGFja2V0IGhhcyBoaXQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWF0Y2hpbmcgY29kZS5cbiAgICBNYW5nbGUgaXQsIGFuZCBjaGFuZ2UgdGhlIGV4cGVjdGF0aW9uIHRvIG1hdGNoIHRoZSBuZXcgdmVyc2lvbi4gKi9cbiBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0XHQgICAgICAgc3RydWN0IG5mX2Nvbm4gKmN0LFxuIFx0XHRcdCAgICAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiBcdFx0XHQgICAgICAgZW51bSBuZl9jdF9mdHBfdHlwZSB0eXBlLFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbkBAIC03MSw3ICs3Miw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dW5pb24gbmZfaW5ldF9hZGRyIG5ld2FkZHI7XG4gXHR1X2ludDE2X3QgcG9ydDtcbiBcdGludCBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG4tXHRzdHJ1Y3QgbmZfY29ubiAqY3QgPSBleHAtXHUwMDNlbWFzdGVyO1xuIFx0Y2hhciBidWZmZXJbc2l6ZW9mKFwifDF8fDY1NTM1fFwiKSArIElORVQ2X0FERFJTVFJMRU5dO1xuIFx0dW5zaWduZWQgaW50IGJ1ZmxlbjtcbiBcbkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0cG9ydCA9IG5mX25hdF9leHBfZmluZF9wb3J0KGV4cCwgbnRvaHMoZXhwLVx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0KSk7XG4gXHRpZiAocG9ydCA9PSAwKSB7XG4tXHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBleHAtXHUwMDNlbWFzdGVyLCBcImFsbCBwb3J0cyBpbiB1c2VcIik7XG4rXHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCJhbGwgcG9ydHMgaW4gdXNlXCIpO1xuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXG5pbmRleCAxOWM0ZmNjNjBjNTBmMi4uODliMzFmZTkzMmJhYzAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9pcmMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmNcbkBAIC0zMCw2ICszMCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl9pcmMgPVxuIFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdFx0IHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRcdCB1bnNpZ25lZCBpbnQgbWF0Y2hvZmYsXG5AQCAtMzcsNyArMzgsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cClcbiB7XG4gXHRjaGFyIGJ1ZmZlcltzaXplb2YoXCI0Mjk0OTY3Mjk2IDY1NjM1XCIpXTtcbi1cdHN0cnVjdCBuZl9jb25uICpjdCA9IGV4cC1cdTAwM2VtYXN0ZXI7XG4gXHR1bmlvbiBuZl9pbmV0X2FkZHIgbmV3YWRkcjtcbiBcdHVfaW50MTZfdCBwb3J0O1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuY1xuaW5kZXggMWE1OTExMzJkNmViOTMuLjcxMjFlNjcwNGYzNDFjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmNcbkBAIC0yMSwxNyArMjEsMTYgQEAgc3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX3RmdHAgPVxuIFx0TkZfQ1RfTkFUX0hFTFBFUl9JTklUKE5BVF9IRUxQRVJfTkFNRSk7XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdFx0IHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQgZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sXG4gXHRcdFx0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHApXG4ge1xuLVx0Y29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0ID0gZXhwLVx1MDAzZW1hc3Rlcjtcbi1cbiBcdGV4cC1cdTAwM2VzYXZlZF9wcm90by51ZHAucG9ydFxuIFx0XHQ9IGN0LVx1MDAzZXR1cGxlaGFzaFtJUF9DVF9ESVJfT1JJR0lOQUxdLnR1cGxlLnNyYy51LnVkcC5wb3J0O1xuIFx0ZXhwLVx1MDAzZWRpciA9IElQX0NUX0RJUl9SRVBMWTtcbiBcdGV4cC1cdTAwM2VleHBlY3RmbiA9IG5mX25hdF9mb2xsb3dfbWFzdGVyO1xuIFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xuLVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgZXhwLVx1MDAzZW1hc3RlciwgXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCIpO1xuK1x0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwiY2Fubm90IGFkZCBleHBlY3RhdGlvblwiKTtcbiBcdFx0cmV0dXJuIE5GX0RST1A7XG4gXHR9XG4gXHRyZXR1cm4gTkZfQUNDRVBUO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDE6NTcuMTU4MjU3MDEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI2NzQyMjk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgUmVsZXZhbmNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgcGF0Y2ggYW5kIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgbmV0ZmlsdGVyIGNvbm50cmFjayBoZWxwZXJzLCBzcGVjaWZpY2FsbHkgdGhlIEFtYW5kYSwgRlRQLCBJUkMsIFRGVFAsIGJyb2FkY2FzdCwgbmV0bGluaywgZWNhY2hlLCBhbmQgZXhwZWN0IG1vZHVsZXMuXG5cbkZpcnN0LCBpdCBzZWVtcyB0aGUgcGF0Y2ggaXMgYWRkaW5nIGEgYHN0cnVjdCBuZl9jb25uICpjdGAgcGFyYW1ldGVyIHRvIHNldmVyYWwgaG9vayBmdW5jdGlvbnM6IGBuZl9uYXRfYW1hbmRhX2hvb2tfZm5gLCBgbmZfbmF0X2Z0cF9ob29rX2ZuYCwgYG5mX25hdF9pcmNfaG9va19mbmAsIGFuZCBgbmZfbmF0X3RmdHBfaG9va19mbmAuIE5vdCBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgZm9yIGZ1enppbmcgaW4gaXRzZWxmLiBBZGRpbmcgdGhlIGNvbm50cmFjayBpc24ndCB2ZXJ5IGNvbmNlcm5pbmcgLSB0aGUgY2FsbGVyIG5vdyBoYXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cblxuU2Vjb25kLCB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIGluIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YC4gVGhleSd2ZSBjaGFuZ2VkIGl0IHRvIHVzZSBgZXhwLVx1MDAzZWV2ZW50X21hc2tgIGRpcmVjdGx5IGluc3RlYWQgb2YgZG9pbmcgYSBsb29rdXAgd2l0aCBgbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVx1MDAzZW1hc3RlcilgLiBUaGlzIGlzIGEgKmRlZmluaXRlKiBjaGFuZ2UgaW4gYmVoYXZpb3IuIFRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgYXZvaWRzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIG51bGwtcHRyLWRlcmVmIGlmIGBleHAtXHUwMDNlbWFzdGVyYCBpcyBmcmVlZCBvciBpdHMgZWNhY2hlIGlzIGZyZWVkL25vdCBmb3VuZCwgb3IgaXQganVzdCBvcHRpbWl6ZXMgdGhlIGxvb2t1cC4gV2FpdCwgdGhlIGNvZGUgbm93IGNhY2hlcyB0aGUgZXZlbnQgbWFzayBhdCBleHBlY3RhdGlvbiBjcmVhdGlvbiB0aW1lIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBmcm9tIHRoZSBtYXN0ZXIgYXQgZXZlbnQgcmVwb3J0IHRpbWUuIFRoaXMgaXMgY2FjaGluZyBhIHZhbHVlIGZyb20gYGV4cC1cdTAwM2VtYXN0ZXJgIGluIGBleHBgIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBldmVyeSB0aW1lIHdlIGNhbGwgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgLiBUaGlzIGF2b2lkcyBhY2Nlc3NpbmcgYGV4cC1cdTAwM2VtYXN0ZXJgJ3MgZWNhY2hlIGxhdGVyLCB3aGljaCBtaWdodCBiZSB1bnNhZmUgb3IganVzdCBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LlxuXG5UaGlyZCwgdGhlIHBhdGNoIGFsc28gaW5pdGlhbGl6ZXMgYGV4cC1cdTAwM2VldmVudF9tYXNrYCBpbiBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYW5kIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCBieSBsb29raW5nIHVwIHRoZSBlY2FjaGUgb2YgdGhlIG1hc3RlciBjb25uZWN0aW9uLiBUaGlzIGlzIHRpZWQgdG8gdGhlIHByZXZpb3VzIGNoYW5nZSBiZWNhdXNlIGBleHAtXHUwMDNlZXZlbnRfbWFza2AgaGFzIHRvIGJlIGluaXRpYWxpemVkIGF0IHNvbWUgcG9pbnQuIEl0J3MgaW5pdGlhbGl6aW5nIHRoYXQgbWVtYmVyLlxuXG5TbywgSSB0aGluayB3ZSBoYXZlIGEgcmVhbCBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlIGJlY2F1c2UgaXQncyBhdm9pZGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXB0ci1kZXJlZiBvciBhdCBsZWFzdCBvcHRpbWl6aW5nIHRoZSBsb29rdXAuIFRoZSBvcmlnaW5hbCBjb2RlIGxvb2tlZCBsaWtlOlxuXG5gYGBjXG4tXHRlID0gbmZfY3RfZWNhY2hlX2ZpbmQoZXhwLVx1MDAzZW1hc3Rlcik7XG4tXHRpZiAoIWUpXG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cbi1cdGlmIChlLVx1MDAzZWV4cG1hc2sgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBldmVudCkpIHtcbitcdGlmIChleHAtXHUwMDNlZXZlbnRfbWFzayBcdTAwMjYgKDEgXHUwMDNjXHUwMDNjIGV2ZW50KSkge1xuYGBgXG5cblRoaXMgY2hhbmdlIGludm9sdmVzIHN0b3JpbmcgYSB2YWx1ZSBpbiBhbiBleHBlY3RhdGlvbiB3aGVuIHRoZSBleHBlY3RhdGlvbiBpcyBjcmVhdGVkIGFuZCBzdWJzZXF1ZW50bHkgdXNpbmcgdGhhdCB2YWx1ZS4gU28sIGl0J3MgY2FjaGluZyBhdCBleHBlY3RhdGlvbiBjcmVhdGlvbiB0aW1lIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBmcm9tIHRoZSBtYXN0ZXIgYXQgZXZlbnQgcmVwb3J0IHRpbWUuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSB0aGlua2luZyB3ZSBuZWVkIGBDT05GSUdfTkZfQ09OTlRSQUNLYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTYCwgYENPTkZJR19ORl9OQVRgLCBgQ09ORklHX05GX0NPTk5UUkFDS19BTUFOREFgLCBgQ09ORklHX05GX0NPTk5UUkFDS19GVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19JUkNgLCBgQ09ORklHX05GX0NPTk5UUkFDS19URlRQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYW5kIGBDT05GSUdfTkZfQ1RfTkVUTElOS2AuIEJlc3QgdG8gdXNlIGBncmVwcGVyYCB0byBmaW5kIHRoZSBleGFjdCBjb25maWcgbmFtZXMgZm9yIHNhZmV0eSwgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0OSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjA2LjQyNTY4MjExNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk3MDk4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTgwPUNPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzo4MTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTgyLUNPTkZJR19ORl9DT05OVFJBQ0tfVElNRU9VVD15XFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE0OT1DT05GSUdfTkZfQ09OTlRSQUNLPW1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE1MDpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xNTEtQ09ORklHX05FVEZJTFRFUl9YVF9NQVJLPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTU0PUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6NTU6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTU2LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz01Nz1DT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzo1ODpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTU5LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9NjE9Q09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjYyOkNPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTYzLUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz02MD1DT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzo2MTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTYyLUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz00ND1DT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUks9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzo0NTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTQ2LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZz00OD1DT05GSUdfTkZfQ09OTlRSQUNLX01BUks9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZzo0OTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZzVfZGVmY29uZmlnLTUwLUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTIzPUNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzoxMjQ6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMTI1LUNPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xODQ9Q09ORklHX05GX0NPTk5UUkFDS19QUk9DRlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxODU6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xODYtQ09ORklHX05GX0NPTk5UUkFDS19USU1FT1VUPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xNzU9Q09ORklHX05GX0NPTk5UUkFDS19QUk9DRlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxNzY6Q09ORklHX05GX0NPTk5UUkFDS19FVkVOVFM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xNzctQ09ORklHX05GX0NPTk5UUkFDS19USU1FT1VUPXlcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaD01MT1zdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLmgtNjItI2VuZGlmXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay5oOjYzOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaC02NC1cXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldF9lY2FjaGUgZWNhY2hlO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0zND1uZl9jdF9lY2FjaGVfZmluZChjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0zNS17XFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDozNjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTM3LVxcdHJldHVybiBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX0VDQUNIRSk7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oPTQzPXN0YXRpYyBpbmxpbmUgYm9vbCBuZl9jdF9lY2FjaGVfZXhpc3QoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtNDQte1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6NDU6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC00Ni1cXHRyZXR1cm4gbmZfY3RfZXh0X2V4aXN0KGN0LCBORl9DVF9FWFRfRUNBQ0hFKTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtNTEtXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDo1MjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTUzLVxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xMDI9bmZfY29ubnRyYWNrX2V2ZW50X2NhY2hlKGVudW0gaXBfY29ubnRyYWNrX2V2ZW50cyBldmVudCwgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTAzLXtcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjEwNDojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTEwNS1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBuZl9jdF9uZXQoY3QpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xMjg9bmZfY29ubnRyYWNrX2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTMwLXtcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjEzMTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTEzMi1cXHRpZiAobmZfY3RfZWNhY2hlX2V4aXN0KGN0KSlcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTM5PW5mX2Nvbm50cmFja19ldmVudChlbnVtIGlwX2Nvbm50cmFja19ldmVudHMgZXZlbnQsIHN0cnVjdCBuZl9jb25uICpjdClcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0MC17XFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxNDE6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNDItXFx0aWYgKG5mX2N0X2VjYWNoZV9leGlzdChjdCkpXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0Ny1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjE0ODojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE0OS12b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoZW51bSBpcF9jb25udHJhY2tfZXhwZWN0X2V2ZW50cyBldmVudCxcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg9MTYwPXN0YXRpYyBpbmxpbmUgYm9vbCBuZl9jb25udHJhY2tfZWNhY2hlX2R3b3JrX3BlbmRpbmcoY29uc3Qgc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNjMtfVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTY0OiNlbHNlIC8qIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTICovXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNjUtXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oPTE4NT1zdGF0aWMgaW5saW5lIGJvb2wgbmZfY29ubnRyYWNrX2VjYWNoZV9kd29ya19wZW5kaW5nKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCkgeyByZXR1cm4gZmFsc2U7IH1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oOjE4NjojZW5kaWYgLyogQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgKi9cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE4Ny0jZW5kaWYgLypfTkZfQ09OTlRSQUNLX0VDQUNIRV9IKi9cXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmg9OT1lbnVtIG5mX2N0X2V4dF9pZCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5oLTE1LVxcdE5GX0NUX0VYVF9BQ0NULFxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmg6MTY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuaC0xNy1cXHRORl9DVF9FWFRfRUNBQ0hFLFxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bnMvY29ubnRyYWNrLmg9ODM9c3RydWN0IG5ldG5zX2N0IHtcXG5pbmNsdWRlL25ldC9uZXRucy9jb25udHJhY2suaDo4NDojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5pbmNsdWRlL25ldC9uZXRucy9jb25udHJhY2suaC04NS1cXHRib29sIGVjYWNoZV9kd29ya19wZW5kaW5nO1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTE0OD1jb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTI9bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19USU1FU1RBTVApICs9IG5mX2Nvbm50cmFja190aW1lc3RhbXAub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMpICs9IG5mX2Nvbm50cmFja19lY2FjaGUub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQtbmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFMpICs9IG5mX2Nvbm50cmFja19sYWJlbHMub1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jPTY1MD1zdGF0aWMgdm9pZCBuZl9jdF9hZGRfdG9fZWNhY2hlX2xpc3Qoc3RydWN0IG5mX2Nvbm4gKmN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy02NTEte1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzo2NTI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTY1My1cXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCAqY25ldCA9IG5mX2N0X3Blcm5ldChuZl9jdF9uZXQoY3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xNzU0PWluaXRfY29ubnRyYWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mX2Nvbm4gKnRtcGwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTc2MS1cXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX3R1cGxlIHJlcGxfdHVwbGU7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE3NjI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE3NjMtXFx0c3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUgKmVjYWNoZTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xNzk0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzoxNzk1OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xNzk2LVxcdGVjYWNoZSA9IHRtcGwgPyBuZl9jdF9lY2FjaGVfZmluZCh0bXBsKSA6IE5VTEw7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYz0zMD1zdGF0aWMgY29uc3QgdTggbmZfY3RfZXh0X3R5cGVfbGVuW05GX0NUX0VYVF9OVU1dID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtMzYtXFx0W05GX0NUX0VYVF9BQ0NUXSA9IHNpemVvZihzdHJ1Y3QgbmZfY29ubl9hY2N0KSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYzozNzojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHRlbmQuYy0zOC1cXHRbTkZfQ1RfRVhUX0VDQUNIRV0gPSBzaXplb2Yoc3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUpLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM9NTc9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQgdG90YWxfZXh0ZW5zaW9uX3NpemUodm9pZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4dGVuZC5jLTY4LVxcdFxcdCsgc2l6ZW9mKHN0cnVjdCBuZl9jb25uX2FjY3QpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmM6Njk6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXh0ZW5kLmMtNzAtXFx0XFx0KyBzaXplb2Yoc3RydWN0IG5mX2Nvbm50cmFja19lY2FjaGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU3PXN0YXRpYyBpbnQgY3RuZXRsaW5rX2R1bXBfc2VjY3R4KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODQtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM4NTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg2LXN0YXRpYyBpbnRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz02NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGN0YV9pcF9ubGFfcG9saWN5W0NUQV9JUF9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy02NTAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjY1MTojaWYgZGVmaW5lZChDT05GSUdfTkVURklMVEVSX05FVExJTktfR0xVRV9DVCkgfHwgZGVmaW5lZChDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUylcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtNjUyLXN0YXRpYyBzaXplX3QgY3RuZXRsaW5rX3Byb3RvX3NpemUoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTY5Nj1zdGF0aWMgaW5saW5lIHNpemVfdCBjdG5ldGxpbmtfdGltZXN0YW1wX3NpemUoY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTcwNy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6NzA4OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy03MDktc3RhdGljIHNpemVfdCBjdG5ldGxpbmtfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9NzQ0PWN0bmV0bGlua19jb25udHJhY2tfZXZlbnQodW5zaWduZWQgaW50IGV2ZW50cywgY29uc3Qgc3RydWN0IG5mX2N0X2V2ZW50ICppdGVtKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTg4Mi19XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjg4MzojZW5kaWYgLyogQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMgKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtODg0LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTE2NjY9c3RhdGljIGludCBjdG5ldGxpbmtfZ2V0X2Nvbm50cmFjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3MjktXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE3MzA6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3MzEtc3RhdGljIGludCBjdG5ldGxpbmtfZHVtcF9vbmVfZW50cnkoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0xNzc2PWN0bmV0bGlua19kdW1wX2R5aW5nKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xNzc4LVxcdHN0cnVjdCBjdG5ldGxpbmtfbGlzdF9kdW1wX2N0eCAqY3R4ID0gKHZvaWQgKiljYi1cXHUwMDNlY3R4O1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoxNzc5OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0xNzgwLVxcdGNvbnN0IHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3OTEtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjE3OTI6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTE3OTMtXFx0ZWNhY2hlX25ldCA9IG5mX2Nvbm5fcGVybmV0X2VjYWNoZShuZXQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTMwNjY9Y3RuZXRsaW5rX2V4cF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBvcnRpZCwgdTMyIHNlcSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDg5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozMDkwOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zMDkxLXN0YXRpYyBpbnRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNzQyPXN0YXRpYyBpbnQgY3RuZXRsaW5rX3N0YXRfZXhwX2NwdShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NTUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM3NTY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM3NTctc3RhdGljIHN0cnVjdCBuZl9jdF9ldmVudF9ub3RpZmllciBjdG5sX25vdGlmaWVyID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM4NDk9c3RhdGljIGludCBfX25ldF9pbml0IGN0bmV0bGlua19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM4NTAte1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzozODUxOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODUyLVxcdG5mX2Nvbm50cmFja19yZWdpc3Rlcl9ub3RpZmllcihuZXQsIFxcdTAwMjZjdG5sX25vdGlmaWVyKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zODU3PXN0YXRpYyB2b2lkIGN0bmV0bGlua19uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zODU4LXtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6Mzg1OTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzg2MC1cXHRuZl9jb25udHJhY2tfdW5yZWdpc3Rlcl9ub3RpZmllcihuZXQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jPTU4NT1lbnVtIG5mX2N0X3N5c2N0bF9pbmRleCB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtNTkyLVxcdE5GX1NZU0NUTF9DVF9BQ0NULFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYzo1OTM6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jLTU5NC1cXHRORl9TWVNDVExfQ1RfRVZFTlRTLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jPTY0Mj1zdGF0aWMgc3RydWN0IGN0bF90YWJsZSBuZl9jdF9zeXNjdGxfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy02OTgtXFx0fSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmM6Njk5OiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy03MDAtXFx0W05GX1NZU0NUTF9DVF9FVkVOVFNdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc3RhbmRhbG9uZS5jPTEwMDM9c3RhdGljIGludCBuZl9jb25udHJhY2tfc3RhbmRhbG9uZV9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zdGFuZGFsb25lLmMtMTAxOS1cXHR0YWJsZVtORl9TWVNDVExfQ1RfQUNDVF0uZGF0YSA9IFxcdTAwMjZuZXQtXFx1MDAzZWN0LnN5c2N0bF9hY2N0O1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYzoxMDIwOiNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUuYy0xMDIxLVxcdHRhYmxlW05GX1NZU0NUTF9DVF9FVkVOVFNdLmRhdGEgPSBcXHUwMDI2bmV0LVxcdTAwM2VjdC5zeXNjdGxfZXZlbnRzO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYz00ND1zdGF0aWMgdW5zaWduZWQgaW50IG5mbmV0bGlua19wZXJuZXRfaWQgX19yZWFkX21vc3RseTtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTQ1LVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM6NDY6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy00Ny1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKG5mbmxfZ3JwX2FjdGl2ZV9sb2NrKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM9NjcwPXN0YXRpYyB2b2lkIG5mbmV0bGlua19iaW5kX2V2ZW50KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGdyb3VwKVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNjcxLXtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jOjY3MjojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTY3My1cXHRpbnQgdHlwZSwgZ3JvdXBfYml0O1xcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYz03Mjg9c3RhdGljIHZvaWQgbmZuZXRsaW5rX3VuYmluZChzdHJ1Y3QgbmV0ICpuZXQsIGludCBncm91cClcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTcyOS17XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYzo3MzA6I2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy03MzEtXFx0aW50IHR5cGUsIGdyb3VwX2JpdDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9Mjc0PXN0YXRpYyB2b2lkIG5mdF9jdF9zZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMxNC0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMxNTojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMxNi1cXHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NTU3PXN0YXRpYyBpbnQgbmZ0X2N0X3NldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU5Ni0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjU5NzojaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU5OC1cXHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZz02ND1DT05GSUdfTkZfQ09OTlRSQUNLPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzo2NTpDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWctNjYtQ09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MjowOC43MjI3ODUxNTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODEzNDE3MzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBOZXR3b3JrIENvbm5lY3Rpb24gVHJhY2tpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHRvdWNoaW5nIHF1aXRlIGEgZmV3IGZpbGVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbmZfY29ubnRyYWNrYCBhbmQgYG5mX25hdGAgc3Vic3lzdGVtcy4gVGhlIGNoYW5nZXMgc2VlbSBjZW50ZXJlZCBhcm91bmQgc3BlY2lmaWMgcHJvdG9jb2xzOiBBbWFuZGEsIEZUUCwgSVJDLCBhbmQgVEZUUCwgYXMgd2VsbCBhcyBzb21lIG1vcmUgZ2VuZXJhbCBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQgZnVuY3Rpb25hbGl0aWVzLiBUaGUgbGlzdCBpcyBleHRlbnNpdmU6IGBuZl9jb25udHJhY2tfYW1hbmRhLmNgLCBgbmZfY29ubnRyYWNrX2Z0cC5jYCwgYG5mX2Nvbm50cmFja19pcmMuY2AsIGFuZCBgbmZfY29ubnRyYWNrX3RmdHAuY2AsIGZvbGxvd2VkIGJ5IGBuZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgLCBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGBuZl9jb25udHJhY2tfZWNhY2hlLmNgLCBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCwgdGhlbiBgbmZfbmF0X2FtYW5kYS5jYCwgYG5mX25hdF9mdHAuY2AsIGBuZl9uYXRfaXJjLmNgLCBhbmQgYG5mX25hdF90ZnRwLmNgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIHBhdGNoIGlzIGVpdGhlciBlbmhhbmNpbmcgb3IgZml4aW5nIGludGVyYWN0aW9ucyB3aXRoIHRoZXNlIHNwZWNpZmljIHByb3RvY29scywgbGlrZWx5IGhhbmRsaW5nIHRoZWlyIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3IgTkFUIHRyYXZlcnNhbCBtb3JlIGVmZmVjdGl2ZWx5LlxuXG5JIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIGFyZSBlbmFibGVkLiBUaGUgcmVxdWlyZWQgY29uZmlncyB3b3VsZCBiZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYE5GX0NUX05FVExJTktgLCBgTkZfTkFUX0FNQU5EQWAsIGBORl9OQVRfRlRQYCwgYE5GX05BVF9JUkNgLCBhbmQgYE5GX05BVF9URlRQYC5cblxuSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIGBORl9OQVRfQU1BTkRBYCBpcyByZWFsbHkgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Mjg0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjE0LjUzNjIwNDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjAzMDgzMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZfTkFUX0FNQU5EQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDA3PWNvbmZpZyBORl9OQVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9Njk9ZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNzEtIyBOQVQgaGVscGVyc1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NzI6b2JqLSQoQ09ORklHX05GX05BVF9BTUFOREEpICs9IG5mX25hdF9hbWFuZGEub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNzMtb2JqLSQoQ09ORklHX05GX05BVF9GVFApICs9IG5mX25hdF9mdHAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MjoxNi4zOTY1MjM3MzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY0MzA3NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gTW9kdWxlIENoZWNrKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nLCBcIlllcCwgSSBrbm93IHRob3NlIE5BVCBtb2R1bGVzLCBgTkZfTkFUX0FNQU5EQWAsIGBORl9OQVRfRlRQYCwgYE5GX05BVF9JUkNgLCBhbmQgYE5GX05BVF9URlRQYCBhcmUgZGVmaW5pdGVseSBhcm91bmQuIFRoZXkncmUgcHJldHR5IHN0YW5kYXJkIGluY2x1c2lvbnMsIGVzcGVjaWFsbHkgZm9yIGFueW9uZSBkZWFsaW5nIHdpdGggbGVnYWN5IHByb3RvY29scyBvciBzcGVjaWZpYyBhcHBsaWNhdGlvbiBsYXllciBnYXRld2F5cy5cIiBOb3csIGxldCdzIGp1c3QgbWFrZSBzdXJlLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgdGhhdCB0aGUgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIG1vZHVsZSBpcyBsb2FkZWQuIFRoYXQncyBhbiBpbXBvcnRhbnQgb25lIGFuZCBJIHdhbnQgdG8gdmVyaWZ5IGl0cyBleGlzdGVuY2UuIEdvdHRhIGJlIHN5c3RlbWF0aWMgYWJvdXQgdGhlc2UgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTExNCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjE5LjQ2MDgzMzUxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQwNjEzOTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX0NPTk5UUkFDS19CUk9BRENBU1RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTI1OD1jb25maWcgTkZfQ09OTlRSQUNLX0lSQ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3NS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTI3Nz1jb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJOZXRCSU9TIG5hbWUgc2VydmljZSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzk6XFx0c2VsZWN0IE5GX0NPTk5UUkFDS19CUk9BRENBU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjgwLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yOTY9Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk4LVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5OTpcXHRzZWxlY3QgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMDAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT00Nz1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0lSQykgKz0gbmZfY29ubnRyYWNrX2lyYy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo0ODpvYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0JST0FEQ0FTVCkgKz0gbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS00OS1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX05FVEJJT1NfTlMpICs9IG5mX2Nvbm50cmFja19uZXRiaW9zX25zLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDI6MjEuMTAxNDUyNTE0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYzMDQ5NDQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29ubnRyYWNrIEhlbHBlciBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBpdCBsb29rcyBsaWtlIHRoZXJlJ3MgZGVmaW5pdGVseSBzb21ldGhpbmcgcHJlc2VudCB0aGF0IHJlcXVpcmVzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZm9jdXMgc3ltYm9scy4gRmlyc3QsIEkgbmVlZCB0byBsaXN0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gc2VlIHdoYXQgdGhleSdyZSBkb2luZy4gTGV0J3Mgc2VlLi4uXG5cbkkgaGF2ZTpcbiogICBgYW1hbmRhX2hlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuY2BcbiogICBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgXG4qICAgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY2BcbiogICBgbmZfY3RfZXhwZWN0X2luaXRgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2BcbiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jYCB3aGljaCwgd2FpdCwgaXMgdGhhdCAqcmVhbGx5KiBqdXN0IGBoZWxwYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhY2N1cmF0ZSwgcGVyaGFwcyBpdCdzIHVzaW5nIHRoZSBoZWxwZXIgYGZ0cF9oZWxwYD9cbiogICBgaGVscGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jYCAtIHNhbWUgdGhpbmcgaGVyZSwgY291bGQgYmUgbW9yZSBzcGVjaWZpY1xuKiAgIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jYFxuKiAgIGB0ZnRwX2hlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmNgXG4qICAgYGhlbHBgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuY2AgLSBhaCwgdGhlcmUgYXJlIE5BVCBoZWxwZXJzIGFzIHdlbGxcbiogICBgbmZfbmF0X2Z0cGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jYCAtIGEgbmF0IGZ1bmN0aW9uIGhlcmUsIHRoYXQncyBpbnRlcmVzdGluZ1xuKiAgIGBoZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmNgIC0gYW5kIGFub3RoZXIgYGhlbHBgIGZ1bmN0aW9uLlxuKiAgIGBoZWxwYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jYCAtIGFuZCB0aGlzIGFzIHdlbGwuXG5cbk5vdywgSSdtIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbmZfY29ubnRyYWNrX2Z0cC5jYCwgYG5mX2Nvbm50cmFja19pcmMuY2AsIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2lyYy5jYCwgYW5kIGBuZl9uYXRfdGZ0cC5jYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGdlbmVyaWMgYGhlbHBgIGZ1bmN0aW9ucyBhcmUgbm90IG1hc2tpbmcgYW55IGRlZXBlciwgbW9yZSBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5LCBhbmQgSSBzaG91bGQgYWxzbyBnZXQgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlc2UgaGVscGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MDUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDI6MjcuNzMxOTQ5MDYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjczNTc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJec3RhdGljIGludCBoZWxwXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmM9MzM2PXN0YXRpYyB2b2lkIHVwZGF0ZV9ubF9zZXEoc3RydWN0IG5mX2Nvbm4gKmN0LCB1MzIgbmxfc2VxLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMtMzYwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jOjM2MTpzdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYy0zNjItXFx0XFx0dW5zaWduZWQgaW50IHByb3RvZmYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjI3Ljc4ODY5NTE3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODgzNTExMjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBgaGVscGAgRnVuY3Rpb25zIGZvciBTeXprYWxsZXIgQ292ZXJhZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgd2UgY2FuIGxldmVyYWdlIHRoZXNlIGBoZWxwYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgU3l6a2FsbGVyJ3MgY292ZXJhZ2UgbWVjaGFuaXNtLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgaGVscGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgY291bGQgcG90ZW50aWFsbHkgcHJlc2VudCBhIG5hbWluZyBjb25mbGljdCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZnVuY3Rpb25zIHdpdGggdGhhdCBuYW1lLCBtYWtpbmcgZGlyZWN0IHRhcmdldGluZyBkaWZmaWN1bHQuIEhvd2V2ZXIsIFN5emthbGxlciB1c2VzIFBDIGFkZHJlc3NlcyBmb3IgaXRzIGNvdmVyYWdlIGFuYWx5c2lzLCBzbyB0aGF0IHBhcnRpY3VsYXIgaXNzdWUgaXNuJ3QgYSBwcm9ibGVtLlxuXG5Gb3IgdGhlIGBGb2N1c1N5bWJvbHNgIGNvbXBvbmVudCwgd2UndmUgZ290IG9wdGlvbnM6IHdlIGNhbiBwcm92aWRlIGFsbCBleHBvcnRlZCBmdW5jdGlvbnMgKHN0YXRpYyBhbmQgbm9uLXN0YXRpYyksIG9yIGp1c3QgdGhlIHN0YXRpYyBvbmVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbGlzdCB0aGVtIGFuZCBldmFsdWF0ZS4gTGV0J3Mgc2VlLi4uIHdlIGhhdmU6IGBhbWFuZGFfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAuXG5cbkZvciB0aGVzZSBzdGF0aWMgYGhlbHBgIGZ1bmN0aW9ucywgd2UgaGF2ZSB0aGUgb3B0aW9uIG9mIGVpdGhlciBpbmNsdWRpbmcgdGhlbSBvciBvbWl0dGluZyB0aGVtIGZyb20gdGhlIGZvY3VzIHN5bWJvbHMuIEl0IHNlZW1zIGJldHRlciB0byBpbmNsdWRlIHRob3NlIHdpdGggdW5pcXVlIG5hbWVzLCBzaW5jZSB0aG9zZSBhcmUgY2xlYXJseSBkaXN0aW5ndWlzaGFibGUuXG5cbk5vdywgd2FpdCBhIG1vbWVudCwgdGhpbmtpbmcgdGhyb3VnaCB0aGlzLi4uIGxldCdzIGlkZW50aWZ5IHNvbWUgdGFyZ2V0czogYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgIGxvb2tzIGxpa2UgYSBzb2xpZCBjaG9pY2UuIEFsc28sIGBuZl9jdF9leHBlY3RfaW5pdGAsIGFuZCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgbG9vayBnb29kLCB0b28uIE9oLCBhbmQgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBhbWFuZGFfaGVscGAsIGB0ZnRwX2hlbHBgLCBhbmQgYG5mX25hdF9mdHBgIGFsc28uXG5cbkknbGwgcXVpY2tseSBjaGVjayBpZiBgbmZfbmF0X2FtYW5kYWAgaXMgdW5pcXVlbHkgbmFtZWQ7IGl0J3MgYWx3YXlzIGdvb2QgdG8gdmVyaWZ5IHRoZXNlIHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4MzEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDI6MzcuNjcyMjA4OTUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDk5NTYxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJec3RhdGljIHVuc2lnbmVkIGludCBoZWxwXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmM9MjU9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfbmF0X2hlbHBlciBuYXRfaGVscGVyX2FtYW5kYSA9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy0yNy1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzoyODpzdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy0yOS1cXHRcXHRcXHQgc3RydWN0IG5mX2Nvbm4gKmN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MjozNy43MjcyMTAxNTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI4MTAxNTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggYW4gZXhwZXJ0J3MgbWluZDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEEgVHJvdWJsZXNob290aW5nIERpcmVjdGl2ZSoqXG5cblJpZ2h0LCBpdCBib2lscyBkb3duIHRvIHNvbWV0aGluZyBzdHJhaWdodGZvcndhcmQ6ICpoZWxwKi4gSSBuZWVkIHRvIGZpZ3VyZSB0aGlzIG91dCwgd2hpY2ggbWVhbnMgSSdtIGxvb2tpbmcgZm9yIGd1aWRhbmNlIG9yIGEgc29sdXRpb24uIEl0J3MgYSB0cm91Ymxlc2hvb3Rpbmcgc2l0dWF0aW9uLCBwcm9iYWJseSBkZWFsaW5nIHdpdGggTkFUIChOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24pLlxuXG5HaXZlbiB0aGUgY29udGV4dCwgdGhlIGltbWVkaWF0ZWx5IHJlbGV2YW50IGFyZWFzIGFyZSBsaWtlbHkgdGhlIGtlcm5lbCBtb2R1bGVzIGhhbmRsaW5nIElSQyBhbmQgVEZUUCBOQVQgc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aG9zZSBtb2R1bGVzLCBgbmZfbmF0X2lyYy5jYCBhbmQgYG5mX25hdF90ZnRwLmNgLCBoYW5kbGUgdGhlaXIgcmVzcGVjdGl2ZSBwcm90b2NvbHMgd2l0aGluIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhleSBpbnRlcmNlcHQsIHRyYW5zbGF0ZSwgYW5kIGZvcndhcmQgcGFja2V0cyB0byBzZWUgaWYgSSBjYW4gZmluZCB0aGUgcm9vdCBjYXVzZSBvZiB3aGF0ZXZlciBpcyBnb2luZyB3cm9uZy4gUGVyaGFwcyB0aGVyZSBhcmUgc29tZSBlZGdlIGNhc2VzIEknbSBvdmVybG9va2luZyBpbiB0aGVpciBsb2dpYy4gTGV0J3MgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzY3OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjQ2LjAwODIyNzA0M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2MjEwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2lyYy5jPTI5PXN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX25hdF9oZWxwZXIgbmF0X2hlbHBlcl9pcmMgPVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMtMzEtXFxubmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmM6MzI6c3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9uZl9uYXRfaXJjLmMtMzMtXFx0XFx0XFx0IHN0cnVjdCBuZl9jb25uICpjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDI6NDYuMDYyODc1ODU5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzMTQ3NTM2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRob3VnaHQgcHJvY2VzczpcblxuKipSZXZpZXdpbmcgYW5kIFZhbGlkYXRpbmcgRnVuY3Rpb24gTmFtaW5nKipcblxuQWxyaWdodCwgc28gaXQncyBhbGwgYWJvdXQgY2hlY2tpbmcgdGhlc2UgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgdGhlICdoZWxwJyBmdW5jdGlvbnMuIFRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgc3RyYWlnaHRmb3J3YXJkLCB0aGVzZSBzeW1ib2xzIGFyZSBpbmRlZWQgcmVsYXRlZCB0byBoZWxwIGZ1bmN0aW9uYWxpdHkuIEkndmUgZ290IHRoaXMgbGlzdCBvZiBmb2N1cyBzeW1ib2xzOiBgYW1hbmRhX2hlbHBgLCBgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwYCwgYG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRgLCBgbmZfY3RfZXhwZWN0X2luaXRgLCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAsIGB0ZnRwX2hlbHBgLCBhbmQgYG5mX25hdF9mdHBgLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHVzaW5nIHRoZSByaWdodCBuYW1lIGZvciB0aGF0IGxhc3Qgb25lLCBgbmZfbmF0X2Z0cGAuIFRoYXQgc291bmRzIGZhbWlsaWFyIGJ1dCBiZXN0IHRvIGNvbmZpcm0gYmVmb3JlIHByb2NlZWRpbmcuIFRpbWUgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgYG5mX25hdF9mdHBgLiBJJ20gYSBzdGlja2xlciBmb3IgYWNjdXJhY3kgYW5kIHRoaXMgd2lsbCBsaWtlbHkgYmUgaW1wb3J0YW50IGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA1NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0Mjo1NC4zNzc2MzE5MDJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDg0NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9mdHBcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX25hdF9mdHAuYz0zMz1zdGF0aWMgaW50IG5mX25hdF9mdHBfZm10X2NtZChzdHJ1Y3QgbmZfY29ubiAqY3QsIGVudW0gbmZfY3RfZnRwX3R5cGUgdHlwZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jLTYyLSAgIE1hbmdsZSBpdCwgYW5kIGNoYW5nZSB0aGUgZXhwZWN0YXRpb24gdG8gbWF0Y2ggdGhlIG5ldyB2ZXJzaW9uLiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jOjYzOnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X2Z0cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2Z0cC5jLTY0LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQyOjU0LjQzNDEyMTI3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTk1NDI0NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbmZfbmF0X2Z0cGAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgZGVmaW5pdGVseSByZWxhdGVkIHRvIGBuZl9uYXRfZnRwYC4gTm93LCBsZXQncyBnZXQgaW50byB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXNlIGFyZSBlbmFibGVkOiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfQlJPQURDQVNUYCwgYE5GX0NUX05FVExJTktgLCBgTkZfTkFUX0FNQU5EQWAsIGBORl9OQVRfRlRQYCwgYE5GX05BVF9JUkNgLCBhbmQgYE5GX05BVF9URlRQYC5cblxuV2FpdCBhIG1pbnV0ZSwgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgIGlzIGEgdHJpc3RhdGUgY29uZmlnLiBUaGF0IG1lYW5zIGl0IGNhbiBiZSBvbiwgb2ZmLCBvciBtb2R1bGFyLiBCdXQgaXQgc2VlbXMgdG8gYmUgc2VsZWN0ZWQgaW5kaXJlY3RseSBieSBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgLiBJZGVhbGx5LCBJJ2Qgd2FudCB0byBlbmFibGUgaXQgZGlyZWN0bHkgaWYgSSBjYW4sIG9yLCBpZiBub3QsIEknZCBjaG9vc2UgdGhlIG9uZXMgdGhhdCBzZWxlY3QgaXQuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWcgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gc2VlIGlmIEkgY2FuIGVuYWJsZSBgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVGAgZGlyZWN0bHkuIEFscmlnaHQsIGhlcmUncyB0aGUgcmVsZXZhbnQgc2VjdGlvbjpcblxuYGBgXG5jb25maWcgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxuXHR0cmlzdGF0ZVxuYGBgXG5cbkFoLCBpdCBoYXMgbm8gcHJvbXB0LiBUaGF0IG1lYW5zIHRoZSB1c2VyIGNhbid0IHNlbGVjdCBpdCBkaXJlY3RseS4gU28sIHRoZSBiZXN0IGFwcHJvYWNoIGhlcmUgaXMgdG8gZ28gd2l0aCBlbmFibGluZyBgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNgIGFuZCBgTkZfQ09OTlRSQUNLX1NOTVBgIGluc3RlYWQuIFRoZXknbGwgcHVsbCBpdCBpbiBhdXRvbWF0aWNhbGx5LiBUaGF0J3MgdGhlIGNsZWFuZXIgc29sdXRpb24sIGtlZXBpbmcgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGEgaGlkZGVuIGNvbmZpZyBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTQ5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjAxLjQyOTU0Nzc0NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MTc3NzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ09OTlRSQUNLX05FVEJJT1NfTlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTI3ND1jb25maWcgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjAzLjM5MTMzMDQ3OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTY3NzQwOTU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFJldmlldyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gaW5jb3Jwb3JhdGUgYSBjb3VwbGUgb2YgbmV3IGNvbm5lY3Rpb24gdHJhY2tpbmcgb3B0aW9ucyBpbnRvIHRoZSBjb25maWd1cmF0aW9uLiBTcGVjaWZpY2FsbHksIEknbSBhZGRpbmcgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCBhbmQgYE5GX0NPTk5UUkFDS19TTk1QYCB0byB0aGUgbGlzdC4gVGhleSBzZWVtIHJlbGV2YW50IHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgYW5kIEkgd2FudCB0byBiZSBjb21wcmVoZW5zaXZlLlxuXG5Ob3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHNvbWV0aGluZy4gSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2Agb3B0aW9uIHRvIHNlZSBpZiBpdCdzIHNldCB1cCB3aXRoIGEgcHJvbXB0LiBBaCwgZ29vZC4gWWVzLCBpdCBoYXMgYSBib29sZWFuIHByb21wdC4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHVzZXIgY3VzdG9taXphdGlvbiBpbiBhIHdheSBJIGV4cGVjdC5cblxuT2theSwgbmV4dCB1cCBpcyBgTkZfQ1RfTkVUTElOS2AuIE5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzUwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MTkuMDY4NzQxODk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI0MDA3NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DVF9ORVRMSU5LXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zNTU9Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzY1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjY6Y29uZmlnIE5GX0NUX05FVExJTktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzY3LVxcdHRyaXN0YXRlICdDb25uZWN0aW9uIHRyYWNraW5nIG5ldGxpbmsgaW50ZXJmYWNlJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM3Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzczOmNvbmZpZyBORl9DVF9ORVRMSU5LX1RJTUVPVVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzc0LVxcdHRyaXN0YXRlICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0IHR1bmluZyB2aWEgTmV0bGluaydcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM4NTpjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg2LVxcdHRyaXN0YXRlICdDb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMgaW4gdXNlci1zcGFjZSB2aWEgTmV0bGluaydcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MjAuNzkyNzUzMDk1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzQ2MjQ0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkFzc2Vzc2luZyB0aGUgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgd2UndmUgZ290IGEgcHJvbXB0IHRvIHdvcmsgd2l0aCwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBnaXZlbiB0aGUgaW1wbGllZCBjb250ZXh0IG9mIG5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiAoTkFUKSwgYW5kIHRoZSBzcGVjaWZpYyBmb2N1cyBvbiBzb21lIHdlbGwta25vd24gYXBwbGljYXRpb24gbGF5ZXIgcHJvdG9jb2xzLCBsZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlc2UgTkFUIG1vZHVsZXM6IGBORl9OQVRfQU1BTkRBYCwgYE5GX05BVF9GVFBgLCBgTkZfTkFUX0lSQ2AsIGFuZCBgTkZfTkFUX1RGVFBgLiBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCB3aGF0IHRoZXkgZG8sIGlmIHRoZXkgYXJlIGFwcHJvcHJpYXRlIGZvciB0aGUgcHJvYmxlbSBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIFRoZXNlIGFyZSBsaWtlbHkgcmVsYXRlZCB0byBtb3JlIGdlbmVyYWwgTkFUIGZ1bmN0aW9uYWxpdHkgb3Igc29tZSBuZXR3b3JrIGZpbHRlcmluZywgc28gSSdsbCBjb25zaWRlciBob3cgdGhlc2UgYXJlIGFwcGxpZWQgYXMgd2VsbC4gVGhpcyBzZXRzIHRoZSBzdGFnZSBmb3IgYSBtb3JlIGZvY3VzZWQgYW5hbHlzaXMsIG5vdCBqdXN0IGEgc3VyZmFjZS1sZXZlbCByZXNwb25zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk4NTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MzoyNC4wMjczNzk4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0NTg4MDgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfTkFUX0FNQU5EQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDA3PWNvbmZpZyBORl9OQVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MjUuNzczMjY2MTlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0ODczMzkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFNlbGVjdGlvbiBNZWNoYW5pc20gb2YgYE5GX05BVF9BTUFOREFgKipcblxuT2theSwgc28gdGhlcmUncyBubyBpbml0aWFsIHByb21wdCBmb3IgYE5GX05BVF9BTUFOREFgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICpob3cqIGlzIHRoaXMgcGFydGljdWxhciBlbnRpdHkgYmVpbmcgY2hvc2VuIG9yIHRyaWdnZXJlZD8gU2luY2UgSSdtIG5vdCBnaXZlbiBhbnkgY29udGV4dCwgSSdsbCBuZWVkIHRvIHJlY29uc3RydWN0IHRoZSBleGVjdXRpb24gcGF0aC4gQXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRpcmVjdCBmdW5jdGlvbiBjYWxsLCBhbiBldmVudC1kcml2ZW4gYWN0aXZhdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gSSBuZWVkIHRvIGxvb2sgZm9yIGNsdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIOKAkyBjYWxscyB0byBzaW1pbGFyIGZ1bmN0aW9ucywgY29udGV4dC1kZXBlbmRlbnQgc2VsZWN0aW9uIGxvZ2ljLCBvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbiBwbGF5PyBJcyB0aGlzIHJlbGF0ZWQgdG8gc29tZSBicm9hZGVyIG5ldHdvcmtpbmcgYXJjaGl0ZWN0dXJlIG9yIGlzIGl0IHN0YW5kYWxvbmUuXG5cbkVzc2VudGlhbGx5LCB3aXRob3V0IGEgcHJvbXB0LCB0aGUgc2VsZWN0aW9uICptZWNoYW5pc20qIGlzIHRoZSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGhlcmUsIG5vdCB0aGUgb3V0cHV0IGl0c2VsZiwgYW5kIGl0IGxpa2VseSBob2xkcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGludGVuZGVkIGJlaGF2aW9yLiBNeSBtaW5kIGlzIGFscmVhZHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBzY2VuYXJpb3M6IElzIHRoaXMgcGFydCBvZiBhIHJ1bGUtYmFzZWQgc3lzdGVtPyBBIHN0YXRlIG1hY2hpbmU/IE9yIHNvbWV0aGluZyBtb3JlIGFkIGhvYz8gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyB0aGlzIHRoaW5nIGdldHMgaW5zdGFudGlhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE3MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjI5LjMyMjAwMjA5NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1Mzg2MjY2OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5GX05BVF9BTUFOREFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjMxLjA3NTg3NDE1M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQ4NzA3NjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRW5hYmxlbWVudCBvZiBORl9OQVRfQU1BTkRBKipcblxuT2theSwgc28gSSBzZWUgYE5GX05BVF9BTUFOREFgIGlzIGVuYWJsZWQgc29tZXdoZXJlLCBidXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKmhvdyouIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBOZXRmaWx0ZXIgb3B0aW9ucyBhcmUgZGVmaW5lZCwgc28gaXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMgb3IgcmVsYXRpb25zaGlwcyB0aGF0IG1pZ2h0IGJlIGVuYWJsaW5nIGBORl9OQVRfQU1BTkRBYC4gSSdsbCB6ZXJvIGluIG9uIHRoYXQgcGFydGljdWxhciBzeW1ib2wgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEl0J3MgbGlrZWx5IGdvaW5nIHRvIGJlIGNvbmRpdGlvbmFsIGJhc2VkIG9uIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBmZWF0dXJlcy4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIG9yIGFueSBvdGhlciBsb2dpYyB0aGF0IGRldGVybWluZXMgaXRzIGluY2x1c2lvbiBpbiB0aGUga2VybmVsIGJ1aWxkLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDc4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MzQuNDI0NTg0MDExWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDEwOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiA0MTE6XFx0XFx0aGVscFxcbiA0MTI6XFx0XFx0ICBUaGUgTkFUIG9wdGlvbiBhbGxvd3MgbWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcgYW5kIG90aGVyXFxuIDQxMzpcXHRcXHQgIGZvcm1zIG9mIGZ1bGwgTmV0d29yayBBZGRyZXNzIFBvcnQgVHJhbnNsYXRpb24uIFRoaXMgY2FuIGJlXFxuIDQxNDpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgaXB0YWJsZXMsIGlwNnRhYmxlcyBvciBuZnQuXFxuIDQxNTpcXHRcXG4gNDE2OlxcdGNvbmZpZyBORl9OQVRfQU1BTkRBXFxuIDQxNzpcXHRcXHR0cmlzdGF0ZVxcbiA0MTg6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQxOTpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfQU1BTkRBXFxuIDQyMDpcXHRcXG4gNDIxOlxcdGNvbmZpZyBORl9OQVRfRlRQXFxuIDQyMjpcXHRcXHR0cmlzdGF0ZVxcbiA0MjM6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQyNDpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfRlRQXFxuIDQyNTpcXHRcXG4gNDI2OlxcdGNvbmZpZyBORl9OQVRfSVJDXFxuIDQyNzpcXHRcXHR0cmlzdGF0ZVxcbiA0Mjg6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQyOTpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfSVJDXFxuIDQzMDpcXHRcXG4gNDMxOlxcdGNvbmZpZyBORl9OQVRfU0lQXFxuIDQzMjpcXHRcXHR0cmlzdGF0ZVxcbiA0MzM6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQzNDpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfU0lQXFxuIDQzNTpcXHRcXG4gNDM2OlxcdGNvbmZpZyBORl9OQVRfVEZUUFxcbiA0Mzc6XFx0XFx0dHJpc3RhdGVcXG4gNDM4OlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX05BVFxcbiA0Mzk6XFx0XFx0ZGVmYXVsdCBORl9OQVQgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX1RGVFBcXG4gNDQwOlxcdFxcbiA0NDE6XFx0Y29uZmlnIE5GX05BVF9SRURJUkVDVFxcbiA0NDI6XFx0XFx0Ym9vbFxcbiA0NDM6XFx0XFxuIDQ0NDpcXHRjb25maWcgTkZfTkFUX01BU1FVRVJBREVcXG4gNDQ1OlxcdFxcdGJvb2xcXG4gNDQ2OlxcdFxcbiA0NDc6XFx0Y29uZmlnIE5GX05BVF9PVlNcXG4gNDQ4OlxcdFxcdGJvb2xcXG4gNDQ5OlxcdFxcbiA0NTA6XFx0Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxcbiA0NTE6XFx0XFx0dHJpc3RhdGVcXG4gNDUyOlxcdFxcbiA0NTM6XFx0ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG4gNDU0OlxcdFxcbiA0NTU6XFx0Y29uZmlnIE5GX1RBQkxFU1xcbiA0NTY6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuIDQ1NzpcXHRcXHRzZWxlY3QgTkVUX0NSQzMyQ1xcbiA0NTg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gNDU5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6MzQuNDI0NjkyNzkxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzc1MjQ2ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgbG9naWNhbGx5OlxuXG4qKkVuYWJsaW5nIE5BVCBTdXBwb3J0IGZvciBTcGVjaWZpYyBQcm90b2NvbHMqKlxuXG5SaWdodCwgc28sIGlmIEknbSB1bmRlcnN0YW5kaW5nIHRoaXMgY29ycmVjdGx5LCB0aGUgYmFzaWMgTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIChOQVQpIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGBORl9OQVRgIGJlaW5nIGFjdGl2ZS4gQW5kLCBvZiBjb3Vyc2UsIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gdHJhY2tpbmcgcGllY2VzIChgTkZfQ09OTlRSQUNLXypgKSBuZWVkIHRvIGJlIGVuYWJsZWQgYXMgd2VsbCwgc2luY2UgTkFUIHJlbGllcyBvbiB0aGF0LiBUaGF0J3MgdGhlIGZvdW5kYXRpb24uXG5cblRoZXJlZm9yZSwgZm9yIHNwZWNpZmljIHByb3RvY29sIHN1cHBvcnQsIEkgbmVlZCB0byBlbmFibGUgYSBmZXcga2V5IG1vZHVsZXMuIEkgc2hvdWxkIGVuYWJsZSBgTkZfTkFUYCwgb2YgY291cnNlLCBhbmQgdGhlbiBleHBsaWNpdGx5IGVuYWJsZSBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZXMgZm9yIHRoZSBwcm90b2NvbHMgSSdtIGludGVyZXN0ZWQgaW46IHNwZWNpZmljYWxseSwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYW5kIGBORl9DT05OVFJBQ0tfVEZUUGAuIFRoYXQgc2hvdWxkIGNvdmVyIHRoZSBjcnVjaWFsIG9uZXMgZm9yIHRoaXMgdXNlIGNhc2UuXG5cbk5vdywgSSBzaG91bGQgY2hlY2sgd2hldGhlciBgTkZfTkFUYCBpcyBhIGNvbmZpZ3VyYWJsZSBvcHRpb24gd2l0aCBhIHByb21wdC4gQWggeWVzLCBJIHJlbWVtYmVyIHRoYXQgYGNvbmZpZyBORl9OQVRgIGluZGVlZCBoYXMgYSBwcm9tcHQsIHVzdWFsbHkgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiBcIk5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiBzdXBwb3J0XCIgb3IgYSBzaW1pbGFyIHBocmFzaW5nLiBUaGlzIGNvbmZpcm1zIGl0J3MgYSBzZWxlY3RhYmxlIG9wdGlvbiwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBmbGV4aWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNjYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0MzozOC43MDIyMTk0N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZWZhdWx0IG5cXG4gNDAxOlxcdFxcdGRlcGVuZHMgb24gKE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFIHx8IE5FVEZJTFRFUl9ORVRMSU5LX0xPRykgXFx1MDAyNlxcdTAwMjYgTkZfQ1RfTkVUTElOS1xcbiA0MDI6XFx0XFx0aGVscFxcbiA0MDM6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBORlFVRVVFIGFuZCBORkxPRyBjYW4gaW5jbHVkZVxcbiA0MDQ6XFx0XFx0ICBDb25uZWN0aW9uIFRyYWNraW5nIGluZm9ybWF0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIHBhY2tldCBpc1xcbiA0MDU6XFx0XFx0ICB0aGUgZW5xdWV1ZWQgdmlhIE5GTkVUTElOSy5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIE5GX05BVFxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gNDEwOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiA0MTE6XFx0XFx0aGVscFxcbiA0MTI6XFx0XFx0ICBUaGUgTkFUIG9wdGlvbiBhbGxvd3MgbWFzcXVlcmFkaW5nLCBwb3J0IGZvcndhcmRpbmcgYW5kIG90aGVyXFxuIDQxMzpcXHRcXHQgIGZvcm1zIG9mIGZ1bGwgTmV0d29yayBBZGRyZXNzIFBvcnQgVHJhbnNsYXRpb24uIFRoaXMgY2FuIGJlXFxuIDQxNDpcXHRcXHQgIGNvbnRyb2xsZWQgYnkgaXB0YWJsZXMsIGlwNnRhYmxlcyBvciBuZnQuXFxuIDQxNTpcXHRcXG4gNDE2OlxcdGNvbmZpZyBORl9OQVRfQU1BTkRBXFxuIDQxNzpcXHRcXHR0cmlzdGF0ZVxcbiA0MTg6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUXFxuIDQxOTpcXHRcXHRkZWZhdWx0IE5GX05BVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfQU1BTkRBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjM4LjcwMjMyNjQxOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ1NDY3MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiAoTkFUKSBhbmQgQ29ubmVjdGlvbiBUcmFja2luZyBNb2R1bGVzKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyBjb25maXJtZWQ6IGBORl9OQVRgIGRvZXMgaW5kZWVkIGhhdmUgYSBwcm9tcHQsIHdoaWNoIGlzIGdvb2QuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBhbmQgaW50ZXJwbGF5IHdpdGggdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlcy4gSSdtIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCBob3cgdGhlc2UgaW50ZXJhY3QgaW4gc2NlbmFyaW9zIHdpdGggbW9yZSBzcGVjaWZpYyBwcm90b2NvbHMuIFRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaW4gb24gYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYW5kIGBORl9DT05OVFJBQ0tfVEZUUGAuIEkgd2FudCB0byBzZWUgaWYgdGhlIE5BVCBwcm9tcHRzIGhhdmUgYmVlbiBpbnRlZ3JhdGVkIHRvIHdvcmsgd2l0aCB0aG9zZSBjb25uZWN0aW9uIHRyYWNrZXJzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZWVwZXIgTkFUIGJlaGF2aW9yIGluIHRoZXNlIG1vcmUgc3BlY2lhbGl6ZWQgcHJvdG9jb2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjA4MiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6NDIuODQ3Nzk1Mjk2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ3OTAwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMTEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMTMtXFx0dHJpc3RhdGUgXFxcIkFtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6NDQuNTk1NzE2NzE2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTc1NDE0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKlxuXG5Pa2F5LCBzbyB3ZSdyZSB3b3JraW5nIHdpdGggdGhlc2UgcHJvbXB0cywgd2hpY2ggSSB1bmRlcnN0YW5kLiBNeSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBlc3NlbnRpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHdlIG5lZWQgdG8gZW5hYmxlLiBCYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gYXQgaGFuZCwgSSBiZWxpZXZlIHdlIG5lZWQgdG8gZW5hYmxlIHRoZSBmb2xsb3dpbmc6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCwgYE5GX0NPTk5UUkFDS19TTk1QYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAuXG5cbkJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHNvbWV0aGluZyB0aGF0IHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgaGVyZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AgYW5kIGBORl9DT05OVFJBQ0tfU05NUGAgYXJlICp0aGUgb25seSogb3B0aW9ucyB0cmlnZ2VyaW5nIHRoZSBzZWxlY3Rpb24gb2YgYE5GX0NPTk5UUkFDS19CUk9BRENBU1RgLiBUaGF0IGJpdCBvZiBpbmZvcm1hdGlvbiBpcyBrZXkgdG8gZW5zdXJpbmcgdGhhdCB3ZSBoYXZlIGEgbGVhbiwgd2VsbC1zdHJ1Y3R1cmVkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDI3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjQ4Ljc1MzI2MDY1MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTAzNjk2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mjc3PWNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3OTpcXHRzZWxlY3QgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yODAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTI5Nj1jb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTgtXFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjk5OlxcdHNlbGVjdCBORl9DT05OVFJBQ0tfQlJPQURDQVNUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMwMC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjUwLjQ4NDMwNTEwM1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEyMjc4MDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBkaXJlY3Rpb24gc2VlbXMgc291bmQuIFdlJ3JlIGdvaW5nIHRvIGluY2x1ZGUgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCBhbmQgYE5GX0NPTk5UUkFDS19TTk1QYC4gTWFrZXMgcGVyZmVjdCBzZW5zZS5cblxuSG9sZCBvbiBhIHNlYy4uLiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AgaXMgYSBib29sZWFuLCByaWdodD8gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgd2UncmUgbm90IG1pc3NpbmcgYW55IG90aGVyIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIHNlZS4uLlxuXG5SaWdodCwgdGhlIHBhdGNoIGl0c2VsZiB0b3VjaGVzIHF1aXRlIGEgZmV3IGZpbGVzOiBgbmZfY29ubnRyYWNrX2FtYW5kYS5jYCwgYG5mX2Nvbm50cmFja19mdHAuY2AsIGBuZl9jb25udHJhY2tfaXJjLmNgLCBgbmZfY29ubnRyYWNrX3RmdHAuY2AsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0LmNgLCBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AsIGBuZl9jb25udHJhY2tfZWNhY2hlLmNgLCBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCwgYW5kIHRoZSBOQVQgY291bnRlcnBhcnRzIGBuZl9uYXRfYW1hbmRhLmNgLCBgbmZfbmF0X2Z0cC5jYCwgYG5mX25hdF9pcmMuY2AsIGBuZl9uYXRfdGZ0cC5jYC4gQSBmYWlybHkgY29tcHJlaGVuc2l2ZSBzZXQgb2YgbW9kdWxlcy5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyB0aGlzIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6IGBhbWFuZGFfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAuIEdvdCBpdC5cblxuQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAgaXMgZXhwb3J0ZWQgYXMgYSBzeW1ib2wgb3IgaWYgaXQncyBzdGF0aWMuIFRoYXQnbGwgYmUgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBldmVudCByZXBvcnRpbmcgaXMgaW1wbGVtZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTkxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQzOjU1Ljc5NjU4NTYzNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMDE0NjAxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaD0xMzk9bmZfY29ubnRyYWNrX2V2ZW50KGVudW0gaXBfY29ubnRyYWNrX2V2ZW50cyBldmVudCwgc3RydWN0IG5mX2Nvbm4gKmN0KVxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNDgtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaDoxNDk6dm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZXZlbnQsXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuaC0xNTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oPTE2MD1zdGF0aWMgaW5saW5lIGJvb2wgbmZfY29ubnRyYWNrX2VjYWNoZV9kd29ya19wZW5kaW5nKGNvbnN0IHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmgtMTY1LVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg6MTY2OnN0YXRpYyBpbmxpbmUgdm9pZCBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0KGVudW0gaXBfY29ubnRyYWNrX2V4cGVjdF9ldmVudHMgZSxcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5oLTE2Ny1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0yMzk9RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZGVsaXZlcl9jYWNoZWRfZXZlbnRzKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0yNDAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MjQxOnZvaWQgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChlbnVtIGlwX2Nvbm50cmFja19leHBlY3RfZXZlbnRzIGV2ZW50LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTI0Mi1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDM6NTcuNTI2NzQxNzU2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjQ1ODA2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIE5vbi1TdGF0aWMgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29kZSBpbiBxdWVzdGlvbiBpcyBkZWZpbml0ZWx5ICpleHBvcnRlZCogb3IgYXQgbGVhc3QgaXNuJ3QgZGVjbGFyZWQgc3RhdGljLiBUaGF0J3MgdGhlIGZpcnN0IGltcG9ydGFudCBvYnNlcnZhdGlvbi4gVGhlIHF1ZXN0aW9uIGJlY29tZXMsIGhvdyBpcyBpdCBiZWluZyBpbml0aWFsaXplZD8gV2UgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGluc3RhbnRpYXRpb24gcHJvY2VzcyBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cbkdpdmVuIHRoYXQgY29udGV4dCwgbGV0J3MgemVybyBpbiBvbiBgbmZfY3RfZXhwZWN0X2luaXRgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQsIGNvbnNpZGVyaW5nIHRoZSBuYW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgKnRoYXQqIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCwgd2hhdCBpdCdzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwLCBhbmQgdGhlIHNjb3BlIG9mIGl0cyBpbXBhY3QuIFRoaXMgaXMgd2hlcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBzdXJyb3VuZGluZyBkYXRhIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTUzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDQ6MDAuNzUxMzI0MjAxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIyNjYyNDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgbmZfY3RfZXhwZWN0X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaD0xNTM9c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKm5mX2N0X2V4cGVjdF9hbGxvYyhzdHJ1Y3QgbmZfY29ubiAqbWUpO1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTU0OnZvaWQgbmZfY3RfZXhwZWN0X2luaXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKiwgdW5zaWduZWQgaW50LCB1X2ludDhfdCxcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oLTE1NS1cXHRcXHQgICAgICAgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICosXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYz0zMTg9RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X2FsbG9jKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jLTMyMy0gKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzozMjQ6dm9pZCBuZl9jdF9leHBlY3RfaW5pdChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwLCB1bnNpZ25lZCBpbnQgY2xhc3MsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtMzI1LVxcdFxcdCAgICAgICB1X2ludDhfdCBmYW1pbHksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQ0OjAyLjQ3Mzk5MTgyMloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU0NDA3MTQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIER5bmFtaWMgTmF0dXJlKipcblxuUmlnaHQsIHNvIHRoZSBjb250ZXh0IGlzIGNydWNpYWwgaGVyZS4gVGhlIHNpdHVhdGlvbiBhdCBoYW5kIGNsZWFybHkgaXNuJ3Qgc3RhdGljLiBJdCdzIGR5bmFtaWMsIGNoYW5naW5nLCBldm9sdmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsdWlkaXR5IG9mIGl0IGFsbCwgc28gSSBjYW4gc3RhcnQgdG8gYnVpbGQgYSBnb29kIG1vZGVsLCBhbmQgc29sdmUgdGhlIHByb2JsZW0uXG5cbkxldCdzIG5vdCBvdmVyLWVuZ2luZWVyIHRoaXMuIEluc3RlYWQgb2YgYSBkZWVwIGRpdmUsIGxldCdzIGp1c3QgbWFrZSBhIHNpbXBsZSBjaGVjayB3aXRoIGEgdGFyZ2V0ZWQgYXBwcm9hY2ggdG8gZ2V0IHRoZSBoaWdoLWxldmVsIHBpY3R1cmUsIHJpZ2h0PyBMZXQgbWUgc2VlLi4uIEkgc2hvdWxkIGNoZWNrIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCB0byBnZXQgYSBnb29kIGJlYXJpbmcuIEZyb20gdGhhdCwgSSBzaG91bGQgYmUgYWJsZSB0byBkZWR1Y2UgdGhlIGNvcnJlY3QgY291cnNlIG9mIGFjdGlvbiwgYW5kIGtub3cgd2hhdCBmdXJ0aGVyIGluZm9ybWF0aW9uIGlzIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2MzYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NDozNy4wMTgwNjUyNVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3MjY3OTkwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdG5ldGxpbmtfYWxsb2NfZXhwZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yNjMwPXN0YXRpYyBzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI2MzE6Y3RuZXRsaW5rX2FsbG9jX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICpjb25zdCBjZGFbXSwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yNjMyLVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqYXNzaWduX2hlbHBlcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yODU2PWN0bmV0bGlua19nbHVlX2F0dGFjaF9leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI4ODctXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI4ODg6XFx0ZXhwID0gY3RuZXRsaW5rX2FsbG9jX2V4cGVjdCgoY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0ICopY2RhLCBjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg4OS1cXHRcXHRcXHRcXHQgICAgIGFzc2lnbl9oZWxwZXIsIFxcdTAwMjZ0dXBsZSwgXFx1MDAyNm1hc2spO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM1MTk9c3RhdGljIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzUyMDpjdG5ldGxpbmtfYWxsb2NfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBjZGFbXSwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNTIxLVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX2hlbHBlciAqYXNzaWduX2hlbHBlcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0zNTk2PWN0bmV0bGlua19jcmVhdGVfZXhwZWN0KHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNjI3LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYyODpcXHRleHAgPSBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0KGNkYSwgY3QsIE5VTEwsIFxcdTAwMjZ0dXBsZSwgXFx1MDAyNm1hc2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNjI5LVxcdGlmIChJU19FUlIoZXhwKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NDozOC45OTA3NTA2MzVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3NTMyODQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFN5emthbGxlciBUYXJnZXQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBzcGVjaWZpYyBwaWVjZSBvZiBjb2RlLCB3aGF0ZXZlciBpdCBpcywgcHJlc2VudHMgYSBzdGF0aWMgc3RhdGUsIHdoaWNoIGlzIGludHJpZ3VpbmcuIFN0YXRpYyB1c3VhbGx5IG1lYW5zIGVhc2llciB0byBhbmFseXplLCBpbiBhIHdheSwgYnV0IGFsc28gcG90ZW50aWFsbHkgYSBsZXNzIGR5bmFtaWMgYXR0YWNrIHN1cmZhY2UuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyICpjYW4qIHRhcmdldCBpdCBpcyB0aGUgcmVhbCBraWNrZXIuIFRoYXQgbWVhbnMgdGhlcmUncyBzb21lIGludGVyYWN0aW9uIHBvc3NpYmxlLCB3aGljaCBpbW1lZGlhdGVseSBlbGV2YXRlcyBpdHMgcmVsZXZhbmNlLiBHaXZlbiBzeXprYWxsZXLigJlzIGZvY3VzIG9uIGRldGVjdGluZyBhbmQgZXhwbG9pdGluZyBidWdzLCB0aGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAuIFRoYXQgZnVuY3Rpb24ncyBuYW1lIGhpbnRzIGF0IGEgcG90ZW50aWFsIGFyZWEgb2YgaW50ZXJlc3Qg4oCTIG5ldHdvcmsgY29ubmVjdGlvbiB0cmFja2luZywgYnJvYWRjYXN0IGhhbmRsaW5nLCBhbmQgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxsIHBvdGVudGlhbCBhcmVhcyByaXBlIGZvciB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgcmFjZSBjb25kaXRpb25zIG9yIGJ1ZmZlciBvdmVyZmxvd3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHVzZXItY29udHJvbGxlZCBkYXRhIG9yIG1hbGZvcm1lZCBwYWNrZXRzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzODEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NDo0Mi4xNjYwODIwNDNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDE0ODQ0NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmg9MTYyPXZvaWQgbmZfY29ubnRyYWNrX2hlbHBlcl9maW5pKHZvaWQpO1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmgtMTYzLVxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmg6MTY0OmludCBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaGVscGVyLmgtMTY1LVxcdFxcdFxcdFxcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMtMTgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM6MTk6aW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTIwLVxcdFxcdFxcdFxcdHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTk0LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYzo5NTpFWFBPUlRfU1lNQk9MX0dQTChuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTk2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0Ymlvc19ucy5jPTM5PXN0YXRpYyBpbnQgbmV0Ymlvc19uc19oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0Ymlvc19ucy5jLTQyLXtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRiaW9zX25zLmM6NDM6XFx0cmV0dXJuIG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChza2IsIGN0LCBjdGluZm8sIHRpbWVvdXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGJpb3NfbnMuYy00NC19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zbm1wLmM9Mjk9c3RhdGljIGludCBzbm1wX2Nvbm50cmFja19oZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc25tcC5jLTM0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NubXAuYzozNTpcXHRuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHAoc2tiLCBjdCwgY3RpbmZvLCB0aW1lb3V0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zbm1wLmMtMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQ0OjQzLjg2NzU3MTM5NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQxODQ0MzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipPcGVyYXRpb25hbCBDaGVjayBhbmQgVmFyaWFibGUgVmFsaWRhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgZGF0YSdzIGJlZW4gZXhwb3J0ZWQsIHRoYXQncyB0aGUgZmlyc3QgY3JpdGljYWwgcG9pbnQgdG8gY29uZmlybS4gTm93LCBiZWZvcmUgSSBqdW1wIGludG8gYW55IGFuYWx5c2lzIG9yIHByb2Nlc3NpbmcsIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGludGVncml0eSBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgYW1hbmRhX2hlbHBgIGZ1bmN0aW9uIG9yIGRvY3VtZW50YXRpb24uIEknbSBhc3N1bWluZyB0aGF0IHZhcmlhYmxlLCBgYW1hbmRhX2hlbHBgLCBpcyBhIGRhdGEgZGljdGlvbmFyeSwgYSBsb2csIGRvY3VtZW50YXRpb24sIG9yIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGNoZWNrIGBhbWFuZGFfaGVscGAgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBmbGFncywgdGhhdCB0aGUgZXhwb3J0IHdhcyBzdWNjZXNzZnVsLiBUaGF0IHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gdGhlIGRhdGEgZm9ybWF0LCByZWxldmFudCBwYXJhbWV0ZXJzLCBwb3RlbnRpYWwgY2F2ZWF0cywgYW5kIGFueSBrbm93biBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgZXhwb3J0IHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjI5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDQ6NDYuOTA5NDE3NTMyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1OTQwMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFtYW5kYV9oZWxwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTUyPXN0YXRpYyBzdHJ1Y3Qge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtODItXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6ODM6c3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTg0LVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTEwNy1cXHRpZiAoZGF0YW9mZiBcXHUwMDNlPSBza2ItXFx1MDAzZWxlbikge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjEwODpcXHRcXHRuZXRfZXJyX3JhdGVsaW1pdGVkKFxcXCJhbWFuZGFfaGVscDogc2tibGVuID0gJXVcXFxcblxcXCIsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xMDktXFx0XFx0cmV0dXJuIE5GX0FDQ0VQVDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTE2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5IGFtYW5kYV9leHBfcG9saWN5ID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTcxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE3MjpzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgYW1hbmRhX2hlbHBlclsyXSBfX3JlYWRfbW9zdGx5O1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE3MzpzdGF0aWMgc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmFtYW5kYV9oZWxwZXJfcHRyWzJdIF9fcmVhZF9tb3N0bHk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTc0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTE3NT1zdGF0aWMgdm9pZCBfX2V4aXQgbmZfY29ubnRyYWNrX2FtYW5kYV9maW5pKHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xNzgtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTc5OlxcdG5mX2Nvbm50cmFja19oZWxwZXJzX3VucmVnaXN0ZXIoYW1hbmRhX2hlbHBlcl9wdHIsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTgwOlxcdFxcdFxcdFxcdFxcdEFSUkFZX1NJWkUoYW1hbmRhX2hlbHBlcl9wdHIpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xODEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoc2VhcmNoKTsgaSsrKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM9MTg1PXN0YXRpYyBpbnQgX19pbml0IG5mX2Nvbm50cmFja19hbWFuZGFfaW5pdCh2b2lkKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjAwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwMTpcXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2YW1hbmRhX2hlbHBlclswXSwgQUZfSU5FVCwgSVBQUk9UT19VRFAsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMjAyLVxcdFxcdFxcdCAgSEVMUEVSX05BTUUsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjAzOlxcdFxcdFxcdCAgXFx1MDAyNmFtYW5kYV9leHBfcG9saWN5LCAwLCBhbWFuZGFfaGVscCwgTlVMTCwgVEhJU19NT0RVTEUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwNDpcXHRuZl9jdF9oZWxwZXJfaW5pdChcXHUwMDI2YW1hbmRhX2hlbHBlclsxXSwgQUZfSU5FVDYsIElQUFJPVE9fVURQLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTIwNS1cXHRcXHRcXHQgIEhFTFBFUl9OQU1FLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIwNjpcXHRcXHRcXHQgIFxcdTAwMjZhbWFuZGFfZXhwX3BvbGljeSwgMCwgYW1hbmRhX2hlbHAsIE5VTEwsIFRISVNfTU9EVUxFKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0yMDctXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjA4OlxcdHJldCA9IG5mX2Nvbm50cmFja19oZWxwZXJzX3JlZ2lzdGVyKGFtYW5kYV9oZWxwZXIsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MjA5OlxcdFxcdFxcdFxcdFxcdCAgICBBUlJBWV9TSVpFKGFtYW5kYV9oZWxwZXIpLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjIxMDpcXHRcXHRcXHRcXHRcXHQgICAgYW1hbmRhX2hlbHBlcl9wdHIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTIxMS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDQ6NDguNzE1MzY1Njc3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MzA0MDYzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBDdXJyZW50IFN0YXRlKipcblxuUmlnaHQsIHRoaXMgZmVlbHMuLi5zdGF0aWMuIE5vdCBtdWNoIGlzIGhhcHBlbmluZywgbm8gaW1tZWRpYXRlIG1vdmVtZW50LiBUaW1lIHRvIHRha2UgYSBjbG9zZXIgbG9vaywgc2VlIGlmIEkgY2FuIGdldCB0aGluZ3MgdW5zdHVjay4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBwZXJjZWl2ZWQgbGFjayBvZiBwcm9ncmVzcywgaXMgdG8gY2hlY2sgdGhlIGB0ZnRwX2hlbHBgIHV0aWxpdHkuIEl0J3MgYSBmdW5kYW1lbnRhbCB0b29sLCBvZnRlbiBvdmVybG9va2VkIGJ1dCBzdXJwcmlzaW5nbHkgdXNlZnVsIGZvciB0cm91Ymxlc2hvb3RpbmcsIGVzcGVjaWFsbHkgd2hlbiB0aGluZ3Mgc2VlbSBzdGFsbGVkLiBMZXQncyBzZWUgd2hhdCB0aGF0IHJldmVhbHMuIFBlcmhhcHMgdGhlcmUncyBhIHNpbXBsZSBjb25maWd1cmF0aW9uIGlzc3VlIEknbSBtaXNzaW5nLCBvciBhIGJhc2ljIGNvbW1hbmQgc3ludGF4IGVycm9yIHRoYXQncyBrZWVwaW5nIGV2ZXJ5dGhpbmcgZnJvemVuLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDU3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMjE6NDQ6NTEuNTQ1Nzc0NjQ4WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIxODA0ODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRmdHBfaGVscFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmM9MzA9RVhQT1JUX1NZTUJPTF9HUEwobmZfbmF0X3RmdHBfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jLTMxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYzozMjpzdGF0aWMgaW50IHRmdHBfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYy0zMy1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBwcm90b2ZmLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jPTEwNT1zdGF0aWMgaW50IF9faW5pdCBuZl9jb25udHJhY2tfdGZ0cF9pbml0KHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMtMTEyLVxcdFxcdFxcdCAgSEVMUEVSX05BTUUsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjExMzpcXHRcXHRcXHQgIFxcdTAwMjZ0ZnRwX2V4cF9wb2xpY3ksIDAsIHRmdHBfaGVscCwgTlVMTCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMtMTE0LVxcdFxcdFxcdCAgVEhJU19NT0RVTEUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NDo1My4yNjc1ODQzNDhaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg4ODcxNzc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9scyBmb3IgTmV0ZmlsdGVyL0Nvbm50cmFjayBDaGFuZ2VzKipcblxuT2theSwgdGhpcyBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29tYmluYXRpb24gb2Ygc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBzb21lIE5ldGZpbHRlci9Db25udHJhY2sgY2hhbmdlcy4gVGhlIHdob2xlIHNldHVwIHNlZW1zIHN0YXRpYywgd2hpY2ggaXMgZ29vZCDigJMgbGVzcyBkeW5hbWljIGJlaGF2aW9yIHRvIHdvcnJ5IGFib3V0LlxuXG5GaXJzdCwgSSdtIGlkZW50aWZ5aW5nIHRoZSBrZXkgZnVuY3Rpb24gc3ltYm9scyBpbnZvbHZlZC4gSSBzZWUgYSBmZXcgdGhhdCBhcmUgY2xlYXJseSByZWxldmFudDogYGFtYW5kYV9oZWxwYCwgYG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscGAsIGBuZl9jdF9leHBlY3RfZXZlbnRfcmVwb3J0YCwgYG5mX2N0X2V4cGVjdF9pbml0YCwgYGN0bmV0bGlua19hbGxvY19leHBlY3RgLCBgdGZ0cF9oZWxwYCwgYW5kIGBuZl9uYXRfZnRwYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIG1ha2Ugc3VyZSBhcmUgY29ycmVjdGx5IGNvbmZpZ3VyZWQuXG5cbk5leHQsIEknbSBjaGVja2luZyB0aGUgY29uZmlndXJhdGlvbnMuIEkndmUgZ290IGEgbGlzdCBvZiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AsIGBORl9DT05OVFJBQ0tfU05NUGAsIGBORl9DVF9ORVRMSU5LYCwgYW5kIGBORl9OQVRgLlxuXG5Ob3csIEknbSByZW1lbWJlcmluZyB0aGF0IHNvbWUgb2YgdGhlc2UgYE5GX05BVF8qYCBjb25maWd1cmF0aW9ucyAoYE5GX05BVF9BTUFOREFgLCBgTkZfTkFUX0ZUUGAsIGBORl9OQVRfSVJDYCwgYE5GX05BVF9URlRQYCkgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCAqaWYqIHRoZWlyIGNvcnJlc3BvbmRpbmcgYE5GX0NPTk5UUkFDS18qYCBhbmQgYE5GX05BVGAgYXJlIGVuYWJsZWQuIFNpbmNlIHRoZXNlIGFyZSBwcm9tcHRsZXNzIGNvbmZpZ3MsIGl0IG1lYW5zIHRoZSBzeXprYWxsZXIgY29uZmlnIGdlbmVyYXRvciBtaWdodCBub3QgYmUgYWJsZSB0byBlbmFibGUgdGhlbSBkaXJlY3RseS4gQnV0LCBpdCB3aWxsIGVuYWJsZSB0aGUgcGFyZW50IGRlcGVuZGVuY2llcy4gVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIEkgaW5jbHVkZSBhbGwgdGhlIGltcG9ydGFudCBvbmVzIHdpdGggcHJvbXB0cywgc28gSSdsbCBjcmVhdGUgYSBsaXN0IG9mIGNvbmZpZ3M6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCwgYE5GX0NPTk5UUkFDS19BTUFOREFgLCBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfSVJDYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYE5GX0NPTk5UUkFDS19ORVRCSU9TX05TYCwgYE5GX0NPTk5UUkFDS19TTk1QYCwgYE5GX0NUX05FVExJTktgLCBhbmQgYE5GX05BVGAuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGBORl9DT05OVFJBQ0tfRVZFTlRTYCBpcyB0aGUgb25seSBjb25maWcgSSBuZWVkIGZvciB0aG9zZSBzcGVjaWZpYyBlY2FjaGUgY2hhbmdlcy4gWWVzLCBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIHRoZSBvbmUuXG5cbkRpZ2dpbmcgZnVydGhlciwgSSBrbm93IGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfTkFUYCBhcmUgb2J2aW91c2x5IG5lZWRlZCBhcyBkZXBlbmRlbmNpZXMsIGJ1dCB0aGV5IGFyZSBpbXBsaWVkIGJ5IHRoZSBvdGhlciBjb25maWdzLlxuXG5MZXQncyBkbyBhIGRvdWJsZSBjaGVjayBhbmQgbWFrZSBzdXJlIEkndmUgaWRlbnRpZmllZCBhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4gT0ssIGl0IGxvb2tzIGxpa2UgYG5mX25hdF9hbWFuZGFgLCBgbmZfbmF0X2lyY2AsIGFuZCBgbmZfbmF0X3RmdHBgIGFsbCBoYXZlIGEgYGhlbHBgIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgYG5mX25hdF9mdHBgIGRvZXNuJ3QgZm9sbG93IHRoYXQgcGF0dGVybiwgc28gSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgb2YgaXQuXG5cbkdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMgd2l0aCBgaGVscGAsIEknbSBnb2luZyB0byBsaXN0IHRoZSB1bmlxdWUgZnVuY3Rpb24gbmFtZXMuIFRoaXMgbWVhbnMgYGFtYW5kYV9oZWxwYCwgYHRmdHBfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGFuZCBgY3RuZXRsaW5rX2FsbG9jX2V4cGVjdGAgYXJlIHRoZSBvbmVzIHRvIHBheSBhdHRlbnRpb24gdG8uXG5cbkFscmlnaHQsIHRoYXQgY292ZXJzIHRoZSBlc3NlbnRpYWxzLiBJIGhhdmUgYSBzb2xpZCBsaXN0IG9mIGNvbmZpZ3MgYW5kIGZ1bmN0aW9uIHN5bWJvbHMgdG8gdXNlIGZvciB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzkwMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NTowMi4xNTYzMDQ1NzRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzA5MzU2MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbmF0X2FtYW5kYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmg9MTA9dHlwZWRlZiB1bnNpZ25lZCBpbnRcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmg6MTE6bmZfbmF0X2FtYW5kYV9ob29rX2ZuKHN0cnVjdCBza19idWZmICpza2IsXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5oLTEyLVxcdFxcdCAgICAgIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaC0xOC1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmg6MTk6ZXh0ZXJuIG5mX25hdF9hbWFuZGFfaG9va19mbiBfX3JjdSAqbmZfbmF0X2FtYW5kYV9ob29rO1xcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuaC0yMC0jZW5kaWYgLyogX05GX0NPTk5UUkFDS19BTUFOREFfSCAqL1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT02OT1lbmRpZlxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS03MS0jIE5BVCBoZWxwZXJzXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfTkZfTkFUX0FNQU5EQSkgKz0gbmZfbmF0X2FtYW5kYS5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS03My1vYmotJChDT05GSUdfTkZfTkFUX0ZUUCkgKz0gbmZfbmF0X2Z0cC5vXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYz0zOD1NT0RVTEVfUEFSTV9ERVNDKHRzX2FsZ28sIFxcXCJ0ZXh0c2VhcmNoIGFsZ29yaXRobSB0byB1c2UgKGRlZmF1bHQga21wKVxcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTM5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjQwOm5mX25hdF9hbWFuZGFfaG9va19mbiBfX3JjdSAqbmZfbmF0X2FtYW5kYV9ob29rIF9fcmVhZF9tb3N0bHk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6NDE6RVhQT1JUX1NZTUJPTF9HUEwobmZfbmF0X2FtYW5kYV9ob29rKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy00Mi1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTgzPXN0YXRpYyBpbnQgYW1hbmRhX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTk0LVxcdGludCByZXQgPSBORl9BQ0NFUFQ7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6OTU6XFx0bmZfbmF0X2FtYW5kYV9ob29rX2ZuICpuZl9uYXRfYW1hbmRhO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTk2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTUxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jOjE1MjpcXHRcXHRuZl9uYXRfYW1hbmRhID0gcmN1X2RlcmVmZXJlbmNlKG5mX25hdF9hbWFuZGFfaG9vayk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTUzOlxcdFxcdGlmIChuZl9uYXRfYW1hbmRhIFxcdTAwMjZcXHUwMDI2IGN0LVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBJUFNfTkFUX01BU0spXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTU0OlxcdFxcdFxcdHJldCA9IG5mX25hdF9hbWFuZGEoc2tiLCBjdCwgY3RpbmZvLCBwcm90b2ZmLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE1NS1cXHRcXHRcXHRcXHRcXHQgICAgb2ZmIC0gZGF0YW9mZiwgbGVuLCBleHApO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmM9Mjg9c3RhdGljIHVuc2lnbmVkIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy02NC1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo2NTpzdGF0aWMgdm9pZCBfX2V4aXQgbmZfbmF0X2FtYW5kYV9maW5pKHZvaWQpXFxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNjYte1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTY3LVxcdG5mX25hdF9oZWxwZXJfdW5yZWdpc3RlcihcXHUwMDI2bmF0X2hlbHBlcl9hbWFuZGEpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjY4OlxcdFJDVV9JTklUX1BPSU5URVIobmZfbmF0X2FtYW5kYV9ob29rLCBOVUxMKTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy02OS1cXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTcxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjcyOnN0YXRpYyBpbnQgX19pbml0IG5mX25hdF9hbWFuZGFfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTczLXtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo3NDpcXHRCVUdfT04obmZfbmF0X2FtYW5kYV9ob29rICE9IE5VTEwpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jLTc1LVxcdG5mX25hdF9oZWxwZXJfcmVnaXN0ZXIoXFx1MDAyNm5hdF9oZWxwZXJfYW1hbmRhKTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo3NjpcXHRSQ1VfSU5JVF9QT0lOVEVSKG5mX25hdF9hbWFuZGFfaG9vaywgaGVscCk7XFxubmV0L25ldGZpbHRlci9uZl9uYXRfYW1hbmRhLmMtNzctXFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYy03OS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9hbWFuZGEuYzo4MDptb2R1bGVfaW5pdChuZl9uYXRfYW1hbmRhX2luaXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2FtYW5kYS5jOjgxOm1vZHVsZV9leGl0KG5mX25hdF9hbWFuZGFfZmluaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDIxOjQ1OjAzLjg4NzI0NDYwNVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjUwMjY2MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJldmlld2luZyB0aGUgQ29ubnRyYWNrIEhlbHBlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMg4oCTIGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgYW5kIG5ldGxpbmsgc3BlY2lmaWNhbGx5LiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGhvdyB0aGUgZXhwZWN0YXRpb24vZXZlbnQgY2FjaGUgbG9naWMgaXMgaGFuZGxlZC4gVGhlIHBhdGNoIGlzIG5vdyBjYWNoaW5nIHRoZSBgZXZlbnRfbWFza2Agd2l0aGluIHRoZSBleHBlY3RhdGlvbiBvYmplY3QgYXQgY3JlYXRpb24gdGltZSwgcmF0aGVyIHRoYW4gcHVsbGluZyBpdCBkaXJlY3RseSBmcm9tIHRoZSBtYXN0ZXIgY29ubmVjdGlvbidzIGVjYWNoZSB3aGVuIGFuIGV2ZW50IGlzIHJlcG9ydGVkLiBPbiB0b3Agb2YgdGhpcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgaXMgYmVpbmcgcGFzc2VkIGRpcmVjdGx5IHRvIE5BVCBob29rIGZ1bmN0aW9ucy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIGFmZmVjdHMgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy4gV2UgbmVlZCB0byBiZSBlc3BlY2lhbGx5IGNhcmVmdWwgYWJvdXQgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBpZiB0aGlzIGNhY2hlZCBtYXNrIGlzIHVzZWQgaW5jb3JyZWN0bHksIG9yIGlmIHRoZSBjb25uZWN0aW9uIG9iamVjdCBpcyBtaXNoYW5kbGVkIHdpdGhpbiB0aGVzZSBOQVQgZnVuY3Rpb25zLiBXZSBzaG91bGQgZGVmaW5pdGVseSByZWNvbW1lbmQgZnV6emluZyBhcyB0aGUgYmVzdCB3YXkgdG8gZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5JJ3ZlIGFscmVhZHkgcmV2aWV3ZWQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBkb3VibGUgY2hlY2tpbmcgdGhhdCB0aGV5IGFyZSB3aGF0IEkgZXhwZWN0OiBgTkZfQ09OTlRSQUNLX0VWRU5UU2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19GVFBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGBORl9DT05OVFJBQ0tfTkVUQklPU19OU2AsIGBORl9DT05OVFJBQ0tfU05NUGAsIGBORl9DVF9ORVRMSU5LYCwgYW5kIGBORl9OQVRgLiBJJ3ZlIGNoZWNrZWQgYW5kIGRvdWJsZS1jaGVja2VkIHRoZSBkZXBlbmRlbmNpZXMuIEV2ZXJ5dGhpbmcgYXBwZWFycyB0byBiZSBjb3JyZWN0bHkgY29uZmlndXJlZCBhbmQgdXRpbGl6ZWQuXG5cbkluIHRoZSBmaWxlIGBuZl9uYXRfYW1hbmRhLmNgLCB0aGUgZnVuY3Rpb24gYGFtYW5kYV9oZWxwYCBpcyBjb3JyZWN0LCBhbmQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgcmV2aWV3LCBub3c6IGBhbWFuZGFfaGVscGAsIGBuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBgLCBgbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydGAsIGBuZl9jdF9leHBlY3RfaW5pdGAsIGBjdG5ldGxpbmtfYWxsb2NfZXhwZWN0YCwgYHRmdHBfaGVscGAsIGFuZCBgbmZfbmF0X2Z0cGAuIEl0J3MgYWxsIGxvb2tpbmcgZ29vZC4gSSBhbSBoYXBweSB3aXRoIHRoZSByZXN1bHRzIG9mIG15IHJldmlldyBhbmQgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjIwLCJPdXRwdXRUb2tlbnMiOjI2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QyMTo0NToxMi41Mzc1MTI0MzZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODAwNDY2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0VWRU5UU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0FNQU5EQVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0ZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0lSQ1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1RGVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19ORVRCSU9TX05TXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU05NUFwiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfTkFUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYW1hbmRhX2hlbHBcIixcbiAgICBcIm5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscFwiLFxuICAgIFwibmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydFwiLFxuICAgIFwibmZfY3RfZXhwZWN0X2luaXRcIixcbiAgICBcImN0bmV0bGlua19hbGxvY19leHBlY3RcIixcbiAgICBcInRmdHBfaGVscFwiLFxuICAgIFwibmZfbmF0X2Z0cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBjb25udHJhY2sgaGVscGVycyAoYW1hbmRhLCBmdHAsIGlyYywgdGZ0cCwgYnJvYWRjYXN0LCBuZXRsaW5rKSBhbmQgdGhlIGV4cGVjdGF0aW9uL2V2ZW50IGNhY2hlIGxvZ2ljLiBJdCBjYWNoZXMgYGV2ZW50X21hc2tgIGluIHRoZSBleHBlY3RhdGlvbiBvYmplY3QgYXQgY3JlYXRpb24gdGltZSBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQgdXAgZnJvbSB0aGUgbWFzdGVyIGNvbm5lY3Rpb24ncyBlY2FjaGUgYXQgZXZlbnQgcmVwb3J0IHRpbWUuIEl0IGFsc28gcGFzc2VzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBkaXJlY3RseSB0byBOQVQgaG9vayBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBhZmZlY3QgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgTkFUIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19BTUFOREFcIixcbiAgICBcIk5GX0NPTk5UUkFDS19GVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19JUkNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19URlRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfTkVUQklPU19OU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NOTVBcIixcbiAgICBcIk5GX0NUX05FVExJTktcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFtYW5kYV9oZWxwXCIsXG4gICAgXCJuZl9jb25udHJhY2tfYnJvYWRjYXN0X2hlbHBcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnRcIixcbiAgICBcIm5mX2N0X2V4cGVjdF9pbml0XCIsXG4gICAgXCJjdG5ldGxpbmtfYWxsb2NfZXhwZWN0XCIsXG4gICAgXCJ0ZnRwX2hlbHBcIixcbiAgICBcIm5mX25hdF9mdHBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgY29ubnRyYWNrIGhlbHBlcnMgKGFtYW5kYSwgZnRwLCBpcmMsIHRmdHAsIGJyb2FkY2FzdCwgbmV0bGluaykgYW5kIHRoZSBleHBlY3RhdGlvbi9ldmVudCBjYWNoZSBsb2dpYy4gSXQgY2FjaGVzIGBldmVudF9tYXNrYCBpbiB0aGUgZXhwZWN0YXRpb24gb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUgaW5zdGVhZCBvZiBsb29raW5nIGl0IHVwIGZyb20gdGhlIG1hc3RlciBjb25uZWN0aW9uJ3MgZWNhY2hlIGF0IGV2ZW50IHJlcG9ydCB0aW1lLiBJdCBhbHNvIHBhc3NlcyB0aGUgY29ubmVjdGlvbiBvYmplY3QgZGlyZWN0bHkgdG8gTkFUIGhvb2sgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIE5BVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[1] Phase: Succeeded StartedAt: 2026-07-13 21:45:24 +0000 UTC FinishedAt: 2026-07-13 21:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 21:45:24 +0000 UTC FinishedAt: 2026-07-13 21:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2] Phase: Succeeded StartedAt: 2026-07-13 21:45:24 +0000 UTC FinishedAt: 2026-07-14 01:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-13 21:45:24 +0000 UTC FinishedAt: 2026-07-14 01:50:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 21:45:24 +0000 UTC FinishedAt: 2026-07-13 21:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 21:45:24 +0000 UTC FinishedAt: 2026-07-13 21:45:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.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-workflowglwvc/series-workflowglwvc-convert-artifact-3195206236/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 21:45:34 +0000 UTC FinishedAt: 2026-07-13 22:11:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 21:45:34 +0000 UTC FinishedAt: 2026-07-13 22:11:29 +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:*caebf07f-a05c-4c29-9748-b1b43990ee02,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-workflowglwvc/series-workflowglwvc-convert-artifact-3195206236/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": "b0b1581c-f6a7-4175-9461-96e0e0e3e61a", "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-workflowglwvc/series-workflowglwvc-build-action-222637450/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 21:45:34 +0000 UTC FinishedAt: 2026-07-13 22:11:19 +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:*caebf07f-a05c-4c29-9748-b1b43990ee02,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-workflowglwvc/series-workflowglwvc-convert-artifact-3195206236/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": "b0b1581c-f6a7-4175-9461-96e0e0e3e61a", "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-workflowglwvc/series-workflowglwvc-build-action-222637450/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 22:11:29 +0000 UTC FinishedAt: 2026-07-13 22:11:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 22:11:29 +0000 UTC FinishedAt: 2026-07-13 22:11:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 22:11:29 +0000 UTC FinishedAt: 2026-07-13 22:11:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 22:11:29 +0000 UTC FinishedAt: 2026-07-13 22:11:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.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-workflowglwvc/series-workflowglwvc-convert-artifact-2008486299/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 22:11:39 +0000 UTC FinishedAt: 2026-07-13 22:13:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 22:11:39 +0000 UTC FinishedAt: 2026-07-13 22:13:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b0b1581c-f6a7-4175-9461-96e0e0e3e61a,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-workflowglwvc/series-workflowglwvc-build-action-222637450/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-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 22:13:45 +0000 UTC FinishedAt: 2026-07-13 22:13:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 22:13:45 +0000 UTC FinishedAt: 2026-07-13 22:13:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 22:13:45 +0000 UTC FinishedAt: 2026-07-13 22:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 22:13:45 +0000 UTC FinishedAt: 2026-07-13 22:45:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*caebf07f-a05c-4c29-9748-b1b43990ee02,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-workflowglwvc/series-workflowglwvc-convert-artifact-2008486299/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": "e765137a-9d0f-46f7-a1f5-0e46e8852256", "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-workflowglwvc/series-workflowglwvc-build-action-3657858367/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 22:13:45 +0000 UTC FinishedAt: 2026-07-13 22:45:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*caebf07f-a05c-4c29-9748-b1b43990ee02,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-workflowglwvc/series-workflowglwvc-convert-artifact-2008486299/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": "e765137a-9d0f-46f7-a1f5-0e46e8852256", "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-workflowglwvc/series-workflowglwvc-build-action-3657858367/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 22:45:26 +0000 UTC FinishedAt: 2026-07-13 22:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 22:45:26 +0000 UTC FinishedAt: 2026-07-13 22:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 22:45:26 +0000 UTC FinishedAt: 2026-07-13 22:47:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 22:45:26 +0000 UTC FinishedAt: 2026-07-13 22:47:30 +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:*e765137a-9d0f-46f7-a1f5-0e46e8852256,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-workflowglwvc/series-workflowglwvc-build-action-3657858367/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-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 22:47:40 +0000 UTC FinishedAt: 2026-07-14 01:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 22:47:40 +0000 UTC FinishedAt: 2026-07-14 01:50:13 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*b0b1581c-f6a7-4175-9461-96e0e0e3e61a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e765137a-9d0f-46f7-a1f5-0e46e8852256,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-workflowglwvc/series-workflowglwvc-build-action-222637450/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-workflowglwvc/series-workflowglwvc-build-action-3657858367/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 22:47:40 +0000 UTC FinishedAt: 2026-07-13 22:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 22:47:40 +0000 UTC FinishedAt: 2026-07-13 22:47:45 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowglwvc/series-workflowglwvc-convert-artifact-1589240468/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 22:47:40 +0000 UTC FinishedAt: 2026-07-13 22:47:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 22:47:40 +0000 UTC FinishedAt: 2026-07-13 22:47:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 22:47:40 +0000 UTC FinishedAt: 2026-07-13 22:47:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 22:47:50 +0000 UTC FinishedAt: 2026-07-14 01:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowglwvc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amanda_help","nf_conntrack_broadcast_help","nf_ct_expect_event_report","nf_ct_expect_init","ctnetlink_alloc_expect","tftp_help","nf_nat_ftp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS","NF_CONNTRACK_AMANDA","NF_CONNTRACK_FTP","NF_CONNTRACK_IRC","NF_CONNTRACK_TFTP","NF_CONNTRACK_NETBIOS_NS","NF_CONNTRACK_SNMP","NF_CT_NETLINK","NF_NAT"],"series_id":"aeb64e34-1a72-4d14-8009-2e407f82c084","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 22:47:50 +0000 UTC FinishedAt: 2026-07-14 01:50:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b0b1581c-f6a7-4175-9461-96e0e0e3e61a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e765137a-9d0f-46f7-a1f5-0e46e8852256,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-workflowglwvc/series-workflowglwvc-build-action-222637450/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-workflowglwvc/series-workflowglwvc-build-action-3657858367/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-workflowglwvc/series-workflowglwvc-convert-artifact-1589240468/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,}