Name: series-workflowjl8vq Phase: Running StartedAt: 2026-06-22 09:30:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjl8vq[0] Phase: Running StartedAt: 2026-06-22 09:30:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjl8vq[0].run-triage Phase: Running StartedAt: 2026-06-22 09:30:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjl8vq[0].run-triage(0) Phase: Running StartedAt: 2026-06-22 09:30:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2354e975932dabb06fad239f07a3b68fd1809737", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_ACT_FRER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2354e975932dabb06fad239f07a3b68fd1809737", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_ACT_FRER" ], "series_id": "0aac3cbf-9009-4df8-9c8d-2b0fad7f9867" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_frer_init", "tcf_frer_act", "tcf_frer_dump", "tcf_frer_cleanup", "frer_rtag_push", "frer_rtag_pop", "frer_rtag_decode", "frer_vector_alg", "frer_match_alg", "frer_rcvy_hrtimer_fn", "frer_rcvy_reset_work_fn" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA5OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9BQ1RfRlJFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9mcmVyX2luaXQmIzM0OywKICAgICYjMzQ7dGNmX2ZyZXJfYWN0JiMzNDssCiAgICAmIzM0O3RjZl9mcmVyX2R1bXAmIzM0OywKICAgICYjMzQ7dGNmX2ZyZXJfY2xlYW51cCYjMzQ7LAogICAgJiMzNDtmcmVyX3J0YWdfcHVzaCYjMzQ7LAogICAgJiMzNDtmcmVyX3J0YWdfcG9wJiMzNDssCiAgICAmIzM0O2ZyZXJfcnRhZ19kZWNvZGUmIzM0OywKICAgICYjMzQ7ZnJlcl92ZWN0b3JfYWxnJiMzNDssCiAgICAmIzM0O2ZyZXJfbWF0Y2hfYWxnJiMzNDssCiAgICAmIzM0O2ZyZXJfcmN2eV9ocnRpbWVyX2ZuJiMzNDssCiAgICAmIzM0O2ZyZXJfcmN2eV9yZXNldF93b3JrX2ZuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBgYWN0X2ZyZXJgIGZvciBJRUVFIDgwMi4xQ0IgRlJFUi4gSXQgaW5jbHVkZXMgcGFja2V0IG1hbmlwdWxhdGlvbiAocHVzaC9wb3Agb2YgUi1UQUcpIGFuZCBzZXF1ZW5jZSByZWNvdmVyeSBhbGdvcml0aG1zLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwOTo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA5ZDlmNjIwNzkwZmMyOWVlY2EwMGY1OWJhOWI2Y2FkNWUwYWQ2MmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwOTo0MDo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaCBiL2luY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oXG5pbmRleCA3MGEwMmVlMTQzMDgwNy4uOGQ5N2E1ZjI5M2U2ZDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvZmxvd19vZmZsb2FkLmhcbkBAIC0xODQsNiAmIzQzOzE4NCw3IEBAIGVudW0gZmxvd19hY3Rpb25faWQge1xuIFx0RkxPV19BQ1RJT05fVkxBTl9QVVNIX0VUSCxcbiBcdEZMT1dfQUNUSU9OX1ZMQU5fUE9QX0VUSCxcbiBcdEZMT1dfQUNUSU9OX0NPTlRJTlVFLFxuJiM0MztcdEZMT1dfQUNUSU9OX0ZSRVIsXG4gXHROVU1fRkxPV19BQ1RJT05TLFxuIH07XG4gXG5AQCAtMzI5LDYgJiM0MzszMzAsMTYgQEAgc3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5IHtcbiBcdFx0c3RydWN0IHtcdFx0XHRcdC8qIEZMT1dfQUNUSU9OX1BQUE9FX1BVU0ggKi9cbiBcdFx0XHR1MTZcdFx0c2lkO1xuIFx0XHR9IHBwcG9lO1xuJiM0MztcdFx0c3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMT1dfQUNUSU9OX0ZSRVIgKi9cbiYjNDM7XHRcdFx0dThcdFx0ZnVuYztcbiYjNDM7XHRcdFx0dThcdFx0dGFnX3R5cGU7XG4mIzQzO1x0XHRcdGJvb2xcdFx0aW5kaXZpZHVhbDtcbiYjNDM7XHRcdFx0dThcdFx0cmN2eV9hbGc7XG4mIzQzO1x0XHRcdHU4XHRcdHJjdnlfaGlzdG9yeV9sZW47XG4mIzQzO1x0XHRcdHUzMlx0XHRyY3Z5X3Jlc2V0X21zZWM7XG4mIzQzO1x0XHRcdGJvb2xcdFx0dGFnX3BvcDtcbiYjNDM7XHRcdFx0Ym9vbFx0XHR0YWtlX25vX3NlcTtcbiYjNDM7XHRcdH0gZnJlcjtcbiBcdH07XG4gXHRzdHJ1Y3QgZmxvd19hY3Rpb25fY29va2llICp1c2VyX2Nvb2tpZTsgLyogdXNlciBkZWZpbmVkIGFjdGlvbiBjb29raWUgKi9cbiB9O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19mcmVyLmggYi9pbmNsdWRlL25ldC90Y19hY3QvdGNfZnJlci5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjVmNmY4Y2E3MDgxM2EwXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y19hY3QvdGNfZnJlci5oXG5AQCAtMCwwICYjNDM7MSw3MSBAQFxuJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqL1xuJiM0MzsvKiBDb3B5cmlnaHQgMjAyNiBOWFAgKi9cbiYjNDM7XG4mIzQzOyNpZm5kZWYgX19ORVRfVENfRlJFUl9IXG4mIzQzOyNkZWZpbmUgX19ORVRfVENfRlJFUl9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvYWN0X2FwaS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RjX2FjdC90Y19mcmVyLmhcdTAwM2VcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgZnJlcl9zZXFnZW4gLSBzZXF1ZW5jZSBudW1iZXIgZ2VuZXJhdG9yIHN0YXRlIChlbWJlZGRlZCBpbiB0Y2ZfZnJlcilcbiYjNDM7ICovXG4mIzQzO3N0cnVjdCBmcmVyX3NlcWdlbiB7XG4mIzQzO1x0dTMyXHRcdGdlbl9zZXFfbnVtO1xuJiM0MztcdHU2NFx0XHRzZXFfc3BhY2U7XHQvKiAxIFx1MDAzY1x1MDAzYyAxNiAqL1xuJiM0MztcdHNwaW5sb2NrX3RcdGxvY2s7XHRcdC8qIHByb3RlY3RzIGZyZXJfc2VxZ2VuIHN0YXRlICovXG4mIzQzO1x0dTY0XHRcdHN0YXRzX3BrdHM7XHQvKiBmcmVyQ3BzU2VxR2VuUGFja2V0cyAqL1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHN0cnVjdCBmcmVyX3JjdnkgLSBzZXF1ZW5jZSByZWNvdmVyeSBzdGF0ZSAoZW1iZWRkZWQgaW4gdGNmX2ZyZXIpXG4mIzQzOyAqXG4mIzQzOyAqL1xuJiM0MztzdHJ1Y3QgZnJlcl9yY3Z5IHtcbiYjNDM7XHR1OFx0XHRhbGc7XG4mIzQzO1x0dThcdFx0aGlzdG9yeV9sZW47XHQvKiAxLTMyICovXG4mIzQzO1x0dTMyXHRcdHJlc2V0X21zZWM7XG4mIzQzO1x0dTY0XHRcdHNlcV9zcGFjZTtcbiYjNDM7XHR1MzJcdFx0cmN2eV9zZXFfbnVtO1xuJiM0MztcdHUzMlx0XHRzZXFfaGlzdG9yeTtcbiYjNDM7XHRib29sXHRcdHRha2VfYW55O1xuJiM0MztcdGJvb2xcdFx0dGFrZV9ub19zZXE7XG4mIzQzO1x0c3RydWN0IGhydGltZXJcdGhydGltZXI7XG4mIzQzO1x0c3BpbmxvY2tfdFx0bG9jaztcdFx0LyogcHJvdGVjdHMgZnJlcl9yY3Z5IHN0YXRlICovXG4mIzQzO1x0Lyogc3RhdGlzdGljcyAqL1xuJiM0MztcdHU2NFx0XHRzdGF0c190YWdsZXNzX3BrdHM7XG4mIzQzO1x0dTY0XHRcdHN0YXRzX291dF9vZl9vcmRlcl9wa3RzO1xuJiM0MztcdHU2NFx0XHRzdGF0c19yb2d1ZV9wa3RzO1xuJiM0MztcdHU2NFx0XHRzdGF0c19sb3N0X3BrdHM7XG4mIzQzO1x0dTY0XHRcdHN0YXRzX3Jlc2V0cztcbiYjNDM7XHR1NjRcdFx0c3RhdHNfcGFzc2VkX3BrdHM7XG4mIzQzO1x0dTY0XHRcdHN0YXRzX2Rpc2NhcmRlZF9wa3RzO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHN0cnVjdCB0Y2ZfZnJlciAtIHBlciB0Y19hY3Rpb24gRlJFUiBwcml2YXRlIGRhdGFcbiYjNDM7ICovXG4mIzQzO3N0cnVjdCB0Y2ZfZnJlciB7XG4mIzQzO1x0c3RydWN0IHRjX2FjdGlvblx0Y29tbW9uO1xuJiM0MztcdHU4XHRcdFx0ZnVuYztcbiYjNDM7XHR1OFx0XHRcdHRhZ190eXBlO1xuJiM0MztcdGJvb2xcdFx0XHR0YWdfcG9wO1xuJiM0MztcdGJvb2xcdFx0XHRpbmRpdmlkdWFsO1x0LyogSW5kaXZpZHVhbCBSZWNvdmVyeSBmbGFnICovXG4mIzQzO1x0LyogcHVzaCBwYXRoICovXG4mIzQzO1x0c3RydWN0IGZyZXJfc2VxZ2VuXHRzZXFnZW47XG4mIzQzO1x0LyogcmVjb3ZlciBwYXRoICovXG4mIzQzO1x0c3RydWN0IGZyZXJfcmN2eVx0cmN2eTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdG9fZnJlcihhKSAoKHN0cnVjdCB0Y2ZfZnJlciAqKShhKSlcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc190Y2ZfZnJlcihjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxuJiM0Mzt7XG4mIzQzOyNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcbiYjNDM7XHRpZiAoYS1cdTAwM2VvcHMgXHUwMDI2XHUwMDI2IGEtXHUwMDNlb3BzLVx1MDAzZWlkID09IFRDQV9JRF9GUkVSKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzOyNlbmRpZlxuJiM0MztcdHJldHVybiBmYWxzZTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9fTkVUX1RDX0ZSRVJfSCAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmhcbmluZGV4IGZiNWVmYzhlMDZjYzE0Li4yZDkwOTA3OGNkZTE4ZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaFxuQEAgLTEyMiw2ICYjNDM7MTIyLDcgQEBcbiAjZGVmaW5lIEVUSF9QX0RTQV84MDIxUVx0MHhEQURCXHRcdC8qIEZha2UgVkxBTiBIZWFkZXIgZm9yIERTQSBbIE5PVCBBTiBPRkZJQ0lBTExZIFJFR0lTVEVSRUQgSUQgXSAqL1xuICNkZWZpbmUgRVRIX1BfRFNBX0E1UFNXXHQweEUwMDFcdFx0LyogQTVQU1cgVGFnIFZhbHVlIFsgTk9UIEFOIE9GRklDSUFMTFkgUkVHSVNURVJFRCBJRCBdICovXG4gI2RlZmluZSBFVEhfUF9JRkVcdDB4RUQzRVx0XHQvKiBGb3JDRVMgaW50ZXItRkUgTEZCIHR5cGUgKi9cbiYjNDM7I2RlZmluZSBFVEhfUF9SVEFHXHQweEYxQzFcdFx0LyogUmVkdW5kYW5jeSBUYWcgKElFRUUgODAyLjFDQikgKi9cbiAjZGVmaW5lIEVUSF9QX0FGX0lVQ1YgICAweEZCRkJcdFx0LyogSUJNIGFmX2l1Y3YgWyBOT1QgQU4gT0ZGSUNJQUxMWSBSRUdJU1RFUkVEIElEIF0gKi9cbiAjZGVmaW5lIEVUSF9QX05YUF9ORVRDICAweEZEM0FcdFx0LyogTlhQIE5FVEMgRFNBIFsgTk9UIEFOIE9GRklDSUFMTFkgUkVHSVNURVJFRCBJRCBdICovXG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhcbmluZGV4IDI4ZDk0YjExZDFhYTE2Li45Yjg3ZjA0NTUxMTBkMyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhcbkBAIC0xMzksNiAmIzQzOzEzOSw3IEBAIGVudW0gdGNhX2lkIHtcbiBcdFRDQV9JRF9NUExTLFxuIFx0VENBX0lEX0NULFxuIFx0VENBX0lEX0dBVEUsXG4mIzQzO1x0VENBX0lEX0ZSRVIsXG4gXHQvKiBvdGhlciBhY3Rpb25zIGdvIGhlcmUgKi9cbiBcdF9fVENBX0lEX01BWCA9IDI1NVxuIH07XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19mcmVyLmggYi9pbmNsdWRlL3VhcGkvbGludXgvdGNfYWN0L3RjX2ZyZXIuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yNDFlOTA4MjdlMjYyOFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19mcmVyLmhcbkBAIC0wLDAgJiM0MzsxLDg5IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wJiM0MzsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi9cbiYjNDM7LyogQ29weXJpZ2h0IDIwMjYgTlhQICovXG4mIzQzO1xuJiM0MzsjaWZuZGVmIF9fTElOVVhfVENfRlJFUl9IXG4mIzQzOyNkZWZpbmUgX19MSU5VWF9UQ19GUkVSX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BrdF9jbHMuaFx1MDAzZVxuJiM0MztcbiYjNDM7LyogQmFzZSBwYXJhbWV0ZXJzIHBhc3NlZCBpbiBUQ0FfRlJFUl9QQVJNUyAqL1xuJiM0MztzdHJ1Y3QgdGNfZnJlciB7XG4mIzQzO1x0dGNfZ2VuO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGVudW0gVENBX0ZSRVJfKiAtIG5ldGxpbmsgYXR0cmlidXRlcyBmb3IgdGhlIEZSRVIgdGMgYWN0aW9uXG4mIzQzOyAqXG4mIzQzOyAqIEBUQ0FfRlJFUl9GVU5DOiAgICAgICAgICAgICBGdW5jdGlvbmFsIHN1Yi1jb21tYW5kICh0Y19mcmVyX2Z1bmMpLlxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5LlxuJiM0MzsgKiBAVENBX0ZSRVJfVEFHX1RZUEU6ICAgICAgICAgUmVkdW5kYW5jeSB0YWcgdHlwZSAodGNfZnJlcl90YWdfdHlwZSkuXG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnkuXG4mIzQzOyAqXG4mIzQzOyAqIFB1c2gtc3BlY2lmaWMgYXR0cmlidXRlcyAoVENBX0ZSRVJfRlVOQ19QVVNIKTpcbiYjNDM7ICogUmVjb3Zlci1zcGVjaWZpYyBhdHRyaWJ1dGVzIChUQ0FfRlJFUl9GVU5DX1JFQ09WRVIpOlxuJiM0MzsgKiBAVENBX0ZSRVJfUkNWWV9JTkRJVklEVUFMOiAgRmxhZy4gRm9yY2UgSW5kaXZpZHVhbCBSZWNvdmVyeS5cbiYjNDM7ICogQFRDQV9GUkVSX1JDVllfQUxHOiAgICAgICAgIHU4LiBSZWNvdmVyeSBhbGdvcml0aG0gKHRjX2ZyZXJfcmN2eV9hbGcpLlxuJiM0MzsgKiBAVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTjogdTguIFNlcXVlbmNlSGlzdG9yeSB3aW5kb3cgc2l6ZSAoMS0zMikuXG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBzIHRvIGZyZXJTZXFSY3Z5SGlzdG9yeUxlbmd0aC5cbiYjNDM7ICogQFRDQV9GUkVSX1JDVllfUkVTRVRfTVNFQzogIHUzMi4gUmVzZXQgdGltZXIgaW4gbWlsbGlzZWNvbmRzLlxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCBkaXNhYmxlcyB0aGUgdGltZXIuXG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBzIHRvIGZyZXJTZXFSY3Z5UmVzZXRNU2VjLlxuJiM0MzsgKiBAVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUTogRmxhZy4gQWNjZXB0IGZyYW1lcyB3aXRob3V0IGEgcmVkdW5kYW5jeVxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnIGFuZCBwYXNzIHRoZW0gdW5jb25kaXRpb25hbGx5LlxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwcyB0byBmcmVyU2VxUmN2eVRha2VOb1NlcS5cbiYjNDM7ICogQFRDQV9GUkVSX1JDVllfVEFHX1BPUDogICAgIEZsYWcuIFJlbW92ZSB0aGUgcmVkdW5kYW5jeSB0YWcgZnJvbVxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzIHRoYXQgcGFzcyB0aGUgcmVjb3ZlcnkgZnVuY3Rpb24uXG4mIzQzOyAqXG4mIzQzOyAqIFJlYWQtb25seSBzdGF0aXN0aWNzIChmaWxsZWQgb24gZHVtcCwgSUVFRSA4MDIuMUNCIFRhYmxlIDEwLTEpOlxuJiM0MzsgKiBAVENBX0ZSRVJfU1RBVFNfVEFHTEVTU19QS1RTOiAgICAgICBmcmVyQ3BzU2VxUmN2eVRhZ2xlc3NQYWNrZXRzXG4mIzQzOyAqIEBUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUzogIGZyZXJDcHNTZXFSY3Z5T3V0T2ZPcmRlclBhY2tldHNcbiYjNDM7ICogQFRDQV9GUkVSX1NUQVRTX1JPR1VFX1BLVFM6ICAgICAgICAgZnJlckNwc1NlcVJjdnlSb2d1ZVBhY2tldHNcbiYjNDM7ICogQFRDQV9GUkVSX1NUQVRTX0xPU1RfUEtUUzogICAgICAgICAgZnJlckNwc1NlcVJjdnlMb3N0UGFja2V0c1xuJiM0MzsgKiBAVENBX0ZSRVJfU1RBVFNfUkVTRVRTOiAgICAgICAgICAgICBmcmVyQ3BzU2VxUmN2eVJlc2V0c1xuJiM0MzsgKiBAVENBX0ZSRVJfU1RBVFNfUEFTU0VEX1BLVFM6ICAgICAgICBmcmVyQ3BzU2VxUmN2eVBhc3NlZFBhY2tldHNcbiYjNDM7ICogQFRDQV9GUkVSX1NUQVRTX0RJU0NBUkRFRF9QS1RTOiAgICAgZnJlckNwc1NlcVJjdnlEaXNjYXJkZWRQYWNrZXRzXG4mIzQzOyAqIEBUQ0FfRlJFUl9TVEFUU19TRVFHRU5fUEtUUzogICAgICAgIGZyZXJDcHNTZXFHZW5QYWNrZXRzXG4mIzQzOyAqL1xuJiM0MztlbnVtIHtcbiYjNDM7XHRUQ0FfRlJFUl9VTlNQRUMsXG4mIzQzO1x0VENBX0ZSRVJfVE0sICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgdGNmX3QgKi9cbiYjNDM7XHRUQ0FfRlJFUl9QQVJNUywgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCB0Y19mcmVyICovXG4mIzQzO1x0VENBX0ZSRVJfUEFELFxuJiM0MztcdFRDQV9GUkVSX0ZVTkMsICAgICAgICAgICAgICAgICAgICAgLyogdTg6IHRjX2ZyZXJfZnVuYyAqL1xuJiM0MztcdFRDQV9GUkVSX1RBR19UWVBFLCAgICAgICAgICAgICAgICAgLyogdTg6IHRjX2ZyZXJfdGFnX3R5cGUgKi9cbiYjNDM7XHRUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUwsICAgICAgICAgIC8qIE5MQV9GTEFHICovXG4mIzQzO1x0VENBX0ZSRVJfUkNWWV9BTEcsICAgICAgICAgICAgICAgICAvKiB1ODogdGNfZnJlcl9yY3Z5X2FsZyAqL1xuJiM0MztcdFRDQV9GUkVSX1JDVllfSElTVE9SWV9MRU4sICAgICAgICAgLyogdTg6IDEtMzIgKi9cbiYjNDM7XHRUQ0FfRlJFUl9SQ1ZZX1JFU0VUX01TRUMsICAgICAgICAgIC8qIHUzMiAqL1xuJiM0MztcdFRDQV9GUkVSX1JDVllfVEFLRV9OT19TRVEsICAgICAgICAgLyogTkxBX0ZMQUcgKi9cbiYjNDM7XHRUQ0FfRlJFUl9SQ1ZZX1RBR19QT1AsICAgICAgICAgICAgIC8qIE5MQV9GTEFHICovXG4mIzQzO1x0VENBX0ZSRVJfU1RBVFNfVEFHTEVTU19QS1RTLCAgICAgICAvKiB1NjQgKi9cbiYjNDM7XHRUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUywgIC8qIHU2NCAqL1xuJiM0MztcdFRDQV9GUkVSX1NUQVRTX1JPR1VFX1BLVFMsICAgICAgICAgLyogdTY0ICovXG4mIzQzO1x0VENBX0ZSRVJfU1RBVFNfTE9TVF9QS1RTLCAgICAgICAgICAvKiB1NjQgKi9cbiYjNDM7XHRUQ0FfRlJFUl9TVEFUU19SRVNFVFMsICAgICAgICAgICAgIC8qIHU2NCAqL1xuJiM0MztcdFRDQV9GUkVSX1NUQVRTX1BBU1NFRF9QS1RTLCAgICAgICAgLyogdTY0ICovXG4mIzQzO1x0VENBX0ZSRVJfU1RBVFNfRElTQ0FSREVEX1BLVFMsICAgICAvKiB1NjQgKi9cbiYjNDM7XHRUQ0FfRlJFUl9TVEFUU19TRVFHRU5fUEtUUywgICAgICAgIC8qIHU2NCAqL1xuJiM0MztcdF9fVENBX0ZSRVJfTUFYLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7I2RlZmluZSBUQ0FfRlJFUl9NQVggKF9fVENBX0ZSRVJfTUFYIC0gMSlcbiYjNDM7XG4mIzQzO2VudW0gdGNfZnJlcl9mdW5jIHtcbiYjNDM7XHRUQ0FfRlJFUl9GVU5DX1BVU0ggICAgPSAxLFxuJiM0MztcdFRDQV9GUkVSX0ZVTkNfUkVDT1ZFUiA9IDIsXG4mIzQzO307XG4mIzQzO1xuJiM0MztlbnVtIHRjX2ZyZXJfdGFnX3R5cGUge1xuJiM0MztcdFRDQV9GUkVSX1RBR19SVEFHID0gMSxcbiYjNDM7XHRUQ0FfRlJFUl9UQUdfSFNSLFxuJiM0MztcdFRDQV9GUkVSX1RBR19QUlAsXG4mIzQzO307XG4mIzQzO1xuJiM0MztlbnVtIHRjX2ZyZXJfcmN2eV9hbGcge1xuJiM0MztcdFRDQV9GUkVSX1JDVllfVkVDVE9SX0FMRyA9IDAsICAvKiBJRUVFIDgwMi4xQ0IgNy40LjMuNCAqL1xuJiM0MztcdFRDQV9GUkVSX1JDVllfTUFUQ0hfQUxHICA9IDEsICAvKiBJRUVFIDgwMi4xQ0IgNy40LjMuNSAqL1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9fTElOVVhfVENfRlJFUl9IICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL0tjb25maWcgYi9uZXQvc2NoZWQvS2NvbmZpZ1xuaW5kZXggNmRkZmYwMjhiODFhNDEuLjdjYTc5YjNlYjViMzRjIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9LY29uZmlnXG5AQCAtOTM5LDYgJiM0Mzs5MzksMjIgQEAgY29uZmlnIE5FVF9BQ1RfR0FURVxuIFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhY3RfZ2F0ZS5cbiBcbiYjNDM7Y29uZmlnIE5FVF9BQ1RfRlJFUlxuJiM0MztcdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjFDQiBGUkVSIHRjIGFjdGlvblwmIzM0O1xuJiM0MztcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBTYXkgWSBoZXJlIHRvIGVuYWJsZSB0aGUgSUVFRSA4MDIuMUNCIEZSRVIgdGMgYWN0aW9uLiAgVGhlIGFjdGlvblxuJiM0MztcdCAgaW1wbGVtZW50cyB0aGUgU2VxdWVuY2UgR2VuZXJhdGlvbiBGdW5jdGlvbiAoZWdyZXNzIFItVEFHIGluc2VydGlvblxuJiM0MztcdCAgd2l0aCBzaGFyZWQgcGVyLXN0cmVhbSBzZXF1ZW5jZSBjb3VudGVyKSBhbmQgdGhlIFNlcXVlbmNlIFJlY292ZXJ5XG4mIzQzO1x0ICBGdW5jdGlvbiAoaW5ncmVzcyBkdXBsaWNhdGUgZGV0ZWN0aW9uIGFuZCBlbGltaW5hdGlvbikgZGVzY3JpYmVkIGluXG4mIzQzO1x0ICBJRUVFIDgwMi4xQ0ItMjAxNy5cbiYjNDM7XG4mIzQzO1x0ICBCb3RoIFNlcXVlbmNlIFJlY292ZXJ5IChjcm9zcy1wb3J0IHNoYXJlZCBzdGF0ZSB2aWEgcmN2eS1pZCkgYW5kXG4mIzQzO1x0ICBJbmRpdmlkdWFsIFJlY292ZXJ5IChwZXItcG9ydCBpbmRlcGVuZGVudCBzdGF0ZSkgYXJlIHN1cHBvcnRlZC5cbiYjNDM7XG4mIzQzO1x0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4mIzQzO1x0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2ZyZXIuXG4mIzQzO1xuIGNvbmZpZyBORVRfSUZFX1NLQk1BUktcbiBcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIG1hcmsgb24gSUZFIGFjdGlvblwmIzM0O1xuIFx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9NYWtlZmlsZSBiL25ldC9zY2hlZC9NYWtlZmlsZVxuaW5kZXggNTA3OGVhODRlNmFkN2EuLmQ5ZjYwNDM0ZTdkNzdmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvTWFrZWZpbGVcbkBAIC0zMSw2ICYjNDM7MzEsNyBAQCBvYmotJChDT05GSUdfTkVUX0lGRV9TS0JUQ0lOREVYKVx0JiM0Mzs9IGFjdF9tZXRhX3NrYnRjaW5kZXgub1xuIG9iai0kKENPTkZJR19ORVRfQUNUX1RVTk5FTF9LRVkpJiM0Mzs9IGFjdF90dW5uZWxfa2V5Lm9cbiBvYmotJChDT05GSUdfTkVUX0FDVF9DVClcdCYjNDM7PSBhY3RfY3Qub1xuIG9iai0kKENPTkZJR19ORVRfQUNUX0dBVEUpXHQmIzQzOz0gYWN0X2dhdGUub1xuJiM0MztvYmotJChDT05GSUdfTkVUX0FDVF9GUkVSKVx0JiM0Mzs9IGFjdF9mcmVyLm9cbiBvYmotJChDT05GSUdfTkVUX1NDSF9GSUZPKVx0JiM0Mzs9IHNjaF9maWZvLm9cbiBvYmotJChDT05GSUdfTkVUX1NDSF9IVEIpXHQmIzQzOz0gc2NoX2h0Yi5vXG4gb2JqLSQoQ09ORklHX05FVF9TQ0hfSEZTQylcdCYjNDM7PSBzY2hfaGZzYy5vXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9mcmVyLmMgYi9uZXQvc2NoZWQvYWN0X2ZyZXIuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi43YjZkYjY0Mzc4OGRmN1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2FjdF9mcmVyLmNcbkBAIC0wLDAgJiM0MzsxLDgzNSBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuJiM0MzsvKiBDb3B5cmlnaHQgMjAyNiBOWFAgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaWZfdmxhbi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2hydGltZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JrcXVldWUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvYWN0X2FwaS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9uZXRsaW5rLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L3BrdF9jbHMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvdGNfYWN0L3RjX2ZyZXIuaFx1MDAzZVxuJiM0MztcbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzOy8qIFItVEFHIHdpcmUgc3RydWN0dXJlcyAoSUVFRSA4MDIuMUNCIDcuOCkgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4mIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuJiM0MztcbiYjNDM7c3RydWN0IHJfdGFnIHtcbiYjNDM7XHRfX2JlMTYgcmVzZXJ2ZWQ7XG4mIzQzO1x0X19iZTE2IHNlcXVlbmNlX25yO1xuJiM0MztcdF9fYmUxNiBlbmNhcF9wcm90bztcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfZnJlcl9vcHM7XG4mIzQzO1xuJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiYjNDM7LyogUmVjb3ZlcnkgcmVzZXQgbWFjaGluZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiYjNDM7XG4mIzQzO3N0cnVjdCBmcmVyX3Jjdnlfd29yayB7XG4mIzQzO1x0c3RydWN0IHdvcmtfc3RydWN0XHR3b3JrO1xuJiM0MztcdHN0cnVjdCBmcmVyX3JjdnlcdCpyY3Z5O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgZnJlcl9yY3Z5X3Jlc2V0KHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkpXG4mIzQzO3tcbiYjNDM7XHRpZiAocmN2eS1cdTAwM2VhbGcgPT0gVENBX0ZSRVJfUkNWWV9WRUNUT1JfQUxHKSB7XG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXJjdnlfc2VxX251bSA9ICh1MzIpKHJjdnktXHUwMDNlc2VxX3NwYWNlIC0gMSk7XG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXNlcV9oaXN0b3J5ICA9IDA7XG4mIzQzO1x0fVxuJiM0MztcdHJjdnktXHUwMDNldGFrZV9hbnkgPSB0cnVlO1xuJiM0MztcdHJjdnktXHUwMDNlc3RhdHNfcmVzZXRzJiM0MzsmIzQzOztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgZnJlcl9yY3Z5X3Jlc2V0X3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZyZXJfcmN2eV93b3JrICpydyA9XG4mIzQzO1x0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGZyZXJfcmN2eV93b3JrLCB3b3JrKTtcbiYjNDM7XHRzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5ID0gcnctXHUwMDNlcmN2eTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnJjdnktXHUwMDNlbG9jayk7XG4mIzQzO1x0ZnJlcl9yY3Z5X3Jlc2V0KHJjdnkpO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJjdnktXHUwMDNlbG9jayk7XG4mIzQzO1x0a2ZyZWUocncpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgZnJlcl9yY3Z5X2hydGltZXJfZm4oc3RydWN0IGhydGltZXIgKnRpbWVyKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZyZXJfcmN2eSAqcmN2eSA9XG4mIzQzO1x0XHRjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCBmcmVyX3JjdnksIGhydGltZXIpO1xuJiM0MztcdHN0cnVjdCBmcmVyX3Jjdnlfd29yayAqcnc7XG4mIzQzO1xuJiM0MztcdC8qIEFsbG9jYXRlIGluIEdGUF9BVE9NSUMgY29udGV4dDsgaWYgaXQgZmFpbHMgdGhlIHN0YXRlIGlzIG5vdFxuJiM0MztcdCAqIHJlc2V0IHRoaXMgY3ljbGUgLSB0aGUgbmV4dCBmcmFtZSB3aWxsIGF0dGVtcHQgYWdhaW4uXG4mIzQzO1x0ICovXG4mIzQzO1x0cncgPSBrbWFsbG9jX29iaigqcncpO1xuJiM0MztcdGlmIChydykge1xuJiM0MztcdFx0SU5JVF9XT1JLKFx1MDAyNnJ3LVx1MDAzZXdvcmssIGZyZXJfcmN2eV9yZXNldF93b3JrX2ZuKTtcbiYjNDM7XHRcdHJ3LVx1MDAzZXJjdnkgPSByY3Z5O1xuJiM0MztcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZydy1cdTAwM2V3b3JrKTtcbiYjNDM7XHR9XG4mIzQzO1x0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBmcmVyX3JjdnlfdGltZXJfcmVzdGFydChzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHJjdnktXHUwMDNlcmVzZXRfbXNlYylcbiYjNDM7XHRcdGhydGltZXJfc3RhcnQoXHUwMDI2cmN2eS1cdTAwM2VocnRpbWVyLFxuJiM0MztcdFx0XHQgICAgICBtc190b19rdGltZShyY3Z5LVx1MDAzZXJlc2V0X21zZWMpLFxuJiM0MztcdFx0XHQgICAgICBIUlRJTUVSX01PREVfUkVMX1NPRlQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBmcmVyX3JjdnlfaW5pdF9zdGF0ZShzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5LCB1OCBhbGcsXG4mIzQzO1x0XHRcdFx0IHU4IGhpc3RvcnlfbGVuLCB1MzIgcmVzZXRfbXNlYyxcbiYjNDM7XHRcdFx0XHQgYm9vbCB0YWtlX25vX3NlcSlcbiYjNDM7e1xuJiM0MztcdHJjdnktXHUwMDNlYWxnICAgICAgICAgID0gYWxnO1xuJiM0MztcdHJjdnktXHUwMDNlaGlzdG9yeV9sZW4gID0gaGlzdG9yeV9sZW47XG4mIzQzO1x0cmN2eS1cdTAwM2VyZXNldF9tc2VjICAgPSByZXNldF9tc2VjO1xuJiM0MztcdHJjdnktXHUwMDNlc2VxX3NwYWNlICAgID0gMSBcdTAwM2NcdTAwM2MgMTY7XG4mIzQzO1x0cmN2eS1cdTAwM2V0YWtlX25vX3NlcSAgPSB0YWtlX25vX3NlcTtcbiYjNDM7XHRyY3Z5LVx1MDAzZXRha2VfYW55ICAgICA9IHRydWU7XG4mIzQzO1x0cmN2eS1cdTAwM2VyY3Z5X3NlcV9udW0gPSAodTMyKShyY3Z5LVx1MDAzZXNlcV9zcGFjZSAtIDEpO1xuJiM0MztcdHJjdnktXHUwMDNlc2VxX2hpc3RvcnkgID0gMDtcbiYjNDM7XHRzcGluX2xvY2tfaW5pdChcdTAwMjZyY3Z5LVx1MDAzZWxvY2spO1xuJiM0MztcdGhydGltZXJfc2V0dXAoXHUwMDI2cmN2eS1cdTAwM2VocnRpbWVyLCBmcmVyX3JjdnlfaHJ0aW1lcl9mbiwgQ0xPQ0tfTU9OT1RPTklDLFxuJiM0MztcdFx0ICAgICAgSFJUSU1FUl9NT0RFX1JFTF9TT0ZUKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzOy8qIFItVEFHIGhlbHBlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGZyZXJfcnRhZ19wdXNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBzZXFfbnVtKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgY2hhciAqbmV3X21hY19oZWFkZXI7XG4mIzQzO1x0dW5zaWduZWQgaW50IGRhdGFfb2Zmc2V0O1xuJiM0MztcdHVuc2lnbmVkIGludCBoZWFkX2xlbjtcbiYjNDM7XHRzdHJ1Y3Qgdmxhbl9ldGhoZHIgKnZoO1xuJiM0MztcdHN0cnVjdCBldGhoZHIgKmVoO1xuJiM0MztcdHN0cnVjdCByX3RhZyAqcnRhZztcbiYjNDM7XHRfX2JlMTYgKnByb3RvX3B0cjtcbiYjNDM7XHRfX2JlMTYgc2F2ZWRfcHJvdG87XG4mIzQzO1xuJiM0MztcdGlmICghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGRhdGFfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2JfbWFjX2hlYWRlcihza2IpO1xuJiM0MztcbiYjNDM7XHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgZGF0YV9vZmZzZXQgJiM0Mzsgc2l6ZW9mKCpydGFnKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRhdGFfb2Zmc2V0IFx1MDAzZSAwKVxuJiM0MztcdFx0c2tiX3B1c2goc2tiLCBkYXRhX29mZnNldCk7XG4mIzQzO1xuJiM0MztcdGVoID0gZXRoX2hkcihza2IpO1xuJiM0MztcdGlmIChldGhfdHlwZV92bGFuKGVoLVx1MDAzZWhfcHJvdG8pKSB7XG4mIzQzO1x0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2YoKnZoKSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0ZWggPSBldGhfaGRyKHNrYik7XG4mIzQzO1x0XHR2aCA9IChzdHJ1Y3Qgdmxhbl9ldGhoZHIgKillaDtcbiYjNDM7XHRcdHByb3RvX3B0ciA9IFx1MDAyNnZoLVx1MDAzZWhfdmxhbl9lbmNhcHN1bGF0ZWRfcHJvdG87XG4mIzQzO1x0XHRoZWFkX2xlbiA9IHNpemVvZigqdmgpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2YoKmVoKSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0ZWggPSBldGhfaGRyKHNrYik7XG4mIzQzO1x0XHRwcm90b19wdHIgPSBcdTAwMjZlaC1cdTAwM2VoX3Byb3RvO1xuJiM0MztcdFx0aGVhZF9sZW4gPSBzaXplb2YoKmVoKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNhdmVkX3Byb3RvID0gKnByb3RvX3B0cjtcbiYjNDM7XHQqcHJvdG9fcHRyID0gaHRvbnMoRVRIX1BfUlRBRyk7XG4mIzQzO1xuJiM0MztcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpydGFnKSk7XG4mIzQzO1x0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbiYjNDM7XG4mIzQzO1x0bmV3X21hY19oZWFkZXIgPSBza2JfbWFjX2hlYWRlcihza2IpO1xuJiM0MztcdG1lbW1vdmUobmV3X21hY19oZWFkZXIsICh1bnNpZ25lZCBjaGFyICopZWgsIGhlYWRfbGVuKTtcbiYjNDM7XG4mIzQzO1x0c2tiLVx1MDAzZXByb3RvY29sID0gaHRvbnMoRVRIX1BfUlRBRyk7XG4mIzQzO1x0c2tiX3NldF9uZXR3b3JrX2hlYWRlcihza2IsIGhlYWRfbGVuKTtcbiYjNDM7XHRpZiAoZGF0YV9vZmZzZXQgXHUwMDNlIDApXG4mIzQzO1x0XHRza2JfcHVsbChza2IsIGRhdGFfb2Zmc2V0KTtcbiYjNDM7XG4mIzQzO1x0LyogV3JpdGUgUi1UQUcgYWZ0ZXIgdGhlIEV0aGVybmV0IC8gVkxBTiBoZWFkZXIgKi9cbiYjNDM7XHRydGFnID0gKHN0cnVjdCByX3RhZyAqKShuZXdfbWFjX2hlYWRlciAmIzQzOyBoZWFkX2xlbik7XG4mIzQzO1x0cnRhZy1cdTAwM2VyZXNlcnZlZCAgICA9IDA7XG4mIzQzO1x0cnRhZy1cdTAwM2VzZXF1ZW5jZV9uciA9IGh0b25zKHNlcV9udW0pO1xuJiM0MztcdHJ0YWctXHUwMDNlZW5jYXBfcHJvdG8gPSBzYXZlZF9wcm90bztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGZyZXJfcnRhZ19wb3Aoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGNoYXIgKm5ld19tYWNfaGVhZGVyO1xuJiM0MztcdHVuc2lnbmVkIGludCBkYXRhX29mZnNldDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaGVhZF9sZW47XG4mIzQzO1x0c3RydWN0IHZsYW5fZXRoaGRyICp2aDtcbiYjNDM7XHRzdHJ1Y3QgZXRoaGRyICplaDtcbiYjNDM7XHRzdHJ1Y3Qgcl90YWcgKnJ0YWc7XG4mIzQzO1x0X19iZTE2ICpwcm90b19wdHI7XG4mIzQzO1xuJiM0MztcdGRhdGFfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2JfbWFjX2hlYWRlcihza2IpO1xuJiM0MztcdGlmIChkYXRhX29mZnNldCBcdTAwM2UgMClcbiYjNDM7XHRcdHNrYl9wdXNoKHNrYiwgZGF0YV9vZmZzZXQpO1xuJiM0MztcbiYjNDM7XHRlaCA9IGV0aF9oZHIoc2tiKTtcbiYjNDM7XHRpZiAoZXRoX3R5cGVfdmxhbihlaC1cdTAwM2VoX3Byb3RvKSkge1xuJiM0MztcdFx0dmggPSAoc3RydWN0IHZsYW5fZXRoaGRyICopZWg7XG4mIzQzO1x0XHRwcm90b19wdHIgPSBcdTAwMjZ2aC1cdTAwM2VoX3ZsYW5fZW5jYXBzdWxhdGVkX3Byb3RvO1xuJiM0MztcdFx0aGVhZF9sZW4gPSBzaXplb2YoKnZoKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cHJvdG9fcHRyID0gXHUwMDI2ZWgtXHUwMDNlaF9wcm90bztcbiYjNDM7XHRcdGhlYWRfbGVuID0gc2l6ZW9mKCplaCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoKnByb3RvX3B0ciAhPSBodG9ucyhFVEhfUF9SVEFHKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0cnRhZyA9IChzdHJ1Y3Qgcl90YWcgKikoKHVuc2lnbmVkIGNoYXIgKillaCAmIzQzOyBoZWFkX2xlbik7XG4mIzQzO1x0KnByb3RvX3B0ciA9IHJ0YWctXHUwMDNlZW5jYXBfcHJvdG87XG4mIzQzO1xuJiM0MztcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IHJ0YWctXHUwMDNlZW5jYXBfcHJvdG87XG4mIzQzO1xuJiM0MztcdHNrYl9wb3N0cHVsbF9yY3N1bShza2IsIHJ0YWcsIHNpemVvZihzdHJ1Y3Qgcl90YWcpKTtcbiYjNDM7XHRza2JfcHVsbChza2IsIHNpemVvZigqcnRhZykpO1xuJiM0MztcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4mIzQzO1xuJiM0MztcdG5ld19tYWNfaGVhZGVyID0gc2tiX21hY19oZWFkZXIoc2tiKTtcbiYjNDM7XHRtZW1tb3ZlKG5ld19tYWNfaGVhZGVyLCAodW5zaWduZWQgY2hhciAqKWVoLCBoZWFkX2xlbik7XG4mIzQzO1xuJiM0MztcdHNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCBoZWFkX2xlbik7XG4mIzQzO1x0aWYgKGRhdGFfb2Zmc2V0IFx1MDAzZSAwKVxuJiM0MztcdFx0c2tiX3B1bGwoc2tiLCBkYXRhX29mZnNldCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZnJlcl9ydGFnX2RlY29kZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnNlcSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBkYXRhX29mZnNldDtcbiYjNDM7XHRzdHJ1Y3Qgdmxhbl9ldGhoZHIgKnZoO1xuJiM0MztcdHVuc2lnbmVkIGludCBoZWFkX2xlbjtcbiYjNDM7XHRzdHJ1Y3QgZXRoaGRyICplaDtcbiYjNDM7XHRzdHJ1Y3Qgcl90YWcgKnJ0YWc7XG4mIzQzO1x0X19iZTE2ICpwcm90b19wdHI7XG4mIzQzO1xuJiM0MztcdGlmICghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGRhdGFfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2JfbWFjX2hlYWRlcihza2IpO1xuJiM0MztcbiYjNDM7XHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgZGF0YV9vZmZzZXQpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdGlmIChkYXRhX29mZnNldCBcdTAwM2UgMClcbiYjNDM7XHRcdHNrYl9wdXNoKHNrYiwgZGF0YV9vZmZzZXQpO1xuJiM0MztcbiYjNDM7XHRlaCA9IGV0aF9oZHIoc2tiKTtcbiYjNDM7XHRpZiAoZXRoX3R5cGVfdmxhbihlaC1cdTAwM2VoX3Byb3RvKSkge1xuJiM0MztcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKCp2aCkgJiM0Mzsgc2l6ZW9mKCpydGFnKSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0ZWggPSBldGhfaGRyKHNrYik7XG4mIzQzO1x0XHR2aCA9IChzdHJ1Y3Qgdmxhbl9ldGhoZHIgKillaDtcbiYjNDM7XHRcdHByb3RvX3B0ciA9IFx1MDAyNnZoLVx1MDAzZWhfdmxhbl9lbmNhcHN1bGF0ZWRfcHJvdG87XG4mIzQzO1x0XHRoZWFkX2xlbiA9IHNpemVvZigqdmgpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2YoKmVoKSAmIzQzOyBzaXplb2YoKnJ0YWcpKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRlaCA9IGV0aF9oZHIoc2tiKTtcbiYjNDM7XHRcdHByb3RvX3B0ciA9IFx1MDAyNmVoLVx1MDAzZWhfcHJvdG87XG4mIzQzO1x0XHRoZWFkX2xlbiA9IHNpemVvZigqZWgpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGRhdGFfb2Zmc2V0IFx1MDAzZSAwKVxuJiM0MztcdFx0c2tiX3B1bGwoc2tiLCBkYXRhX29mZnNldCk7XG4mIzQzO1xuJiM0MztcdGlmICgqcHJvdG9fcHRyICE9IGh0b25zKEVUSF9QX1JUQUcpKSB7XG4mIzQzO1x0XHQqc2VxID0gLTE7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJ0YWcgPSAoc3RydWN0IHJfdGFnICopKCh1bnNpZ25lZCBjaGFyICopZWggJiM0MzsgaGVhZF9sZW4pO1xuJiM0MztcbiYjNDM7XHQqc2VxID0gKGludCludG9ocyhydGFnLVx1MDAzZXNlcXVlbmNlX25yKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuJiM0MzsvKiBSZWNvdmVyeSBhbGdvcml0aG1zIChjYWxsZWQgd2l0aCByY3Z5LVx1MDAzZWxvY2sgaGVsZCkgICAgICAgICAgICAgICAgICAqL1xuJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiYjNDM7XG4mIzQzOy8qIFJldHVybnMgdHJ1ZSA9IHBhc3MgZnJhbWUsIGZhbHNlID0gZGlzY2FyZCBmcmFtZS5cbiYjNDM7ICogQGluZGl2aWR1YWw6IHdoZW4gdHJ1ZSwgcmVzdGFydCB0aGUgcmVzZXQgdGltZXIgZXZlbiBvbiBkaXNjYXJkZWQgZnJhbWVzXG4mIzQzOyAqICAgKHJvZ3VlL2R1cGxpY2F0ZSksIGFzIHJlcXVpcmVkIGZvciBJbmRpdmlkdWFsIFJlY292ZXJ5IChJRUVFIDgwMi4xQ0IgNy41KS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBib29sIGZyZXJfdmVjdG9yX2FsZyhzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5LCBpbnQgc2VxLCBib29sIGluZGl2aWR1YWwpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZGVsdGE7XG4mIzQzO1x0Ym9vbCByZXN0YXJ0X3RpbWVyID0gZmFsc2U7XG4mIzQzO1x0Ym9vbCBwYXNzO1xuJiM0MztcbiYjNDM7XHRpZiAoc2VxIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHQvKiBObyBSLVRBRyBwcmVzZW50ICovXG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXN0YXRzX3RhZ2xlc3NfcGt0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRpZiAocmN2eS1cdTAwM2V0YWtlX25vX3NlcSkge1xuJiM0MztcdFx0XHRyZXN0YXJ0X3RpbWVyID0gdHJ1ZTtcbiYjNDM7XHRcdFx0cGFzcyA9IHRydWU7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRwYXNzID0gZmFsc2U7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChyY3Z5LVx1MDAzZXRha2VfYW55KSB7XG4mIzQzO1x0XHQvKiBGaXJzdCBmcmFtZSBhZnRlciByZXNldDogYWNjZXB0IHVuY29uZGl0aW9uYWxseSAqL1xuJiM0MztcdFx0cmN2eS1cdTAwM2V0YWtlX2FueSAgICAgPSBmYWxzZTtcbiYjNDM7XHRcdHJjdnktXHUwMDNlcmN2eV9zZXFfbnVtID0gKHUzMilzZXE7XG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXNlcV9oaXN0b3J5ICA9IEJJVCgwKTtcbiYjNDM7XHRcdHJlc3RhcnRfdGltZXIgPSB0cnVlO1xuJiM0MztcdFx0cGFzcyA9IHRydWU7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGRlbHRhID0gKHNlcSAtIChpbnQpcmN2eS1cdTAwM2VyY3Z5X3NlcV9udW0pIFx1MDAyNlxuJiM0MztcdFx0KGludCkocmN2eS1cdTAwM2VzZXFfc3BhY2UgLSAxKTtcbiYjNDM7XHQvKiBNYXAgZGVsdGEgXHUwMDNlIHNlcV9zcGFjZS8yIHRvIG5lZ2F0aXZlIChzaWduZWQgd3JhcCkgKi9cbiYjNDM7XHRpZiAoKHUzMilkZWx0YSBcdTAwMjYgKHUzMikocmN2eS1cdTAwM2VzZXFfc3BhY2UgLyAyKSlcbiYjNDM7XHRcdGRlbHRhIC09IChpbnQpcmN2eS1cdTAwM2VzZXFfc3BhY2U7XG4mIzQzO1xuJiM0MztcdGlmIChkZWx0YSBcdTAwM2U9IChpbnQpcmN2eS1cdTAwM2VoaXN0b3J5X2xlbiB8fFxuJiM0MztcdCAgICBkZWx0YSBcdTAwM2M9IC0oaW50KXJjdnktXHUwMDNlaGlzdG9yeV9sZW4pIHtcbiYjNDM7XHRcdC8qIFBhY2tldCBpcyBvdXQtb2YtcmFuZ2UgKHJvZ3VlKS4gKi9cbiYjNDM7XHRcdHJjdnktXHUwMDNlc3RhdHNfcm9ndWVfcGt0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRpZiAoaW5kaXZpZHVhbClcbiYjNDM7XHRcdFx0cmVzdGFydF90aW1lciA9IHRydWU7XG4mIzQzO1x0XHRwYXNzID0gZmFsc2U7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChkZWx0YSBcdTAwM2M9IDApIHtcbiYjNDM7XHRcdC8qIFBhY2tldCBpcyBvbGQ6IGNoZWNrIHdoZXRoZXIgYWxyZWFkeSBzZWVuLiAqL1xuJiM0MztcdFx0aWYgKHJjdnktXHUwMDNlc2VxX2hpc3RvcnkgXHUwMDI2IEJJVCgtZGVsdGEpKSB7XG4mIzQzO1x0XHRcdGlmIChpbmRpdmlkdWFsKVxuJiM0MztcdFx0XHRcdHJlc3RhcnRfdGltZXIgPSB0cnVlO1xuJiM0MztcdFx0XHQvKiBBbHJlYWR5IHJlY2VpdmVkICovXG4mIzQzO1x0XHRcdHBhc3MgPSBmYWxzZTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdC8qIE91dC1vZi1vcmRlciBidXQgbm90IHlldCBzZWVuICovXG4mIzQzO1x0XHRcdHJjdnktXHUwMDNlc2VxX2hpc3RvcnkgfD0gQklUKC1kZWx0YSk7XG4mIzQzO1x0XHRcdHJjdnktXHUwMDNlc3RhdHNfb3V0X29mX29yZGVyX3BrdHMmIzQzOyYjNDM7O1xuJiM0MztcdFx0XHRyZXN0YXJ0X3RpbWVyID0gdHJ1ZTtcbiYjNDM7XHRcdFx0cGFzcyA9IHRydWU7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIGRlbHRhIFx1MDAzZSAwOiBmcmFtZSBpcyBuZXdlciB0aGFuIGV4cGVjdGVkICovXG4mIzQzO1x0aWYgKGRlbHRhICE9IDEpXG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXN0YXRzX291dF9vZl9vcmRlcl9wa3RzJiM0MzsmIzQzOztcbiYjNDM7XG4mIzQzO1x0LyogU2hpZnQgaGlzdG9yeSBmb3J3YXJkLCBjb3VudGluZyBhbnkgZ2FwcyBhcyBsb3N0ICovXG4mIzQzO1x0d2hpbGUgKC0tZGVsdGEpIHtcbiYjNDM7XHRcdGlmICghKHJjdnktXHUwMDNlc2VxX2hpc3RvcnkgXHUwMDI2IEJJVChyY3Z5LVx1MDAzZWhpc3RvcnlfbGVuIC0gMSkpKVxuJiM0MztcdFx0XHRyY3Z5LVx1MDAzZXN0YXRzX2xvc3RfcGt0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXNlcV9oaXN0b3J5IFx1MDAzY1x1MDAzYz0gMTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKCEocmN2eS1cdTAwM2VzZXFfaGlzdG9yeSBcdTAwMjYgQklUKHJjdnktXHUwMDNlaGlzdG9yeV9sZW4gLSAxKSkpXG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXN0YXRzX2xvc3RfcGt0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0cmN2eS1cdTAwM2VzZXFfaGlzdG9yeSA9IChyY3Z5LVx1MDAzZXNlcV9oaXN0b3J5IFx1MDAzY1x1MDAzYyAxKSB8IEJJVCgwKTtcbiYjNDM7XHRyY3Z5LVx1MDAzZXJjdnlfc2VxX251bSA9ICh1MzIpc2VxO1xuJiM0MztcdHJlc3RhcnRfdGltZXIgPSB0cnVlO1xuJiM0MztcdHBhc3MgPSB0cnVlO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGlmIChyZXN0YXJ0X3RpbWVyKVxuJiM0MztcdFx0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XG4mIzQzO1x0cmV0dXJuIHBhc3M7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBib29sIGZyZXJfbWF0Y2hfYWxnKHN0cnVjdCBmcmVyX3JjdnkgKnJjdnksIGludCBzZXEsIGJvb2wgaW5kaXZpZHVhbClcbiYjNDM7e1xuJiM0MztcdGlmIChzZXEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdC8qIE5vIFItVEFHOiBNYXRjaCBhbGcgY2Fubm90IGRlZHVwbGljYXRlLCBhbHdheXMgcGFzcy4gKi9cbiYjNDM7XHRcdHJjdnktXHUwMDNlc3RhdHNfdGFnbGVzc19wa3RzJiM0MzsmIzQzOztcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHJjdnktXHUwMDNldGFrZV9hbnkpIHtcbiYjNDM7XHRcdHJjdnktXHUwMDNldGFrZV9hbnkgICAgID0gZmFsc2U7XG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXJjdnlfc2VxX251bSA9ICh1MzIpc2VxO1xuJiM0MztcdFx0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICgodTMyKXNlcSA9PSByY3Z5LVx1MDAzZXJjdnlfc2VxX251bSkge1xuJiM0MztcdFx0LyogRHVwbGljYXRlICovXG4mIzQzO1x0XHRpZiAoaW5kaXZpZHVhbClcbiYjNDM7XHRcdFx0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBOZXcgc2VxdWVuY2UgbnVtYmVyOiBhY2NlcHQgYW5kIHVwZGF0ZSAqL1xuJiM0MztcdGlmICgodTMyKXNlcSAhPSAoKHJjdnktXHUwMDNlcmN2eV9zZXFfbnVtICYjNDM7IDEpICUgcmN2eS1cdTAwM2VzZXFfc3BhY2UpKVxuJiM0MztcdFx0cmN2eS1cdTAwM2VzdGF0c19vdXRfb2Zfb3JkZXJfcGt0cyYjNDM7JiM0Mzs7XG4mIzQzO1x0cmN2eS1cdTAwM2VyY3Z5X3NlcV9udW0gPSAodTMyKXNlcTtcbiYjNDM7XHRmcmVyX3JjdnlfdGltZXJfcmVzdGFydChyY3Z5KTtcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzOy8qIE5ldGxpbmsgcG9saWN5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZnJlcl9wb2xpY3lbVENBX0ZSRVJfTUFYICYjNDM7IDFdID0ge1xuJiM0MztcdFtUQ0FfRlJFUl9QQVJNU10gICAgICAgICAgICA9IE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKHNpemVvZihzdHJ1Y3QgdGNfZnJlcikpLFxuJiM0MztcdFtUQ0FfRlJFUl9GVU5DXSAgICAgICAgICAgICA9IHsgLnR5cGUgPSBOTEFfVTggfSxcbiYjNDM7XHRbVENBX0ZSRVJfVEFHX1RZUEVdICAgICAgICAgPSB7IC50eXBlID0gTkxBX1U4IH0sXG4mIzQzO1x0W1RDQV9GUkVSX1JDVllfSU5ESVZJRFVBTF0gID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG4mIzQzO1x0W1RDQV9GUkVSX1JDVllfQUxHXSAgICAgICAgID0geyAudHlwZSA9IE5MQV9VOCB9LFxuJiM0MztcdFtUQ0FfRlJFUl9SQ1ZZX0hJU1RPUllfTEVOXSA9IE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1U4LCAxLCAzMiksXG4mIzQzO1x0W1RDQV9GUkVSX1JDVllfUkVTRVRfTVNFQ10gID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiYjNDM7XHRbVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUV0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcbiYjNDM7XHRbVENBX0ZSRVJfUkNWWV9UQUdfUE9QXSAgICAgPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuJiM0MzsvKiBBY3Rpb24gaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4mIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuJiM0MztcbiYjNDM7c3RhdGljIGludCB0Y2ZfZnJlcl9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxuJiM0MztcdFx0XHQgc3RydWN0IG5sYXR0ciAqZXN0LCBzdHJ1Y3QgdGNfYWN0aW9uICoqYSxcbiYjNDM7XHRcdFx0IHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1MzIgZmxhZ3MsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGNfYWN0aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGFjdF9mcmVyX29wcy5uZXRfaWQpO1xuJiM0MztcdGJvb2wgYmluZCA9IGZsYWdzIFx1MDAyNiBUQ0FfQUNUX0ZMQUdTX0JJTkQ7XG4mIzQzO1x0c3RydWN0IG5sYXR0ciAqdGJbVENBX0ZSRVJfTUFYICYjNDM7IDFdO1xuJiM0MztcdHN0cnVjdCB0Y2ZfY2hhaW4gKmdvdG9fY2ggPSBOVUxMO1xuJiM0MztcdHN0cnVjdCB0Y2ZfZnJlciAqZjtcbiYjNDM7XHRzdHJ1Y3QgdGNfZnJlciAqcGFybTtcbiYjNDM7XHRib29sIGV4aXN0cyA9IGZhbHNlO1xuJiM0MztcdGludCByZXQgPSAwLCBlcnIsIGluZGV4O1xuJiM0MztcdHU4IGZ1bmMsIHRhZ190eXBlO1xuJiM0MztcbiYjNDM7XHRpZiAoIW5sYSkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7ZnJlcjogYXR0cmlidXRlcyByZXF1aXJlZFwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIFRDQV9GUkVSX01BWCwgbmxhLCBmcmVyX3BvbGljeSwgZXh0YWNrKTtcbiYjNDM7XHRpZiAoZXJyIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0aWYgKCF0YltUQ0FfRlJFUl9QQVJNU10pIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O2ZyZXI6IFRDQV9GUkVSX1BBUk1TIG1pc3NpbmdcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcdGlmICghdGJbVENBX0ZSRVJfRlVOQ10pIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O2ZyZXI6IFRDQV9GUkVSX0ZVTkMgbWlzc2luZ1wmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKCF0YltUQ0FfRlJFUl9UQUdfVFlQRV0pIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O2ZyZXI6IFRDQV9GUkVSX1RBR19UWVBFIG1pc3NpbmdcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmdW5jICAgICA9IG5sYV9nZXRfdTgodGJbVENBX0ZSRVJfRlVOQ10pO1xuJiM0MztcdHRhZ190eXBlID0gbmxhX2dldF91OCh0YltUQ0FfRlJFUl9UQUdfVFlQRV0pO1xuJiM0MztcbiYjNDM7XHRpZiAoZnVuYyAhPSBUQ0FfRlJFUl9GVU5DX1BVU0ggXHUwMDI2XHUwMDI2IGZ1bmMgIT0gVENBX0ZSRVJfRlVOQ19SRUNPVkVSKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtmcmVyOiB1bmtub3duIGZ1bmNcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcdGlmICh0YWdfdHlwZSAhPSBUQ0FfRlJFUl9UQUdfUlRBRykge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7ZnJlcjogb25seSBydGFnIHN1cHBvcnRlZFwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRwYXJtICA9IG5sYV9kYXRhKHRiW1RDQV9GUkVSX1BBUk1TXSk7XG4mIzQzO1x0aW5kZXggPSBwYXJtLVx1MDAzZWluZGV4O1xuJiM0MztcbiYjNDM7XHRlcnIgPSB0Y2ZfaWRyX2NoZWNrX2FsbG9jKHRuLCBcdTAwMjZpbmRleCwgYSwgYmluZCk7XG4mIzQzO1x0aWYgKGVyciBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0ZXhpc3RzID0gZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoZXhpc3RzIFx1MDAyNlx1MDAyNiBiaW5kKVxuJiM0MztcdFx0cmV0dXJuIEFDVF9QX0JPVU5EO1xuJiM0MztcbiYjNDM7XHRpZiAoIWV4aXN0cykge1xuJiM0MztcdFx0cmV0ID0gdGNmX2lkcl9jcmVhdGVfZnJvbV9mbGFncyh0biwgaW5kZXgsIGVzdCwgYSxcbiYjNDM7XHRcdFx0XHRcdFx0XHUwMDI2YWN0X2ZyZXJfb3BzLCBiaW5kLCBmbGFncyk7XG4mIzQzO1x0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdHRjZl9pZHJfY2xlYW51cCh0biwgaW5kZXgpO1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0ID0gQUNUX1BfQ1JFQVRFRDtcbiYjNDM7XHR9IGVsc2UgaWYgKCEoZmxhZ3MgXHUwMDI2IFRDQV9BQ1RfRkxBR1NfUkVQTEFDRSkpIHtcbiYjNDM7XHRcdHRjZl9pZHJfcmVsZWFzZSgqYSwgYmluZCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVFWElTVDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVyciA9IHRjZl9hY3Rpb25fY2hlY2tfY3RybGFjdChwYXJtLVx1MDAzZWFjdGlvbiwgdHAsIFx1MDAyNmdvdG9fY2gsIGV4dGFjayk7XG4mIzQzO1x0aWYgKGVyciBcdTAwM2MgMClcbiYjNDM7XHRcdGdvdG8gcmVsZWFzZV9pZHI7XG4mIzQzO1xuJiM0MztcdGYgPSB0b19mcmVyKCphKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmYtXHUwMDNldGNmX2xvY2spO1xuJiM0MztcdGdvdG9fY2ggPSB0Y2ZfYWN0aW9uX3NldF9jdHJsYWN0KCphLCBwYXJtLVx1MDAzZWFjdGlvbiwgZ290b19jaCk7XG4mIzQzO1x0Zi1cdTAwM2VmdW5jICAgICA9IGZ1bmM7XG4mIzQzO1x0Zi1cdTAwM2V0YWdfdHlwZSA9IHRhZ190eXBlO1xuJiM0MztcdGYtXHUwMDNldGFnX3BvcCAgPSAhIXRiW1RDQV9GUkVSX1JDVllfVEFHX1BPUF07XG4mIzQzO1xuJiM0MztcdGlmIChmdW5jID09IFRDQV9GUkVSX0ZVTkNfUFVTSCkge1xuJiM0MztcdFx0aWYgKHJldCA9PSBBQ1RfUF9DUkVBVEVEKSB7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmYtXHUwMDNlc2VxZ2VuLmxvY2spO1xuJiM0MztcdFx0XHRmLVx1MDAzZXNlcWdlbi5zZXFfc3BhY2UgPSAxIFx1MDAzY1x1MDAzYyAxNjtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdC8qIGdlbl9zZXFfbnVtIHN0YXJ0cyBhdCAwIG9uIGNyZWF0aW9uOyBwcmVzZXJ2ZWQgb24gcmVwbGFjZSAqL1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHR1OCBhbGcgPSB0YltUQ0FfRlJFUl9SQ1ZZX0FMR10gP1xuJiM0MztcdFx0XHQgbmxhX2dldF91OCh0YltUQ0FfRlJFUl9SQ1ZZX0FMR10pIDpcbiYjNDM7XHRcdFx0IFRDQV9GUkVSX1JDVllfVkVDVE9SX0FMRztcbiYjNDM7XHRcdHU4IGhpc3RvcnlfbGVuID0gdGJbVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTl0gP1xuJiM0MztcdFx0XHRcdCBubGFfZ2V0X3U4KHRiW1RDQV9GUkVSX1JDVllfSElTVE9SWV9MRU5dKSA6IDMyO1xuJiM0MztcdFx0dTMyIHJlc2V0X21zZWMgPSB0YltUQ0FfRlJFUl9SQ1ZZX1JFU0VUX01TRUNdID9cbiYjNDM7XHRcdFx0XHQgbmxhX2dldF91MzIodGJbVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDXSkgOiAwO1xuJiM0MztcdFx0Ym9vbCB0YWtlX25vX3NlcSA9ICEhdGJbVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUV07XG4mIzQzO1xuJiM0MztcdFx0aWYgKGFsZyAhPSBUQ0FfRlJFUl9SQ1ZZX1ZFQ1RPUl9BTEcgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgYWxnICE9IFRDQV9GUkVSX1JDVllfTUFUQ0hfQUxHKSB7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmYtXHUwMDNldGNmX2xvY2spO1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtmcmVyOiB1bmtub3duIHJlY292ZXJ5IGFsZ29yaXRobVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGVyciA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdGdvdG8gcmVsZWFzZV9pZHI7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0Zi1cdTAwM2VpbmRpdmlkdWFsID0gISF0YltUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUxdO1xuJiM0MztcbiYjNDM7XHRcdC8qIENhbmNlbCBhbnkgcnVubmluZyByZXNldCB0aW1lciBiZWZvcmUgcmUtaW5pdGlhbGlzaW5nLiAqL1xuJiM0MztcdFx0aWYgKHJldCAhPSBBQ1RfUF9DUkVBVEVEIFx1MDAyNlx1MDAyNiBmLVx1MDAzZXJjdnkucmVzZXRfbXNlYykge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZmLVx1MDAzZXRjZl9sb2NrKTtcbiYjNDM7XHRcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2Zi1cdTAwM2VyY3Z5LmhydGltZXIpO1xuJiM0MztcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2Zi1cdTAwM2V0Y2ZfbG9jayk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0ZnJlcl9yY3Z5X2luaXRfc3RhdGUoXHUwMDI2Zi1cdTAwM2VyY3Z5LCBhbGcsIGhpc3RvcnlfbGVuLFxuJiM0MztcdFx0XHRcdCAgICAgcmVzZXRfbXNlYywgdGFrZV9ub19zZXEpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Zi1cdTAwM2V0Y2ZfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChnb3RvX2NoKVxuJiM0MztcdFx0dGNmX2NoYWluX3B1dF9ieV9hY3QoZ290b19jaCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztyZWxlYXNlX2lkcjpcbiYjNDM7XHR0Y2ZfaWRyX3JlbGVhc2UoKmEsIGJpbmQpO1xuJiM0MztcdHJldHVybiBlcnI7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuJiM0MzsvKiBEYXRhIHBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4mIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuJiM0MztcbiYjNDM7c3RhdGljIGludCB0Y2ZfZnJlcl9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbiYjNDM7XHRcdFx0c3RydWN0IHRjZl9yZXN1bHQgKnJlcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0Y2ZfZnJlciAqZiA9IHRvX2ZyZXIoYSk7XG4mIzQzO1x0aW50IHJldHZhbDtcbiYjNDM7XG4mIzQzO1x0dGNmX2xhc3R1c2VfdXBkYXRlKFx1MDAyNmYtXHUwMDNldGNmX3RtKTtcbiYjNDM7XHR0Y2ZfYWN0aW9uX3VwZGF0ZV9ic3RhdHMoXHUwMDI2Zi1cdTAwM2Vjb21tb24sIHNrYik7XG4mIzQzO1x0cmV0dmFsID0gUkVBRF9PTkNFKGYtXHUwMDNldGNmX2FjdGlvbik7XG4mIzQzO1xuJiM0MztcdGlmIChmLVx1MDAzZWZ1bmMgPT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgZnJlcl9zZXFnZW4gKnNnID0gXHUwMDI2Zi1cdTAwM2VzZXFnZW47XG4mIzQzO1x0XHR1MTYgc2VxO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9jayhcdTAwMjZzZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdHNlcSA9ICh1MTYpc2ctXHUwMDNlZ2VuX3NlcV9udW07XG4mIzQzO1x0XHRpZiAoJiM0MzsmIzQzO3NnLVx1MDAzZWdlbl9zZXFfbnVtIFx1MDAzZT0gc2ctXHUwMDNlc2VxX3NwYWNlKVxuJiM0MztcdFx0XHRzZy1cdTAwM2VnZW5fc2VxX251bSA9IDA7XG4mIzQzO1x0XHRzZy1cdTAwM2VzdGF0c19wa3RzJiM0MzsmIzQzOztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnNnLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRcdGlmIChmcmVyX3J0YWdfcHVzaChza2IsIHNlcSkgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0dGNmX2FjdGlvbl9pbmNfZHJvcF9xc3RhdHMoXHUwMDI2Zi1cdTAwM2Vjb21tb24pO1xuJiM0MztcdFx0XHRyZXR1cm4gVENfQUNUX1NIT1Q7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkgPSBcdTAwMjZmLVx1MDAzZXJjdnk7XG4mIzQzO1x0XHRib29sIHBhc3M7XG4mIzQzO1x0XHRpbnQgc2VxO1xuJiM0MztcbiYjNDM7XHRcdGlmIChmcmVyX3J0YWdfZGVjb2RlKHNrYiwgXHUwMDI2c2VxKSBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHR0Y2ZfYWN0aW9uX2luY19kcm9wX3FzdGF0cyhcdTAwMjZmLVx1MDAzZWNvbW1vbik7XG4mIzQzO1x0XHRcdHJldHVybiBUQ19BQ1RfU0hPVDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRzcGluX2xvY2soXHUwMDI2cmN2eS1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdGlmIChyY3Z5LVx1MDAzZWFsZyA9PSBUQ0FfRlJFUl9SQ1ZZX1ZFQ1RPUl9BTEcpXG4mIzQzO1x0XHRcdHBhc3MgPSBmcmVyX3ZlY3Rvcl9hbGcocmN2eSwgc2VxLCBmLVx1MDAzZWluZGl2aWR1YWwpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRwYXNzID0gZnJlcl9tYXRjaF9hbGcocmN2eSwgc2VxLCBmLVx1MDAzZWluZGl2aWR1YWwpO1xuJiM0MztcbiYjNDM7XHRcdGlmIChwYXNzKSB7XG4mIzQzO1x0XHRcdHJjdnktXHUwMDNlc3RhdHNfcGFzc2VkX3BrdHMmIzQzOyYjNDM7O1xuJiM0MztcdFx0XHRzcGluX3VubG9jayhcdTAwMjZyY3Z5LVx1MDAzZWxvY2spO1xuJiM0MztcdFx0XHRpZiAoZi1cdTAwM2V0YWdfcG9wKVxuJiM0MztcdFx0XHRcdGZyZXJfcnRhZ19wb3Aoc2tiKTtcbiYjNDM7XHRcdFx0cmV0dXJuIHJldHZhbDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRyY3Z5LVx1MDAzZXN0YXRzX2Rpc2NhcmRlZF9wa3RzJiM0MzsmIzQzOztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnJjdnktXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRyZXR1cm4gVENfQUNUX1NIT1Q7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0dmFsO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiYjNDM7LyogRHVtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgdGNmX2ZyZXJfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuJiM0MztcdFx0XHQgaW50IGJpbmQsIGludCByZWYpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBjaGFyICpiID0gc2tiX3RhaWxfcG9pbnRlcihza2IpO1xuJiM0MztcdHN0cnVjdCB0Y2ZfZnJlciAqZiA9IHRvX2ZyZXIoYSk7XG4mIzQzO1x0c3RydWN0IHRjX2ZyZXIgb3B0ID0ge1xuJiM0MztcdFx0LmluZGV4ICAgPSBmLVx1MDAzZXRjZl9pbmRleCxcbiYjNDM7XHRcdC5yZWZjbnQgID0gcmVmY291bnRfcmVhZChcdTAwMjZmLVx1MDAzZXRjZl9yZWZjbnQpIC0gcmVmLFxuJiM0MztcdFx0LmJpbmRjbnQgPSBhdG9taWNfcmVhZChcdTAwMjZmLVx1MDAzZXRjZl9iaW5kY250KSAtIGJpbmQsXG4mIzQzO1x0fTtcbiYjNDM7XHRzdHJ1Y3QgdGNmX3QgdDtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmYtXHUwMDNldGNmX2xvY2spO1xuJiM0MztcdG9wdC5hY3Rpb24gPSBmLVx1MDAzZXRjZl9hY3Rpb247XG4mIzQzO1xuJiM0MztcdGlmIChubGFfcHV0KHNrYiwgVENBX0ZSRVJfUEFSTVMsIHNpemVvZihvcHQpLCBcdTAwMjZvcHQpKVxuJiM0MztcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0aWYgKG5sYV9wdXRfdTgoc2tiLCBUQ0FfRlJFUl9GVU5DLCBmLVx1MDAzZWZ1bmMpKVxuJiM0MztcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0aWYgKG5sYV9wdXRfdTgoc2tiLCBUQ0FfRlJFUl9UQUdfVFlQRSwgZi1cdTAwM2V0YWdfdHlwZSkpXG4mIzQzO1x0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiYjNDM7XHRpZiAoZi1cdTAwM2V0YWdfcG9wIFx1MDAyNlx1MDAyNiBubGFfcHV0X2ZsYWcoc2tiLCBUQ0FfRlJFUl9SQ1ZZX1RBR19QT1ApKVxuJiM0MztcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1xuJiM0MztcdGlmIChmLVx1MDAzZWZ1bmMgPT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7XG4mIzQzO1x0XHRzcGluX2xvY2soXHUwMDI2Zi1cdTAwM2VzZXFnZW4ubG9jayk7XG4mIzQzO1x0XHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19TRVFHRU5fUEtUUyxcbiYjNDM7XHRcdFx0XHQgICAgICBmLVx1MDAzZXNlcWdlbi5zdGF0c19wa3RzLCBUQ0FfRlJFUl9QQUQpKSB7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmYtXHUwMDNlc2VxZ2VuLmxvY2spO1xuJiM0MztcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmYtXHUwMDNlc2VxZ2VuLmxvY2spO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHR1NjQgdGFnbGVzcywgb29vLCByb2d1ZSwgbG9zdCwgcmVzZXRzLCBwYXNzZWQsIGRpc2NhcmRlZDtcbiYjNDM7XHRcdHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkgPSBcdTAwMjZmLVx1MDAzZXJjdnk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnJjdnktXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR0YWdsZXNzICAgID0gcmN2eS1cdTAwM2VzdGF0c190YWdsZXNzX3BrdHM7XG4mIzQzO1x0XHRvb28gICAgICAgID0gcmN2eS1cdTAwM2VzdGF0c19vdXRfb2Zfb3JkZXJfcGt0cztcbiYjNDM7XHRcdHJvZ3VlICAgICAgPSByY3Z5LVx1MDAzZXN0YXRzX3JvZ3VlX3BrdHM7XG4mIzQzO1x0XHRsb3N0ICAgICAgID0gcmN2eS1cdTAwM2VzdGF0c19sb3N0X3BrdHM7XG4mIzQzO1x0XHRyZXNldHMgICAgID0gcmN2eS1cdTAwM2VzdGF0c19yZXNldHM7XG4mIzQzO1x0XHRwYXNzZWQgICAgID0gcmN2eS1cdTAwM2VzdGF0c19wYXNzZWRfcGt0cztcbiYjNDM7XHRcdGRpc2NhcmRlZCAgPSByY3Z5LVx1MDAzZXN0YXRzX2Rpc2NhcmRlZF9wa3RzO1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2cmN2eS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZi1cdTAwM2VpbmRpdmlkdWFsIFx1MDAyNlx1MDAyNiBubGFfcHV0X2ZsYWcoc2tiLCBUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUwpKVxuJiM0MztcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiYjNDM7XHRcdGlmIChubGFfcHV0X3U4KHNrYiwgVENBX0ZSRVJfUkNWWV9BTEcsIHJjdnktXHUwMDNlYWxnKSlcbiYjNDM7XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0XHRpZiAobmxhX3B1dF91OChza2IsIFRDQV9GUkVSX1JDVllfSElTVE9SWV9MRU4sIHJjdnktXHUwMDNlaGlzdG9yeV9sZW4pKVxuJiM0MztcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiYjNDM7XHRcdGlmIChubGFfcHV0X3UzMihza2IsIFRDQV9GUkVSX1JDVllfUkVTRVRfTVNFQywgcmN2eS1cdTAwM2VyZXNldF9tc2VjKSlcbiYjNDM7XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0XHRpZiAocmN2eS1cdTAwM2V0YWtlX25vX3NlcSBcdTAwMjZcdTAwMjYgbmxhX3B1dF9mbGFnKHNrYiwgVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUSkpXG4mIzQzO1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfVEFHTEVTU19QS1RTLFxuJiM0MztcdFx0XHRcdCAgICAgIHRhZ2xlc3MsIFRDQV9GUkVSX1BBRCkpXG4mIzQzO1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfT1VUX09GX09SREVSX1BLVFMsXG4mIzQzO1x0XHRcdFx0ICAgICAgb29vLCBUQ0FfRlJFUl9QQUQpKVxuJiM0MztcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiYjNDM7XHRcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX1JPR1VFX1BLVFMsXG4mIzQzO1x0XHRcdFx0ICAgICAgcm9ndWUsIFRDQV9GUkVSX1BBRCkpXG4mIzQzO1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfTE9TVF9QS1RTLFxuJiM0MztcdFx0XHRcdCAgICAgIGxvc3QsIFRDQV9GUkVSX1BBRCkpXG4mIzQzO1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfUkVTRVRTLFxuJiM0MztcdFx0XHRcdCAgICAgIHJlc2V0cywgVENBX0ZSRVJfUEFEKSlcbiYjNDM7XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0XHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19QQVNTRURfUEtUUyxcbiYjNDM7XHRcdFx0XHQgICAgICBwYXNzZWQsIFRDQV9GUkVSX1BBRCkpXG4mIzQzO1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuJiM0MztcdFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfRElTQ0FSREVEX1BLVFMsXG4mIzQzO1x0XHRcdFx0ICAgICAgZGlzY2FyZGVkLCBUQ0FfRlJFUl9QQUQpKVxuJiM0MztcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHRjZl90bV9kdW1wKFx1MDAyNnQsIFx1MDAyNmYtXHUwMDNldGNmX3RtKTtcbiYjNDM7XHRpZiAobmxhX3B1dF82NGJpdChza2IsIFRDQV9GUkVSX1RNLCBzaXplb2YodCksIFx1MDAyNnQsIFRDQV9GUkVSX1BBRCkpXG4mIzQzO1x0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Zi1cdTAwM2V0Y2ZfbG9jayk7XG4mIzQzO1x0cmV0dXJuIHNrYi1cdTAwM2VsZW47XG4mIzQzO1xuJiM0MztubGFfcHV0X2ZhaWx1cmU6XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Zi1cdTAwM2V0Y2ZfbG9jayk7XG4mIzQzO1x0bmxtc2dfdHJpbShza2IsIGIpO1xuJiM0MztcdHJldHVybiAtMTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzOy8qIENsZWFudXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0Y2ZfZnJlcl9jbGVhbnVwKHN0cnVjdCB0Y19hY3Rpb24gKmEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGNmX2ZyZXIgKmYgPSB0b19mcmVyKGEpO1xuJiM0MztcbiYjNDM7XHRpZiAoZi1cdTAwM2VmdW5jID09IFRDQV9GUkVSX0ZVTkNfUkVDT1ZFUilcbiYjNDM7XHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNmYtXHUwMDNlcmN2eS5ocnRpbWVyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzOy8qIFdhbGtlciAvIHNlYXJjaCAvIHN0YXRzIC8gZmlsbC1zaXplIC8gb2ZmbG9hZCAgICAgICAgICAgICAgICAgICAgICAqL1xuJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgdGNmX2ZyZXJfd2Fsa2VyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLCBpbnQgdHlwZSxcbiYjNDM7XHRcdFx0ICAgY29uc3Qgc3RydWN0IHRjX2FjdGlvbl9vcHMgKm9wcyxcbiYjNDM7XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRjX2FjdGlvbl9uZXQgKnRuID0gbmV0X2dlbmVyaWMobmV0LCBhY3RfZnJlcl9vcHMubmV0X2lkKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHRjZl9nZW5lcmljX3dhbGtlcih0biwgc2tiLCBjYiwgdHlwZSwgb3BzLCBleHRhY2spO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0Y2ZfZnJlcl9zdGF0c191cGRhdGUoc3RydWN0IHRjX2FjdGlvbiAqYSwgdTY0IGJ5dGVzLCB1NjQgcGFja2V0cyxcbiYjNDM7XHRcdFx0XHQgIHU2NCBkcm9wcywgdTY0IGxhc3R1c2UsIGJvb2wgaHcpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGNmX2ZyZXIgKmYgPSB0b19mcmVyKGEpO1xuJiM0MztcdHN0cnVjdCB0Y2ZfdCAqdG0gPSBcdTAwMjZmLVx1MDAzZXRjZl90bTtcbiYjNDM7XG4mIzQzO1x0dGNmX2FjdGlvbl91cGRhdGVfc3RhdHMoYSwgYnl0ZXMsIHBhY2tldHMsIGRyb3BzLCBodyk7XG4mIzQzO1x0dG0tXHUwMDNlbGFzdHVzZSA9IG1heF90KHU2NCwgdG0tXHUwMDNlbGFzdHVzZSwgbGFzdHVzZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzaXplX3QgdGNmX2ZyZXJfZ2V0X2ZpbGxfc2l6ZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphY3QpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB0Y19mcmVyKSkgLyogVENBX0ZSRVJfUEFSTVMgKi9cbiYjNDM7XHRcdCYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIFRDQV9GUkVSX0ZVTkMgKi9cbiYjNDM7XHRcdCYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIFRDQV9GUkVSX1RBR19UWVBFICovXG4mIzQzO1x0XHQmIzQzOyBubGFfdG90YWxfc2l6ZSgwKSAvKiBUQ0FfRlJFUl9SQ1ZZX1RBR19QT1AgKGZsYWcpICovXG4mIzQzO1x0XHQmIzQzOyBubGFfdG90YWxfc2l6ZSgwKSAvKiBUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUwgKGZsYWcpICovXG4mIzQzO1x0XHQmIzQzOyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBUQ0FfRlJFUl9SQ1ZZX0FMRyAqL1xuJiM0MztcdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHU4KSkgLyogVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTiAqL1xuJiM0MztcdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpIC8qIFRDQV9GUkVSX1JDVllfUkVTRVRfTVNFQyAqL1xuJiM0MztcdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoMCkgLyogVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUSAoZmxhZykgKi9cbiYjNDM7XHRcdCYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19UQUdMRVNTX1BLVFMgKi9cbiYjNDM7XHRcdCYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUyAqL1xuJiM0MztcdFx0JiM0MzsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX1JPR1VFX1BLVFMgKi9cbiYjNDM7XHRcdCYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19MT1NUX1BLVFMgKi9cbiYjNDM7XHRcdCYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19SRVNFVFMgKi9cbiYjNDM7XHRcdCYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19QQVNTRURfUEtUUyAqL1xuJiM0MztcdFx0JiM0MzsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX0RJU0NBUkRFRF9QS1RTICovXG4mIzQzO1x0XHQmIzQzOyBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2Yoc3RydWN0IHRjZl90KSk7IC8qIFRDQV9GUkVSX1RNICovXG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgdGNmX2ZyZXJfb2ZmbG9hZF9hY3Rfc2V0dXAoc3RydWN0IHRjX2FjdGlvbiAqYWN0LCB2b2lkICplbnRyeV9kYXRhLFxuJiM0MztcdFx0XHRcdCAgICAgIHUzMiAqaW5kZXhfaW5jLCBib29sIGJpbmQsXG4mIzQzO1x0XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGJpbmQpIHtcbiYjNDM7XHRcdHN0cnVjdCBmbG93X2FjdGlvbl9lbnRyeSAqZW50cnkgPSBlbnRyeV9kYXRhO1xuJiM0MztcdFx0c3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhY3QpO1xuJiM0MztcbiYjNDM7XHRcdGVudHJ5LVx1MDAzZWlkICAgICAgICAgICAgPSBGTE9XX0FDVElPTl9GUkVSO1xuJiM0MztcdFx0ZW50cnktXHUwMDNlZnJlci5mdW5jICAgICA9IGYtXHUwMDNlZnVuYztcbiYjNDM7XHRcdGVudHJ5LVx1MDAzZWZyZXIudGFnX3R5cGUgPSBmLVx1MDAzZXRhZ190eXBlO1xuJiM0MztcdFx0ZW50cnktXHUwMDNlZnJlci50YWdfcG9wICA9IGYtXHUwMDNldGFnX3BvcDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZi1cdTAwM2VmdW5jICE9IFRDQV9GUkVSX0ZVTkNfUFVTSCkge1xuJiM0MztcdFx0XHRlbnRyeS1cdTAwM2VmcmVyLmluZGl2aWR1YWwgICAgICAgPSBmLVx1MDAzZWluZGl2aWR1YWw7XG4mIzQzO1x0XHRcdGVudHJ5LVx1MDAzZWZyZXIucmN2eV9hbGcgICAgICAgICA9IGYtXHUwMDNlcmN2eS5hbGc7XG4mIzQzO1x0XHRcdGVudHJ5LVx1MDAzZWZyZXIucmN2eV9oaXN0b3J5X2xlbiA9IGYtXHUwMDNlcmN2eS5oaXN0b3J5X2xlbjtcbiYjNDM7XHRcdFx0ZW50cnktXHUwMDNlZnJlci5yY3Z5X3Jlc2V0X21zZWMgID0gZi1cdTAwM2VyY3Z5LnJlc2V0X21zZWM7XG4mIzQzO1x0XHRcdGVudHJ5LVx1MDAzZWZyZXIudGFrZV9ub19zZXEgICAgICA9IGYtXHUwMDNlcmN2eS50YWtlX25vX3NlcTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdCppbmRleF9pbmMgPSAxO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRzdHJ1Y3QgZmxvd19vZmZsb2FkX2FjdGlvbiAqZmxfYWN0aW9uID0gZW50cnlfZGF0YTtcbiYjNDM7XG4mIzQzO1x0XHRmbF9hY3Rpb24tXHUwMDNlaWQgPSBGTE9XX0FDVElPTl9GUkVSO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzOy8qIE1vZHVsZSBnbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X2ZyZXJfb3BzID0ge1xuJiM0MztcdC5raW5kXHRcdCAgICA9IFwmIzM0O2ZyZXJcJiMzNDssXG4mIzQzO1x0LmlkXHRcdCAgICA9IFRDQV9JRF9GUkVSLFxuJiM0MztcdC5vd25lclx0XHQgICAgPSBUSElTX01PRFVMRSxcbiYjNDM7XHQuYWN0XHRcdCAgICA9IHRjZl9mcmVyX2FjdCxcbiYjNDM7XHQuaW5pdFx0XHQgICAgPSB0Y2ZfZnJlcl9pbml0LFxuJiM0MztcdC5jbGVhbnVwXHQgICAgPSB0Y2ZfZnJlcl9jbGVhbnVwLFxuJiM0MztcdC5kdW1wXHRcdCAgICA9IHRjZl9mcmVyX2R1bXAsXG4mIzQzO1x0LndhbGtcdFx0ICAgID0gdGNmX2ZyZXJfd2Fsa2VyLFxuJiM0MztcdC5zdGF0c191cGRhdGVcdCAgICA9IHRjZl9mcmVyX3N0YXRzX3VwZGF0ZSxcbiYjNDM7XHQuZ2V0X2ZpbGxfc2l6ZVx0ICAgID0gdGNmX2ZyZXJfZ2V0X2ZpbGxfc2l6ZSxcbiYjNDM7XHQub2ZmbG9hZF9hY3Rfc2V0dXAgID0gdGNmX2ZyZXJfb2ZmbG9hZF9hY3Rfc2V0dXAsXG4mIzQzO1x0LnNpemVcdFx0ICAgID0gc2l6ZW9mKHN0cnVjdCB0Y2ZfZnJlciksXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgX19uZXRfaW5pdCBpbnQgZnJlcl9pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGNfYWN0aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGFjdF9mcmVyX29wcy5uZXRfaWQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdGNfYWN0aW9uX25ldF9pbml0KG5ldCwgdG4sIFx1MDAyNmFjdF9mcmVyX29wcyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZnJlcl9leGl0X25ldChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfbGlzdClcbiYjNDM7e1xuJiM0MztcdHRjX2FjdGlvbl9uZXRfZXhpdChuZXRfbGlzdCwgYWN0X2ZyZXJfb3BzLm5ldF9pZCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZnJlcl9uZXRfb3BzID0ge1xuJiM0MztcdC5pbml0ICAgICAgID0gZnJlcl9pbml0X25ldCxcbiYjNDM7XHQuZXhpdF9iYXRjaCA9IGZyZXJfZXhpdF9uZXQsXG4mIzQzO1x0LmlkICAgICAgICAgPSBcdTAwMjZhY3RfZnJlcl9vcHMubmV0X2lkLFxuJiM0MztcdC5zaXplICAgICAgID0gc2l6ZW9mKHN0cnVjdCB0Y19hY3Rpb25fbmV0KSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgX19pbml0IGZyZXJfaW5pdF9tb2R1bGUodm9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiB0Y2ZfcmVnaXN0ZXJfYWN0aW9uKFx1MDAyNmFjdF9mcmVyX29wcywgXHUwMDI2ZnJlcl9uZXRfb3BzKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgX19leGl0IGZyZXJfY2xlYW51cF9tb2R1bGUodm9pZClcbiYjNDM7e1xuJiM0MztcdHRjZl91bnJlZ2lzdGVyX2FjdGlvbihcdTAwMjZhY3RfZnJlcl9vcHMsIFx1MDAyNmZyZXJfbmV0X29wcyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO21vZHVsZV9pbml0KGZyZXJfaW5pdF9tb2R1bGUpO1xuJiM0Mzttb2R1bGVfZXhpdChmcmVyX2NsZWFudXBfbW9kdWxlKTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0lFRUUgODAyLjFDQiBGUkVSIHRjIGFjdGlvblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5pbmRleCA2YTE5MGE1MjVhMzkxNy4uNjdiODk2NjExZjA4NjUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuQEAgLTM4LDYgJiM0MzszOCw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcbiBcdGZpYl9ydWxlX3Rlc3RzLnNoIFxcXG4gXHRmaWJfdGVzdHMuc2ggXFxcbiBcdGZpbl9hY2tfbGF0LnNoIFxcXG4mIzQzO1x0ZnJlcl90ZXN0LnNoIFxcXG4gXHRmcV9iYW5kX3BrdGxpbWl0LnNoIFxcXG4gXHRncmVfZ3NvLnNoIFxcXG4gXHRncmVfaXB2Nl9sbGFkZHIuc2ggXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZnJlcl90ZXN0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZyZXJfdGVzdC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lY2Q4ODk1MmY0OTU4MVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZyZXJfdGVzdC5zaFxuQEAgLTAsMCAmIzQzOzEsMTAxMyBAQFxuJiM0MzsjIS9iaW4vYmFzaFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyMgQ29weXJpZ2h0IDIwMjYgTlhQXG4mIzQzOyNcbiYjNDM7IyBmcmVyX3Rlc3Quc2ggLSBJRUVFIDgwMi4xQ0IgRlJFUiB0YyBhY3Rpb24ga3NlbGZ0ZXN0XG4mIzQzOyNcbiYjNDM7IyBUb3BvbG9neSBmb3IgdGVzdHMgMS00OlxuJiM0MzsjXG4mIzQzOyMgICBuc190YWxrZXIgIGJvbmQwICh2ZXRoX2EwICYjNDM7IHZldGhfYjApICBcdTAwM2MtLS1cdTAwM2UgIGJvbmQxICh2ZXRoX2ExICYjNDM7IHZldGhfYjEpICBuc19saXN0ZW5lclxuJiM0MzsjXG4mIzQzOyMgICBJUF9TUkMgYXNzaWduZWQgdG8gYm9uZDA7ICBJUF9EU1QgYXNzaWduZWQgdG8gYm9uZDFcbiYjNDM7I1xuJiM0MzsjICAgYm9uZCBtb2RlOiBiYWxhbmNlLXJyIChyb3VuZC1yb2JpbiksIHNvIGZyYW1lcyBhcmUgZGlzdHJpYnV0ZWQgYWNyb3NzXG4mIzQzOyMgICAgICAgICAgICAgIGJvdGggc2xhdmVzLiAgRlJFUiBwdXNoIGlzIGNvbmZpZ3VyZWQgb24gYm90aCB2ZXRoX2EwIGFuZFxuJiM0MzsjICAgICAgICAgICAgICB2ZXRoX2IwIGVncmVzcyB3aXRoIGNyb3NzLW1pcnJvciBzbyBldmVyeSBmcmFtZSBzZW50IGJ5IGVpdGhlclxuJiM0MzsjICAgICAgICAgICAgICBzbGF2ZSBjYXJyaWVzIGFuIFItVEFHIGFuZCBhIG1pcnJvcmVkIGNvcHkgcmVhY2hlcyB0aGUgcGVlci5cbiYjNDM7IyAgIEZSRVIgcmVjb3ZlcjogdmV0aF9hMS92ZXRoX2IxIGluZ3Jlc3MsIHNoYXJlZCBvciBpbmRpdmlkdWFsIHJlY292ZXIgcGVyIHRlc3RcbiYjNDM7I1xuJiM0MzsjICAgUGluZyBydW5zIGZyb20gYm9uZDAgdG8gYm9uZDE7IHRjcGR1bXAgY2FwdHVyZXMgb24gYm9uZDEgKG9yIG9uIGluZGl2aWR1YWxcbiYjNDM7IyAgIHNsYXZlIGludGVyZmFjZXMgZm9yIHRlc3RzIHdoZXJlIGJvdGggY29waWVzIG11c3QgYmUgb2JzZXJ2YWJsZSkuXG4mIzQzOyNcbiYjNDM7IyBUZXN0IDU6IHNpbXBsZSBwb2ludC10by1wb2ludCwgc2VsZi1jb250YWluZWQgdG9wb2xvZ3kgKG5vIGJvbmQpLlxuJiM0MzsjIFRlc3QgNjogcmVsYXkgc3lzdGVtLCBzZWxmLWNvbnRhaW5lZCB0b3BvbG9neS5cbiYjNDM7I1xuJiM0MzsjIEFsbCBuYW1lc3BhY2VzLCB2ZXRoIHBhaXJzLCBib25kIGludGVyZmFjZXMsIHRjIHJ1bGVzIGFuZCBhZGRyZXNzZXMgYXJlXG4mIzQzOyMgY3JlYXRlZCBhbmQgZGVzdHJveWVkIHdpdGhpbiB0aGlzIHNjcmlwdC4gIEV4dGVybmFsIGRlcGVuZGVuY2llczpcbiYjNDM7IyAgIC0ga2VybmVsIHdpdGggQ09ORklHX05FVF9BQ1RfRlJFUiBhbmQgQ09ORklHX0JPTkRJTkdcbiYjNDM7IyAgIC0gaXByb3V0ZTIgdGMgd2l0aCBmcmVyIGFjdGlvbiBzdXBwb3J0XG4mIzQzOyMgICAtIHRjcGR1bXAsIHBpbmdcbiYjNDM7IyAgIC0gcm9vdCBwcml2aWxlZ2VzXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBrc2VsZnRlc3QgbGlicmFyeTogVEFQIG91dHB1dCAmIzQzOyBleGl0LWNvZGUgY29uc3RhbnRzXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0Mztrc2Z0X2xpYj1cJiMzNDske0tTRlRfTElCOi0kKGRpcm5hbWUgXCYjMzQ7JDBcJiMzNDspLy4uL2tzZWxmdGVzdC9saWIuc2h9XCYjMzQ7XG4mIzQzO2lmIFsgLWYgXCYjMzQ7JGtzZnRfbGliXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHQjIHNoZWxsY2hlY2sgc291cmNlPS9kZXYvbnVsbFxuJiM0MztcdC4gXCYjMzQ7JGtzZnRfbGliXCYjMzQ7XG4mIzQzO2Vsc2VcbiYjNDM7XHQjIE1pbmltYWwgZmFsbGJhY2sgd2hlbiBydW4gb3V0c2lkZSB0aGUga3NlbGZ0ZXN0IHRyZWVcbiYjNDM7XHRLU0ZUX1BBU1M9MFxuJiM0MztcdEtTRlRfRkFJTD0xXG4mIzQzO1x0S1NGVF9TS0lQPTRcbiYjNDM7XHRfa3NmdF9jb3VudD0wXG4mIzQzO1x0X2tzZnRfcGFzcz0wXG4mIzQzO1x0X2tzZnRfZmFpbD0wXG4mIzQzO1x0X2tzZnRfc2tpcD0wXG4mIzQzO1xuJiM0MztcdGtzZnRfcHJpbnRfaGVhZGVyKCkgeyBlY2hvIFwmIzM0O1RBUCB2ZXJzaW9uIDEzXCYjMzQ7OyB9XG4mIzQzO1x0a3NmdF9zZXRfcGxhbigpICAgICB7IGVjaG8gXCYjMzQ7MS4uJDFcJiMzNDs7IH1cbiYjNDM7XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoKSB7XG4mIzQzO1x0XHRfa3NmdF9jb3VudD0kKChfa3NmdF9jb3VudCAmIzQzOyAxKSk7IF9rc2Z0X3Bhc3M9JCgoX2tzZnRfcGFzcyAmIzQzOyAxKSlcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7b2sgJF9rc2Z0X2NvdW50IC0gJCpcJiMzNDtcbiYjNDM7XHR9XG4mIzQzO1x0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKCkge1xuJiM0MztcdFx0X2tzZnRfY291bnQ9JCgoX2tzZnRfY291bnQgJiM0MzsgMSkpOyBfa3NmdF9mYWlsPSQoKF9rc2Z0X2ZhaWwgJiM0MzsgMSkpXG4mIzQzO1x0XHRlY2hvIFwmIzM0O25vdCBvayAkX2tzZnRfY291bnQgLSAkKlwmIzM0O1xuJiM0MztcdH1cbiYjNDM7XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoKSB7XG4mIzQzO1x0XHRfa3NmdF9jb3VudD0kKChfa3NmdF9jb3VudCAmIzQzOyAxKSk7IF9rc2Z0X3NraXA9JCgoX2tzZnRfc2tpcCAmIzQzOyAxKSlcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7b2sgJF9rc2Z0X2NvdW50IC0gJCogIyBTS0lQXCYjMzQ7XG4mIzQzO1x0fVxuJiM0MztcdGtzZnRfcHJpbnRfY250cygpIHtcbiYjNDM7XHRcdGVjaG8gXCYjMzQ7IyBUb3RhbHM6IHBhc3M9JF9rc2Z0X3Bhc3MgZmFpbD0kX2tzZnRfZmFpbCBza2lwPSRfa3NmdF9za2lwXCYjMzQ7XG4mIzQzO1x0fVxuJiM0MztcdGtzZnRfZXhpdF9wYXNzKCkgICAgIHsgZXhpdCAkS1NGVF9QQVNTOyB9XG4mIzQzO1x0a3NmdF9leGl0X2ZhaWwoKSAgICAgeyBleGl0ICRLU0ZUX0ZBSUw7IH1cbiYjNDM7XHRrc2Z0X2V4aXRfZmFpbF9tc2coKSB7IGVjaG8gXCYjMzQ7IyBGQVRBTDogJCpcJiMzNDsgXHUwMDNlXHUwMDI2MjsgZXhpdCAkS1NGVF9GQUlMOyB9XG4mIzQzO2ZpXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBDb25maWd1cmF0aW9uIChvdmVycmlkZSB2aWEgZW52aXJvbm1lbnQpXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztUQz1cJiMzNDske1RDOi10Y31cJiMzNDtcbiYjNDM7UElORz1cJiMzNDske1BJTkc6LXBpbmd9XCYjMzQ7XG4mIzQzO1RDUERVTVA9XCYjMzQ7JHtUQ1BEVU1QOi10Y3BkdW1wfVwmIzM0O1xuJiM0MztQSU5HX0NPVU5UPVwmIzM0OyR7UElOR19DT1VOVDotNX1cJiMzNDtcbiYjNDM7UElOR19USU1FT1VUPVwmIzM0OyR7UElOR19USU1FT1VUOi0yfVwmIzM0O1xuJiM0MztTS0lQX01PRFBST0JFPVwmIzM0OyR7U0tJUF9NT0RQUk9CRTotMH1cJiMzNDtcbiYjNDM7XG4mIzQzOyMgQm9uZCB0b3BvbG9neSBpbnRlcmZhY2VzICh0ZXN0cyAxLTQpXG4mIzQzO3JlYWRvbmx5IFZFVEhfQTA9XCYjMzQ7ZnJlcl9hMFwmIzM0O1xuJiM0MztyZWFkb25seSBWRVRIX0ExPVwmIzM0O2ZyZXJfYTFcJiMzNDtcbiYjNDM7cmVhZG9ubHkgVkVUSF9CMD1cJiMzNDtmcmVyX2IwXCYjMzQ7XG4mIzQzO3JlYWRvbmx5IFZFVEhfQjE9XCYjMzQ7ZnJlcl9iMVwmIzM0O1xuJiM0MztyZWFkb25seSBCT05EMD1cJiMzNDtmcmVyX2JvbmQwXCYjMzQ7XG4mIzQzO3JlYWRvbmx5IEJPTkQxPVwmIzM0O2ZyZXJfYm9uZDFcJiMzNDtcbiYjNDM7XG4mIzQzO3JlYWRvbmx5IE5TX1RBTEtFUj1cJiMzNDtmcmVyX25zX3RhbGtlclwmIzM0O1xuJiM0MztyZWFkb25seSBOU19MSVNURU5FUj1cJiMzNDtmcmVyX25zX2xpc3RlbmVyXCYjMzQ7XG4mIzQzO1xuJiM0MztyZWFkb25seSBJUF9TUkM9XCYjMzQ7MTAuMC4wLjFcJiMzNDtcbiYjNDM7cmVhZG9ubHkgSVBfRFNUPVwmIzM0OzEwLjAuMC4yXCYjMzQ7XG4mIzQzO1xuJiM0MzsjIFBvaW50LXRvLXBvaW50IHRvcG9sb2d5IGludGVyZmFjZXMgKHRlc3QgNSlcbiYjNDM7cmVhZG9ubHkgUDJQX05TX1NSQz1cJiMzNDtmcmVyX3AycF9zcmNcJiMzNDtcbiYjNDM7cmVhZG9ubHkgUDJQX05TX0RTVD1cJiMzNDtmcmVyX3AycF9kc3RcJiMzNDtcbiYjNDM7cmVhZG9ubHkgUDJQX1ZFVEhfQTA9XCYjMzQ7ZnJlcl9wMnBfYTBcJiMzNDtcbiYjNDM7cmVhZG9ubHkgUDJQX1ZFVEhfQTE9XCYjMzQ7ZnJlcl9wMnBfYTFcJiMzNDtcbiYjNDM7cmVhZG9ubHkgSVBfUDJQX1NSQz1cJiMzNDsxMC4wLjEuMVwmIzM0O1xuJiM0MztyZWFkb25seSBJUF9QMlBfRFNUPVwmIzM0OzEwLjAuMS4yXCYjMzQ7XG4mIzQzO1xuJiM0MzsjIFJlbGF5IHRvcG9sb2d5IGludGVyZmFjZXMgKHRlc3QgNilcbiYjNDM7I1xuJiM0MzsjICAgbnNfdGFsa2VyICh0YWxrZXJfZXRoLjEwMCkgLS0gdGFsa2VyX2V0aC9icjBfdXBsaW5rIC0tIGJyaWRnZTAgKGJyX3IwKVxuJiM0MzsjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0gYnIwX3N3cDAvYnIxX3N3cDAgLS1cXFxuJiM0MzsjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXC0tIGJyMF9zd3AxL2JyMV9zd3AxIC0tJiM0MzstLVxcXG4mIzQzOyNcdFx0YnJpZGdlMSAoYnJfcjEpIC0tIGJyMV9kb3dubGluay9saXN0ZW5lcl9ldGggLS0gbnNfbGlzdGVuZXJcbiYjNDM7I1xuJiM0MzsjIGJyaWRnZTAgYWN0cyBhcyBzZXF1ZW5jZSBnZW5lcmF0b3IgKGZyZXIgcHVzaCAmIzQzOyByZXBsaWNhdGUgdG8gYm90aCBwYXRocykuXG4mIzQzOyMgYnJpZGdlMSBhY3RzIGFzIGVsaW1pbmF0b3IgKGZyZXIgcmVjb3Zlciwgc2hhcmVkLCB0YWctcG9wKS5cbiYjNDM7cmVhZG9ubHkgUl9OU19UQUxLRVI9XCYjMzQ7ZnJlcl9yX3RhbGtlclwmIzM0O1xuJiM0MztyZWFkb25seSBSX05TX0JSSURHRTA9XCYjMzQ7ZnJlcl9yX2JyaWRnZTBcJiMzNDtcbiYjNDM7cmVhZG9ubHkgUl9OU19CUklER0UxPVwmIzM0O2ZyZXJfcl9icmlkZ2UxXCYjMzQ7XG4mIzQzO3JlYWRvbmx5IFJfTlNfTElTVEVORVI9XCYjMzQ7ZnJlcl9yX2xpc3RlbmVyXCYjMzQ7XG4mIzQzO3JlYWRvbmx5IFJfVEFMS0VSX0VUSD1cJiMzNDtyX3Rsa19ldGhcJiMzNDsgICAgICAgIyB0YWxrZXItc2lkZSBwaHlzaWNhbCBwb3J0XG4mIzQzO3JlYWRvbmx5IFJfQlIwX1VQTElOSz1cJiMzNDtyX2JyMF91cGxpbmtcJiMzNDsgICAgIyBicmlkZ2UwIHVwbGluayBmYWNpbmcgdGFsa2VyXG4mIzQzO3JlYWRvbmx5IFJfQlIwX1NXUDA9XCYjMzQ7cl9icjBfc3dwMFwmIzM0OyAgICAgICAgIyBicmlkZ2UwIHJlZHVuZGFudCBwYXRoIHBvcnQgMFxuJiM0MztyZWFkb25seSBSX0JSMF9TV1AxPVwmIzM0O3JfYnIwX3N3cDFcJiMzNDsgICAgICAgICMgYnJpZGdlMCByZWR1bmRhbnQgcGF0aCBwb3J0IDFcbiYjNDM7cmVhZG9ubHkgUl9CUjFfU1dQMD1cJiMzNDtyX2JyMV9zd3AwXCYjMzQ7ICAgICAgICAjIGJyaWRnZTEgcmVkdW5kYW50IHBhdGggcG9ydCAwXG4mIzQzO3JlYWRvbmx5IFJfQlIxX1NXUDE9XCYjMzQ7cl9icjFfc3dwMVwmIzM0OyAgICAgICAgIyBicmlkZ2UxIHJlZHVuZGFudCBwYXRoIHBvcnQgMVxuJiM0MztyZWFkb25seSBSX0JSMV9ET1dOTElOSz1cJiMzNDtyX2JyMV9kd25sbmtcJiMzNDsgICMgYnJpZGdlMSBkb3dubGluayBmYWNpbmcgbGlzdGVuZXJcbiYjNDM7cmVhZG9ubHkgUl9MSVNURU5FUl9FVEg9XCYjMzQ7cl9sc3RfZXRoXCYjMzQ7ICAgICAjIGxpc3RlbmVyLXNpZGUgcGh5c2ljYWwgcG9ydFxuJiM0MztyZWFkb25seSBSX0JSMD1cJiMzNDticl9yMFwmIzM0O1xuJiM0MztyZWFkb25seSBSX0JSMT1cJiMzNDticl9yMVwmIzM0O1xuJiM0MztyZWFkb25seSBSX1ZMQU49MTAwXG4mIzQzO3JlYWRvbmx5IFJfSVBfVEFMS0VSPVwmIzM0OzEwLjEuMC4xXCYjMzQ7XG4mIzQzO3JlYWRvbmx5IFJfSVBfTElTVEVORVI9XCYjMzQ7MTAuMS4wLjJcJiMzNDtcbiYjNDM7XG4mIzQzOyMgRlJFUiBhY3Rpb24gaW5kZXggY29uc3RhbnRzXG4mIzQzO3JlYWRvbmx5IElEWF9QVVNIPTFcbiYjNDM7cmVhZG9ubHkgSURYX1NIQVJFRF9SQ1ZZPTEwXG4mIzQzO3JlYWRvbmx5IElEWF9JTkRWX1JDVllfQT0yMFxuJiM0MztyZWFkb25seSBJRFhfSU5EVl9SQ1ZZX0I9MjFcbiYjNDM7cmVhZG9ubHkgSURYX05PX1BPUD0zMFxuJiM0MztyZWFkb25seSBJRFhfUDJQX1JDVlk9NDBcbiYjNDM7cmVhZG9ubHkgSURYX1JFTEFZX1BVU0g9NTBcbiYjNDM7cmVhZG9ubHkgSURYX1JFTEFZX1JDVlk9NjBcbiYjNDM7XG4mIzQzO3JlYWRvbmx5IE5VTV9URVNUUz02XG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBQcmVyZXF1aXNpdGUgY2hlY2tcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO2NoZWNrX3ByZXJlcXVpc2l0ZXMoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgbWlzc2luZz0wXG4mIzQzO1xuJiM0MztcdFsgXCYjMzQ7JChpZCAtdSlcJiMzNDsgLWVxIDAgXSB8fCB7IGVjaG8gXCYjMzQ7IyBNdXN0IGJlIHJ1biBhcyByb290XCYjMzQ7IFx1MDAzZVx1MDAyNjI7IG1pc3Npbmc9MTsgfVxuJiM0MztcbiYjNDM7XHRmb3IgY21kIGluIGlwIFwmIzM0OyRUQ1wmIzM0OyBcJiMzNDskVENQRFVNUFwmIzM0OyBcJiMzNDskUElOR1wmIzM0OzsgZG9cbiYjNDM7XHRcdGNvbW1hbmQgLXYgXCYjMzQ7JGNtZFwmIzM0OyBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgfHwge1xuJiM0MztcdFx0XHRlY2hvIFwmIzM0OyMgTWlzc2luZyBjb21tYW5kOiAkY21kXCYjMzQ7IFx1MDAzZVx1MDAyNjJcbiYjNDM7XHRcdFx0bWlzc2luZz0xXG4mIzQzO1x0XHR9XG4mIzQzO1x0ZG9uZVxuJiM0MztcbiYjNDM7XHRpZiBbIFwmIzM0OyRtaXNzaW5nXCYjMzQ7IC1uZSAwIF07IHRoZW5cbiYjNDM7XHRcdGtzZnRfc2V0X3BsYW4gXCYjMzQ7JE5VTV9URVNUU1wmIzM0O1xuJiM0MztcdFx0Zm9yIGkgaW4gJChzZXEgMSBcJiMzNDskTlVNX1RFU1RTXCYjMzQ7KTsgZG9cbiYjNDM7XHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwIFwmIzM0O3ByZXJlcXVpc2l0ZXMgbm90IG1ldCAodGVzdCAkaSlcJiMzNDtcbiYjNDM7XHRcdGRvbmVcbiYjNDM7XHRcdGtzZnRfcHJpbnRfY250c1xuJiM0MztcdFx0ZXhpdCBcJiMzNDskS1NGVF9TS0lQXCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7bG9hZF9tb2R1bGUoKVxuJiM0Mzt7XG4mIzQzO1x0WyBcJiMzNDskU0tJUF9NT0RQUk9CRVwmIzM0OyA9IFwmIzM0OzFcJiMzNDsgXSBcdTAwMjZcdTAwMjYgcmV0dXJuXG4mIzQzO1x0aWYgISBtb2Rwcm9iZSBhY3RfZnJlciAyXHUwMDNlL2Rldi9udWxsOyB0aGVuXG4mIzQzO1x0XHRlY2hvIFwmIzM0OyMgbW9kcHJvYmUgYWN0X2ZyZXIgZmFpbGVkIC0gbWF5IGJlIGJ1aWx0LWluIG9yIHVuYXZhaWxhYmxlXCYjMzQ7IFx1MDAzZVx1MDAyNjJcbiYjNDM7XHRmaVxuJiM0MztcdGlmICEgbW9kcHJvYmUgYm9uZGluZyAyXHUwMDNlL2Rldi9udWxsOyB0aGVuXG4mIzQzO1x0XHRlY2hvIFwmIzM0OyMgbW9kcHJvYmUgYm9uZGluZyBmYWlsZWQgLSBtYXkgYmUgYnVpbHQtaW4gb3IgdW5hdmFpbGFibGVcJiMzNDsgXHUwMDNlXHUwMDI2MlxuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoZWNrX2ZyZXJfYWN0aW9uKClcbiYjNDM7e1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0OyBcXFxuJiM0MztcdFx0JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggOTk5IDJcdTAwM2UvZGV2L251bGwgfHwgcmV0dXJuIDFcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgXFxcbiYjNDM7XHRcdCRUQyBhY3Rpb25zIGRlbCBhY3Rpb24gZnJlciBpbmRleCA5OTkgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4mIzQzO1x0cmV0dXJuIDBcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgQm9uZCB0b3BvbG9neSBzZXR1cCAvIHRlYXJkb3duICh1c2VkIGJ5IHRlc3RzIDEtNClcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO3NldHVwX3RvcG9sb2d5KClcbiYjNDM7e1xuJiM0MztcdGZvciBuIGluIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7OyBkb1xuJiM0MztcdFx0aXAgbmV0bnMgYWRkIFwmIzM0OyRuXCYjMzQ7XG4mIzQzO1x0ZG9uZVxuJiM0MztcbiYjNDM7XHRpcCBsaW5rIGFkZCBcJiMzNDskVkVUSF9BMFwmIzM0OyB0eXBlIHZldGggcGVlciBuYW1lIFwmIzM0OyRWRVRIX0ExXCYjMzQ7XG4mIzQzO1x0aXAgbGluayBzZXQgXCYjMzQ7JFZFVEhfQTBcJiMzNDsgbmV0bnMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0O1xuJiM0MztcdGlwIGxpbmsgc2V0IFwmIzM0OyRWRVRIX0ExXCYjMzQ7IG5ldG5zIFwmIzM0OyROU19MSVNURU5FUlwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCBsaW5rIGFkZCBcJiMzNDskVkVUSF9CMFwmIzM0OyB0eXBlIHZldGggcGVlciBuYW1lIFwmIzM0OyRWRVRIX0IxXCYjMzQ7XG4mIzQzO1x0aXAgbGluayBzZXQgXCYjMzQ7JFZFVEhfQjBcJiMzNDsgbmV0bnMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0O1xuJiM0MztcdGlwIGxpbmsgc2V0IFwmIzM0OyRWRVRIX0IxXCYjMzQ7IG5ldG5zIFwmIzM0OyROU19MSVNURU5FUlwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIG5zX3RhbGtlcjogY3JlYXRlIGJvbmQwIChiYWxhbmNlLXJyKSwgZnJhbWVzIHJvdW5kLXJvYmluIGFjcm9zcyBib3RoIHNsYXZlcy5cbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgaXAgbGluayBzZXQgbG8gdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgaXAgbGluayBhZGQgXCYjMzQ7JEJPTkQwXCYjMzQ7IHR5cGUgYm9uZCBtb2RlIGJhbGFuY2UtcnIgbWlpbW9uIDEwMFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0OyBpcCBsaW5rIHNldCBcJiMzNDskVkVUSF9BMFwmIzM0OyBtYXN0ZXIgXCYjMzQ7JEJPTkQwXCYjMzQ7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfVEFMS0VSXCYjMzQ7IGlwIGxpbmsgc2V0IFwmIzM0OyRWRVRIX0IwXCYjMzQ7IG1hc3RlciBcJiMzNDskQk9ORDBcJiMzNDtcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JFZFVEhfQTBcJiMzNDsgdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JFZFVEhfQjBcJiMzNDsgdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JEJPTkQwXCYjMzQ7IHVwXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfVEFMS0VSXCYjMzQ7IGlwIGFkZHIgYWRkIFwmIzM0OyR7SVBfU1JDfS8yNFwmIzM0OyBkZXYgXCYjMzQ7JEJPTkQwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdCMgbnNfbGlzdGVuZXI6IGNyZWF0ZSBib25kMSAoYmFsYW5jZS1ycikuXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfTElTVEVORVJcJiMzNDsgaXAgbGluayBzZXQgbG8gdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBpcCBsaW5rIGFkZCBcJiMzNDskQk9ORDFcJiMzNDsgdHlwZSBib25kIG1vZGUgYmFsYW5jZS1yciBtaWltb24gMTAwXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfTElTVEVORVJcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JFZFVEhfQTFcJiMzNDsgbWFzdGVyIFwmIzM0OyRCT05EMVwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7IGlwIGxpbmsgc2V0IFwmIzM0OyRWRVRIX0IxXCYjMzQ7IG1hc3RlciBcJiMzNDskQk9ORDFcJiMzNDtcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBpcCBsaW5rIHNldCBcJiMzNDskVkVUSF9BMVwmIzM0OyB1cFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7IGlwIGxpbmsgc2V0IFwmIzM0OyRWRVRIX0IxXCYjMzQ7IHVwXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfTElTVEVORVJcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JEJPTkQxXCYjMzQ7IHVwXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfTElTVEVORVJcJiMzNDsgaXAgYWRkciBhZGQgXCYjMzQ7JHtJUF9EU1R9LzI0XCYjMzQ7IGRldiBcJiMzNDskQk9ORDFcJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyBTdGF0aWMgQVJQIHNvIEwyIGZvcndhcmRpbmcgd29ya3Mgd2l0aG91dCBBUlAgYnJvYWRjYXN0cy5cbiYjNDM7XHQjIFdpdGggYmFsYW5jZS1yciBib3RoIHNsYXZlcyBzaGFyZSB0aGUgYm9uZCBNQUMuXG4mIzQzO1x0bG9jYWwgbWFjX2JvbmQwIG1hY19ib25kMVxuJiM0MztcdG1hY19ib25kMD0kKGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0OyAgIGNhdCAvc3lzL2NsYXNzL25ldC9cJiMzNDskQk9ORDBcJiMzNDsvYWRkcmVzcylcbiYjNDM7XHRtYWNfYm9uZDE9JChpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBjYXQgL3N5cy9jbGFzcy9uZXQvXCYjMzQ7JEJPTkQxXCYjMzQ7L2FkZHJlc3MpXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfVEFMS0VSXCYjMzQ7ICAgaXAgbmVpZ2ggYWRkIFwmIzM0OyRJUF9EU1RcJiMzNDsgbGxhZGRyIFwmIzM0OyRtYWNfYm9uZDFcJiMzNDsgZGV2IFwmIzM0OyRCT05EMFwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7IGlwIG5laWdoIGFkZCBcJiMzNDskSVBfU1JDXCYjMzQ7IGxsYWRkciBcJiMzNDskbWFjX2JvbmQwXCYjMzQ7IGRldiBcJiMzNDskQk9ORDFcJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2xlYW51cCgpXG4mIzQzO3tcbiYjNDM7XHRmb3IgbiBpbiBcJiMzNDskTlNfVEFMS0VSXCYjMzQ7IFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcXFxuJiM0MztcdFx0XCYjMzQ7JFAyUF9OU19TUkNcJiMzNDsgXCYjMzQ7JFAyUF9OU19EU1RcJiMzNDsgXFxcbiYjNDM7XHRcdFwmIzM0OyRSX05TX1RBTEtFUlwmIzM0OyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7IFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgXCYjMzQ7JFJfTlNfTElTVEVORVJcJiMzNDs7IGRvXG4mIzQzO1x0XHRpcCBuZXRucyBkZWwgXCYjMzQ7JG5cJiMzNDsgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4mIzQzO1x0ZG9uZVxuJiM0Mzt9XG4mIzQzO3RyYXAgY2xlYW51cCBFWElUXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUQyBydWxlIGhlbHBlcnNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MzsjIFB1c2ggb24gYm90aCB2ZXRoX2EwIGFuZCB2ZXRoX2IwIGVncmVzcyB1c2luZyB0aGUgc2FtZSBzaGFyZWQgZnJlciBwdXNoXG4mIzQzOyMgYWN0aW9uIChJRFhfUFVTSCkuICBFYWNoIHNsYXZlIGFsc28gbWlycm9ycyB0byB0aGUgb3RoZXIgc28gdGhhdCBldmVyeVxuJiM0MzsjIG91dGdvaW5nIGZyYW1lIGlzIHJlcGxpY2F0ZWQgb250byBib3RoIHBhdGhzIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggc2xhdmUgdGhlXG4mIzQzOyMgYm9uZCBjdXJyZW50bHkgc2VsZWN0cy4gIFRoaXMgcHJldmVudHMgcGFja2V0IGxvc3MgZHVyaW5nIGJvbmQgbGluayBjaGFuZ2VzLlxuJiM0MztzZXR1cF9wdXNoX21pcnJvcigpXG4mIzQzO3tcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgXCYjMzQ7JFZFVEhfQTBcJiMzNDsgY2xzYWN0XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfVEFMS0VSXCYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiBcJiMzNDskVkVUSF9BMFwmIzM0OyBlZ3Jlc3MgXFxcbiYjNDM7XHRcdHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IFxcXG4mIzQzO1x0XHRhY3Rpb24gZnJlciBwdXNoIGluZGV4ICRJRFhfUFVTSCBcXFxuJiM0MztcdFx0YWN0aW9uIG1pcnJlZCBlZ3Jlc3MgbWlycm9yIGRldiBcJiMzNDskVkVUSF9CMFwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgXCYjMzQ7JFZFVEhfQjBcJiMzNDsgY2xzYWN0XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfVEFMS0VSXCYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiBcJiMzNDskVkVUSF9CMFwmIzM0OyBlZ3Jlc3MgXFxcbiYjNDM7XHRcdHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IFxcXG4mIzQzO1x0XHRhY3Rpb24gZnJlciBwdXNoIGluZGV4ICRJRFhfUFVTSCBcXFxuJiM0MztcdFx0YWN0aW9uIG1pcnJlZCBlZ3Jlc3MgbWlycm9yIGRldiBcJiMzNDskVkVUSF9BMFwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt0ZWFyZG93bl90YygpXG4mIzQzO3tcbiYjNDM7XHRmb3IgZGV2IGluIFwmIzM0OyRWRVRIX0EwXCYjMzQ7IFwmIzM0OyRWRVRIX0IwXCYjMzQ7OyBkb1xuJiM0MztcdFx0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfVEFMS0VSXCYjMzQ7ICRUQyBxZGlzYyBkZWwgZGV2IFwmIzM0OyRkZXZcJiMzNDsgY2xzYWN0IFxcXG4mIzQzO1x0XHRcdDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGRvbmVcbiYjNDM7XHRmb3IgZGV2IGluIFwmIzM0OyRWRVRIX0ExXCYjMzQ7IFwmIzM0OyRWRVRIX0IxXCYjMzQ7OyBkb1xuJiM0MztcdFx0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfTElTVEVORVJcJiMzNDsgJFRDIHFkaXNjIGRlbCBkZXYgXCYjMzQ7JGRldlwmIzM0OyBjbHNhY3QgXFxcbiYjNDM7XHRcdFx0Mlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4mIzQzO1x0ZG9uZVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0OyAgICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7ICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBQYWNrZXQtY2FwdHVyZSBoZWxwZXJzXG4mIzQzOyNcbiYjNDM7IyBjYXB0dXJlX3N0YXJ0X29uIE5TIElGQUNFIFBDQVAgW0JQRl9GSUxURVJdXG4mIzQzOyMgICBTdGFydHMgdGNwZHVtcCBpbiBuYW1lc3BhY2UgTlMgb24gSUZBQ0UsIHdyaXRpbmcgdG8gUENBUC5cbiYjNDM7IyAgIFN0b3JlcyBQSUQgaW4gX0NBUF9QSUQuXG4mIzQzOyNcbiYjNDM7IyBjYXB0dXJlX3N0b3BcbiYjNDM7IyAgIFdhaXRzIGZvciB0Y3BkdW1wIChzdG9yZWQgaW4gX0NBUF9QSUQpIHRvIGZpbmlzaC5cbiYjNDM7I1xuJiM0MzsjIGNhcHR1cmVfY291bnRfb24gTlMgUENBUFxuJiM0MzsjICAgUHJpbnRzIHRoZSBudW1iZXIgb2YgY2FwdHVyZWQgcGFja2V0cy5cbiYjNDM7I1xuJiM0MzsjIENvbnZlbmllbmNlIHdyYXBwZXJzIGNhcHR1cmVfc3RhcnQgLyBjYXB0dXJlX2NvdW50IHRhcmdldCBib25kMSBpblxuJiM0MzsjIE5TX0xJU1RFTkVSICh0aGUgcHJpbWFyeSBvYnNlcnZhdGlvbiBwb2ludCBmb3IgdGVzdHMgMiBhbmQgNCkuXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztfQ0FQX1BJRD1cJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzO2NhcHR1cmVfc3RhcnRfb24oKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgbnM9XCYjMzQ7JDFcJiMzNDsgaWZhY2U9XCYjMzQ7JDJcJiMzNDsgcGNhcD1cJiMzNDskM1wmIzM0OyBmaWx0ZXI9XCYjMzQ7JHs0Oi19XCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlmIFsgLW4gXCYjMzQ7JGZpbHRlclwmIzM0OyBdOyB0aGVuXG4mIzQzO1x0XHRpcCBuZXRucyBleGVjIFwmIzM0OyRuc1wmIzM0OyB0aW1lb3V0IDQgXFxcbiYjNDM7XHRcdFx0JFRDUERVTVAgLWkgXCYjMzQ7JGlmYWNlXCYjMzQ7IC13IFwmIzM0OyRwY2FwXCYjMzQ7IFxcXG4mIzQzO1x0XHRcdC0taW1tZWRpYXRlLW1vZGUgLVogcm9vdCAteSBFTjEwTUIgXFxcbiYjNDM7XHRcdFx0JGZpbHRlciBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXHUwMDI2XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0aXAgbmV0bnMgZXhlYyBcJiMzNDskbnNcJiMzNDsgdGltZW91dCA0IFxcXG4mIzQzO1x0XHRcdCRUQ1BEVU1QIC1pIFwmIzM0OyRpZmFjZVwmIzM0OyAtdyBcJiMzNDskcGNhcFwmIzM0OyBcXFxuJiM0MztcdFx0XHQtLWltbWVkaWF0ZS1tb2RlIC1aIHJvb3QgLXkgRU4xME1CIFxcXG4mIzQzO1x0XHRcdFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcdTAwMjZcbiYjNDM7XHRmaVxuJiM0MztcdF9DQVBfUElEPSQhXG4mIzQzO1xuJiM0MztcdCMgV2FpdCB1bnRpbCB0Y3BkdW1wIG9wZW5zIGEgcGFja2V0IHNvY2tldCAobWF4IH4yLjUgcykuXG4mIzQzO1x0bG9jYWwgdHJpZXM9MFxuJiM0MztcdHdoaWxlIFsgJHRyaWVzIC1sdCA1MCBdOyBkb1xuJiM0MztcdFx0aXAgbmV0bnMgZXhlYyBcJiMzNDskbnNcJiMzNDsgZ3JlcCAtcSBcJiMzNDskaWZhY2VcJiMzNDsgL3Byb2MvbmV0L3BhY2tldCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBicmVha1xuJiM0MztcdFx0c2xlZXAgMC4wNVxuJiM0MztcdFx0dHJpZXM9JCgodHJpZXMgJiM0MzsgMSkpXG4mIzQzO1x0ZG9uZVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjYXB0dXJlX3N0b3AoKVxuJiM0Mzt7XG4mIzQzO1x0WyAtbiBcJiMzNDskX0NBUF9QSURcJiMzNDsgXSB8fCByZXR1cm4gMFxuJiM0MztcdHdhaXQgXCYjMzQ7JF9DQVBfUElEXCYjMzQ7IDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdF9DQVBfUElEPVwmIzM0O1wmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztjYXB0dXJlX2NvdW50X29uKClcbiYjNDM7e1xuJiM0MztcdGxvY2FsIG5zPVwmIzM0OyQxXCYjMzQ7IHBjYXA9XCYjMzQ7JDJcJiMzNDtcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRuc1wmIzM0OyBcXFxuJiM0MztcdFx0JFRDUERVTVAgLXIgXCYjMzQ7JHBjYXBcJiMzNDsgLS1uby1wcm9taXNjdW91cy1tb2RlIDJcdTAwM2UvZGV2L251bGwgXFxcbiYjNDM7XHRcdHwgZ3JlcCAtYyBcJiMzNDteWzAtOV1cJiMzNDsgfHwgdHJ1ZVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIENvbnZlbmllbmNlIHdyYXBwZXJzOiBkZWZhdWx0IHRvIGJvbmQxIGluIE5TX0xJU1RFTkVSXG4mIzQzO2NhcHR1cmVfc3RhcnQoKSB7IGNhcHR1cmVfc3RhcnRfb24gXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7IFwmIzM0OyRCT05EMVwmIzM0OyBcJiMzNDskQFwmIzM0OzsgfVxuJiM0MztjYXB0dXJlX2NvdW50KCkgeyBjYXB0dXJlX2NvdW50X29uIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcJiMzNDskMVwmIzM0OzsgfVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgUGluZyBoZWxwZXJcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO2RvX3BpbmcoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcmM9MFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0OyBcXFxuJiM0MztcdFx0JFBJTkcgLWMgXCYjMzQ7JFBJTkdfQ09VTlRcJiMzNDsgLVcgXCYjMzQ7JFBJTkdfVElNRU9VVFwmIzM0OyAtaSAwLjIgLXEgXFxcbiYjNDM7XHRcdFwmIzM0OyRJUF9EU1RcJiMzNDsgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIHx8IHJjPSQ/XG4mIzQzO1x0cmV0dXJuICRyY1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyB0YyBzdGF0aXN0aWNzIHBhcnNlclxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7dGNfc3RhdCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBkdW1wPVwmIzM0OyQxXCYjMzQ7IGZpZWxkPVwmIzM0OyQyXCYjMzQ7XG4mIzQzO1x0ZWNobyBcJiMzNDskZHVtcFwmIzM0OyB8IGF3ayAtRlwmIzM0OyR7ZmllbGR9PVwmIzM0OyAmIzM5O05GXHUwMDNlMXtzcGxpdCgkMixhLFwmIzM0OyBcJiMzNDspO3ByaW50IGFbMV07ZXhpdH0mIzM5OyB8fCBlY2hvIFwmIzM0OzBcJiMzNDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgVEVTVCAxOiBQVVNIIFZFUklGWSAoYm9uZCB0b3BvbG9neSlcbiYjNDM7I1xuJiM0MzsjIE9ubHkgcHVzaCBpcyBjb25maWd1cmVkIG9uIHRoZSB0YWxrZXIgc2lkZTsgbm8gcmVjb3ZlciBvbiB0aGUgbGlzdGVuZXIuXG4mIzQzOyMgVGhlIHB1c2ggYWN0aW9uIG9uIHZldGhfYTAgZWdyZXNzIGluc2VydHMgYW4gUi1UQUcgYW5kIG1pcnJvcnMgYSBjb3B5IHRvXG4mIzQzOyMgdmV0aF9iMCwgc28gYm90aCBsaXN0ZW5lciBzbGF2ZXMgKHZldGhfYTEgYW5kIHZldGhfYjEpIHJlY2VpdmUgYSBmcmFtZVxuJiM0MzsjIHdpdGggRXRoZXJUeXBlIDB4RjFDMS4gIENhcHR1cmVzIHJ1biBzZXF1ZW50aWFsbHkgb24gZWFjaCBzbGF2ZSB0byB2ZXJpZnlcbiYjNDM7IyB0aGF0IGJvdGggcGF0aHMgY2FycnkgUi1UQUcgZnJhbWVzLlxuJiM0MzsjXG4mIzQzOyMgUGFzcyBjcml0ZXJpYTpcbiYjNDM7IyAgIC0gdmV0aF9hMSBjYXB0dXJlcyBcdTAwM2U9IDEgUi1UQUcgZnJhbWVcbiYjNDM7IyAgIC0gdmV0aF9iMSBjYXB0dXJlcyBcdTAwM2U9IDEgUi1UQUcgZnJhbWVcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO3Rlc3RfcHVzaF92ZXJpZnlfYm9uZCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBwY2FwX2EgcGNhcF9iIGNhcF9hIGNhcF9iXG4mIzQzO1x0bG9jYWwgcmVzdWx0PVwmIzM0O3Bhc3NcJiMzNDtcbiYjNDM7XG4mIzQzO1x0c2V0dXBfcHVzaF9taXJyb3JcbiYjNDM7XG4mIzQzO1x0IyBDYXB0dXJlIDE6IFItVEFHIGZyYW1lcyBvbiB2ZXRoX2ExIChwYXRoIEEpXG4mIzQzO1x0cGNhcF9hPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX3B1c2hfYV9YWFhYWFgucGNhcClcbiYjNDM7XHRjYXB0dXJlX3N0YXJ0X29uIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcJiMzNDskVkVUSF9BMVwmIzM0OyBcJiMzNDskcGNhcF9hXCYjMzQ7IFwmIzM0O2V0aGVyIHByb3RvIDB4ZjFjMVwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0OyBcXFxuJiM0MztcdFx0JFBJTkcgLWMgMyAtVyAxIC1pIDAuMiAtcSBcJiMzNDskSVBfRFNUXCYjMzQ7IFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSB8fCB0cnVlXG4mIzQzO1x0Y2FwdHVyZV9zdG9wXG4mIzQzO1x0Y2FwX2E9JChjYXB0dXJlX2NvdW50X29uIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcJiMzNDskcGNhcF9hXCYjMzQ7KVxuJiM0MztcdHJtIC1mIFwmIzM0OyRwY2FwX2FcJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyBDYXB0dXJlIDI6IFItVEFHIGZyYW1lcyBvbiB2ZXRoX2IxIChwYXRoIEIsIG1pcnJvcmVkIGNvcHkpXG4mIzQzO1x0cGNhcF9iPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX3B1c2hfYl9YWFhYWFgucGNhcClcbiYjNDM7XHRjYXB0dXJlX3N0YXJ0X29uIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcJiMzNDskVkVUSF9CMVwmIzM0OyBcJiMzNDskcGNhcF9iXCYjMzQ7IFwmIzM0O2V0aGVyIHByb3RvIDB4ZjFjMVwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0OyBcXFxuJiM0MztcdFx0JFBJTkcgLWMgMyAtVyAxIC1pIDAuMiAtcSBcJiMzNDskSVBfRFNUXCYjMzQ7IFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSB8fCB0cnVlXG4mIzQzO1x0Y2FwdHVyZV9zdG9wXG4mIzQzO1x0Y2FwX2I9JChjYXB0dXJlX2NvdW50X29uIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcJiMzNDskcGNhcF9iXCYjMzQ7KVxuJiM0MztcdHJtIC1mIFwmIzM0OyRwY2FwX2JcJiMzNDtcbiYjNDM7XG4mIzQzO1x0dGVhcmRvd25fdGNcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDsjIGJvbmQgcHVzaCB2ZXJpZnk6IHZldGhfYTEgUi1UQUc9JGNhcF9hIHZldGhfYjEgUi1UQUc9JGNhcF9iXCYjMzQ7XG4mIzQzO1xuJiM0MztcdFsgXCYjMzQ7JGNhcF9hXCYjMzQ7IC1nZSAxIF0gfHwgcmVzdWx0PVwmIzM0O2ZhaWxcJiMzNDtcbiYjNDM7XHRbIFwmIzM0OyRjYXBfYlwmIzM0OyAtZ2UgMSBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlmIFsgXCYjMzQ7JHJlc3VsdFwmIzM0OyA9IFwmIzM0O3Bhc3NcJiMzNDsgXTsgdGhlblxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JvbmQgcHVzaCB2ZXJpZnk6IFItVEFHIG9uIGJvdGggcGF0aHMgKGExPSRjYXBfYSBiMT0kY2FwX2IpXCYjMzQ7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JvbmQgcHVzaCB2ZXJpZnk6IGV4cGVjdGVkIFItVEFHIG9uIGJvdGggcGF0aHMgKGExPSRjYXBfYSBiMT0kY2FwX2IpXCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgVEVTVCAyOiBTSEFSRUQgUkVDT1ZFUiBFMkUgKGJvbmQgdG9wb2xvZ3kpXG4mIzQzOyNcbiYjNDM7IyB2ZXRoX2ExIGFuZCB2ZXRoX2IxIGluZ3Jlc3Mgc2hhcmUgb25lIHJlY292ZXIgYWN0aW9uIChpZHg9MTApIHdpdGggdGFnLXBvcC5cbiYjNDM7IyBUaGUgbGlzdGVuZXIgcmVjZWl2ZXMgdHdvIFItVEFHIGNvcGllcyBwZXIgcmVxdWVzdDsgdGhlIHNoYXJlZCByZWNvdmVyIHBhc3Nlc1xuJiM0MzsjIGV4YWN0bHkgb25lIGFuZCBkaXNjYXJkcyB0aGUgb3RoZXIuICBUaGUgcmVjb3ZlcmVkIHBsYWluIElDTVAgcmVhY2hlcyBib25kMSYjMzk7c1xuJiM0MzsjIElQIHN0YWNrIGFuZCBhIHJlcGx5IGlzIHNlbnQsIG1ha2luZyBwaW5nIHN1Y2NlZWQuXG4mIzQzOyNcbiYjNDM7IyBQYXNzIGNyaXRlcmlhOlxuJiM0MzsjICAgLSBwaW5nIHN1Y2NlZWRzIChyYz0wKVxuJiM0MzsjICAgLSB0Y3BkdW1wIG9uIGJvbmQxIGNhcHR1cmVzIGV4YWN0bHkgUElOR19DT1VOVCBJQ01QIGVjaG8tcmVxdWVzdCBmcmFtZXNcbiYjNDM7IyAgICAgKGZpbHRlciBpcyByZXN0cmljdGVkIHRvIHR5cGU9OCB0byBleGNsdWRlIGVjaG8gcmVwbGllcywgd2hpY2ggd291bGRcbiYjNDM7IyAgICAgZG91YmxlIHRoZSBjb3VudCBzaW5jZSBib25kMSBhbHNvIG9yaWdpbmF0ZXMgdGhlIHJlcGx5IHBhY2tldHMpXG4mIzQzOyMgICAtIHRjIHN0YXRzIG9uIHZldGhfYTE6IHBhc3NlZCBcdTAwM2U9IFBJTkdfQ09VTlQsIGRpc2NhcmRlZCBcdTAwM2U9IFBJTkdfQ09VTlRcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO3Rlc3Rfc2hhcmVkX3JlY292ZXJfYm9uZCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBwY2FwIGNhcF9jb3VudCBwaW5nX3JjPTBcbiYjNDM7XHRsb2NhbCBkdW1wX2FcbiYjNDM7XHRsb2NhbCB0b3RhbF9wYXNzZWQgdG90YWxfZGlzY2FyZGVkIHRhZ2xlc3NcbiYjNDM7XHRsb2NhbCByZXN1bHQ9XCYjMzQ7cGFzc1wmIzM0O1xuJiM0MztcbiYjNDM7XHRzZXR1cF9wdXNoX21pcnJvclxuJiM0MztcbiYjNDM7XHQjIHZldGhfYTEgaW5ncmVzczogY3JlYXRlIHNoYXJlZCByZWNvdmVyIGFjdGlvbiB3aXRoIHRhZy1wb3BcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyAkVEMgcWRpc2MgYWRkIGRldiBcJiMzNDskVkVUSF9BMVwmIzM0OyBjbHNhY3RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyAkVEMgZmlsdGVyIGFkZCBkZXYgXCYjMzQ7JFZFVEhfQTFcJiMzNDsgaW5ncmVzcyBcXFxuJiM0MztcdFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXG4mIzQzO1x0XHRhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgXFxcbiYjNDM7XHRcdFx0cmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9TSEFSRURfUkNWWVxuJiM0MztcbiYjNDM7XHQjIHZldGhfYjEgaW5ncmVzczogYmluZCB0byB0aGUgc2FtZSBzaGFyZWQgYWN0aW9uIGJ5IGluZGV4XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfTElTVEVORVJcJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgXCYjMzQ7JFZFVEhfQjFcJiMzNDsgY2xzYWN0XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskTlNfTElTVEVORVJcJiMzNDsgJFRDIGZpbHRlciBhZGQgZGV2IFwmIzM0OyRWRVRIX0IxXCYjMzQ7IGluZ3Jlc3MgXFxcbiYjNDM7XHRcdHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcXFxuJiM0MztcdFx0YWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAkSURYX1NIQVJFRF9SQ1ZZXG4mIzQzO1xuJiM0MztcdHBjYXA9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfc2hhcmVkX1hYWFhYWC5wY2FwKVxuJiM0MztcdGNhcHR1cmVfc3RhcnQgXCYjMzQ7JHBjYXBcJiMzNDsgXCYjMzQ7aWNtcFtpY21wdHlwZV0gPT0gaWNtcC1lY2hvXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGRvX3BpbmcgfHwgcGluZ19yYz0kP1xuJiM0MztcbiYjNDM7XHRjYXB0dXJlX3N0b3BcbiYjNDM7XG4mIzQzO1x0Y2FwX2NvdW50PSQoY2FwdHVyZV9jb3VudCBcJiMzNDskcGNhcFwmIzM0OylcbiYjNDM7XHRybSAtZiBcJiMzNDskcGNhcFwmIzM0O1xuJiM0MztcbiYjNDM7XHRkdW1wX2E9JChpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcXFxuJiM0MztcdFx0JFRDIC1zIGZpbHRlciBzaG93IGRldiBcJiMzNDskVkVUSF9BMVwmIzM0OyBpbmdyZXNzIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzO1xuJiM0MztcdHRlYXJkb3duX3RjXG4mIzQzO1xuJiM0MztcdHRvdGFsX3Bhc3NlZD0kKHRjX3N0YXQgICAgXCYjMzQ7JGR1bXBfYVwmIzM0OyBcJiMzNDtwYXNzZWRcJiMzNDspXG4mIzQzO1x0dG90YWxfZGlzY2FyZGVkPSQodGNfc3RhdCBcJiMzNDskZHVtcF9hXCYjMzQ7IFwmIzM0O2Rpc2NhcmRlZFwmIzM0OylcbiYjNDM7XHR0YWdsZXNzPSQodGNfc3RhdCAgICAgICAgIFwmIzM0OyRkdW1wX2FcJiMzNDsgXCYjMzQ7dGFnbGVzc1wmIzM0OylcbiYjNDM7XHR0b3RhbF9kaXNjYXJkZWQ9JCgodG90YWxfZGlzY2FyZGVkIC0gdGFnbGVzcykpXG4mIzQzO1xuJiM0MztcdGVjaG8gXCYjMzQ7IyBib25kIHNoYXJlZCByZWNvdmVyOiBwaW5nX3JjPSRwaW5nX3JjIGNhcD0kY2FwX2NvdW50XCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDtwYXNzZWQ9JHRvdGFsX3Bhc3NlZCBkaXNjYXJkZWQ9JHRvdGFsX2Rpc2NhcmRlZFwmIzM0O1xuJiM0MztcbiYjNDM7XHRbIFwmIzM0OyRwaW5nX3JjXCYjMzQ7ICAgICAgICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskY2FwX2NvdW50XCYjMzQ7ICAgICAgIC1lcSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskdG90YWxfcGFzc2VkXCYjMzQ7ICAgIC1nZSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskdG90YWxfZGlzY2FyZGVkXCYjMzQ7IC1nZSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlmIFsgXCYjMzQ7JHJlc3VsdFwmIzM0OyA9IFwmIzM0O3Bhc3NcJiMzNDsgXTsgdGhlblxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JvbmQgc2hhcmVkIHJlY292ZXI6IHBpbmcgT0ssIGNhcD0kY2FwX2NvdW50XCYjMzQ7IFxcXG4mIzQzO1x0XHRcdFwmIzM0O3Bhc3NlZD0kdG90YWxfcGFzc2VkIGRpc2NhcmRlZD0kdG90YWxfZGlzY2FyZGVkXCYjMzQ7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JvbmQgc2hhcmVkIHJlY292ZXI6IHBpbmdfcmM9JHBpbmdfcmMgY2FwPSRjYXBfY291bnRcJiMzNDsgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7cGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWRcJiMzNDsgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7KGV4cGVjdGVkIHBpbmcgT0ssIGNhcD0kUElOR19DT1VOVCxcJiMzNDsgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7cGFzc2VkXHUwMDNlPSRQSU5HX0NPVU5ULCBkaXNjYXJkZWRcdTAwM2U9JFBJTkdfQ09VTlQpXCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgVEVTVCAzOiBJTkRJVklEVUFMIFJFQ09WRVIgKGJvbmQgdG9wb2xvZ3kpXG4mIzQzOyNcbiYjNDM7IyB2ZXRoX2ExIGFuZCB2ZXRoX2IxIHVzZSBpbmRlcGVuZGVudCByZWNvdmVyIGFjdGlvbnMgKGlkeD0yMCBhbmQgaWR4PTIxKS5cbiYjNDM7IyBFYWNoIHBvcnQgbWFpbnRhaW5zIGl0cyBvd24gc2VxdWVuY2UgaGlzdG9yeSBzbyBib3RoIGNvcGllcyBvZiBldmVyeSBmcmFtZVxuJiM0MzsjIGFyZSBwYXNzZWQgKG5vIGNyb3NzLXBvcnQgZGVkdXBsaWNhdGlvbikuICBXaXRoIGFjdGl2ZS1iYWNrdXAgYm9uZDEsIG9ubHlcbiYjNDM7IyB0aGUgYWN0aXZlIHNsYXZlJiMzOTtzICh2ZXRoX2ExKSByZWNvdmVyZWQgZnJhbWUgcmVhY2hlcyBib25kMSYjMzk7cyBJUCBzdGFjaywgc29cbiYjNDM7IyBwaW5nIHN1Y2NlZWRzLiAgVGhlIGFic2VuY2Ugb2YgZGVkdXBsaWNhdGlvbiBpcyB2ZXJpZmllZCB2aWEgcGVyLXNsYXZlXG4mIzQzOyMgdGNwZHVtcCAoZWFjaCBzbGF2ZSBzaG91bGQgY2FwdHVyZSBQSU5HX0NPVU5UIElDTVAgZnJhbWVzKSBhbmQgdGMgc3RhdHMuXG4mIzQzOyNcbiYjNDM7IyBQYXNzIGNyaXRlcmlhOlxuJiM0MzsjICAgLSBwaW5nIHN1Y2NlZWRzXG4mIzQzOyMgICAtIHZldGhfYTEgY2FwdHVyZXMgUElOR19DT1VOVCBJQ01QIGZyYW1lcyAocGFzc2VkLCBub3QgZGlzY2FyZGVkKVxuJiM0MzsjICAgLSB2ZXRoX2IxIGNhcHR1cmVzIFBJTkdfQ09VTlQgSUNNUCBmcmFtZXMgKHBhc3NlZCBpbmRlcGVuZGVudGx5KVxuJiM0MzsjICAgLSB0YyBzdGF0czogdmV0aF9hMSBwYXNzZWQ9UElOR19DT1VOVCBkaXNjYXJkZWQ9MFxuJiM0MzsjICAgICAgICAgICAgICAgdmV0aF9iMSBwYXNzZWQ9UElOR19DT1VOVCBkaXNjYXJkZWQ9MFxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7dGVzdF9pbmRpdmlkdWFsX3JlY292ZXJfYm9uZCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBwY2FwX2EgcGNhcF9iIGNhcF9hIGNhcF9iIHBpbmdfcmM9MFxuJiM0MztcdGxvY2FsIGR1bXBfYSBkdW1wX2JcbiYjNDM7XHRsb2NhbCBwYXNzZWRfYSBkaXNjYXJkZWRfYSBwYXNzZWRfYiBkaXNjYXJkZWRfYiB0YWdsZXNzX2EgdGFnbGVzc19iXG4mIzQzO1x0bG9jYWwgcmVzdWx0PVwmIzM0O3Bhc3NcJiMzNDtcbiYjNDM7XG4mIzQzO1x0c2V0dXBfcHVzaF9taXJyb3JcbiYjNDM7XG4mIzQzO1x0IyB2ZXRoX2ExIGluZ3Jlc3M6IGluZGl2aWR1YWwgcmVjb3ZlciBpZHg9MjAgKGluZGVwZW5kZW50IHN0YXRlKVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2IFwmIzM0OyRWRVRIX0ExXCYjMzQ7IGNsc2FjdFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiBcJiMzNDskVkVUSF9BMVwmIzM0OyBpbmdyZXNzIFxcXG4mIzQzO1x0XHRwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXFxcbiYjNDM7XHRcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXG4mIzQzO1x0XHRcdHJlc2V0LXRpbWUgMjAwMCB0YWctcG9wIGluZGV4ICRJRFhfSU5EVl9SQ1ZZX0FcbiYjNDM7XG4mIzQzO1x0IyB2ZXRoX2IxIGluZ3Jlc3M6IGluZGl2aWR1YWwgcmVjb3ZlciBpZHg9MjEgKHNlcGFyYXRlIGluZGVwZW5kZW50IHN0YXRlKVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2IFwmIzM0OyRWRVRIX0IxXCYjMzQ7IGNsc2FjdFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiBcJiMzNDskVkVUSF9CMVwmIzM0OyBpbmdyZXNzIFxcXG4mIzQzO1x0XHRwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXFxcbiYjNDM7XHRcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXG4mIzQzO1x0XHRcdHJlc2V0LXRpbWUgMjAwMCB0YWctcG9wIGluZGV4ICRJRFhfSU5EVl9SQ1ZZX0JcbiYjNDM7XG4mIzQzO1x0IyBQZXItc2xhdmUgY2FwdHVyZSBBOiB2ZXJpZnkgdmV0aF9hMSBwYXNzZXMgZnJhbWVzOyBhbHNvIHVzZSB0aGlzIHJ1blxuJiM0MztcdCMgZm9yIHRoZSBvdmVyYWxsIHBpbmdfcmMgY2hlY2sgKGRvX3BpbmcgdGFyZ2V0cyBib25kMC1cdTAwM2Vib25kMSkuXG4mIzQzO1x0cGNhcF9hPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX2luZHZfYV9YWFhYWFgucGNhcClcbiYjNDM7XHRjYXB0dXJlX3N0YXJ0X29uIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcJiMzNDskVkVUSF9BMVwmIzM0OyBcJiMzNDskcGNhcF9hXCYjMzQ7IFwmIzM0O2ljbXBcJiMzNDtcbiYjNDM7XHRkb19waW5nIHx8IHBpbmdfcmM9JD9cbiYjNDM7XHRjYXB0dXJlX3N0b3BcbiYjNDM7XHRjYXBfYT0kKGNhcHR1cmVfY291bnRfb24gXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7IFwmIzM0OyRwY2FwX2FcJiMzNDspXG4mIzQzO1x0cm0gLWYgXCYjMzQ7JHBjYXBfYVwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIFBlci1zbGF2ZSBjYXB0dXJlIEI6IHZlcmlmeSB2ZXRoX2IxIGFsc28gcGFzc2VzIGZyYW1lcyAoYmFsYW5jZS1yclxuJiM0MztcdCMgZGlzdHJpYnV0ZXMgZWdyZXNzIGFjcm9zcyBib3RoIHNsYXZlcywgc28gYm90aCBwYXRocyBjYXJyeSB0cmFmZmljKS5cbiYjNDM7XHRwY2FwX2I9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfaW5kdl9iX1hYWFhYWC5wY2FwKVxuJiM0MztcdGNhcHR1cmVfc3RhcnRfb24gXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7IFwmIzM0OyRWRVRIX0IxXCYjMzQ7IFwmIzM0OyRwY2FwX2JcJiMzNDsgXCYjMzQ7aWNtcFwmIzM0O1xuJiM0MztcdGRvX3BpbmcgfHwgdHJ1ZVxuJiM0MztcdGNhcHR1cmVfc3RvcFxuJiM0MztcdGNhcF9iPSQoY2FwdHVyZV9jb3VudF9vbiBcJiMzNDskTlNfTElTVEVORVJcJiMzNDsgXCYjMzQ7JHBjYXBfYlwmIzM0OylcbiYjNDM7XHRybSAtZiBcJiMzNDskcGNhcF9iXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGR1bXBfYT0kKGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX0xJU1RFTkVSXCYjMzQ7IFxcXG4mIzQzO1x0XHQkVEMgLXMgZmlsdGVyIHNob3cgZGV2IFwmIzM0OyRWRVRIX0ExXCYjMzQ7IGluZ3Jlc3MgMlx1MDAzZS9kZXYvbnVsbClcbiYjNDM7XHRkdW1wX2I9JChpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyBcXFxuJiM0MztcdFx0JFRDIC1zIGZpbHRlciBzaG93IGRldiBcJiMzNDskVkVUSF9CMVwmIzM0OyBpbmdyZXNzIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzO1xuJiM0MztcdHRlYXJkb3duX3RjXG4mIzQzO1xuJiM0MztcdHBhc3NlZF9hPSQodGNfc3RhdCAgICBcJiMzNDskZHVtcF9hXCYjMzQ7IFwmIzM0O3Bhc3NlZFwmIzM0OylcbiYjNDM7XHRkaXNjYXJkZWRfYT0kKHRjX3N0YXQgXCYjMzQ7JGR1bXBfYVwmIzM0OyBcJiMzNDtkaXNjYXJkZWRcJiMzNDspXG4mIzQzO1x0dGFnbGVzc19hPSQodGNfc3RhdCAgIFwmIzM0OyRkdW1wX2FcJiMzNDsgXCYjMzQ7dGFnbGVzc1wmIzM0OylcbiYjNDM7XHRwYXNzZWRfYj0kKHRjX3N0YXQgICAgXCYjMzQ7JGR1bXBfYlwmIzM0OyBcJiMzNDtwYXNzZWRcJiMzNDspXG4mIzQzO1x0ZGlzY2FyZGVkX2I9JCh0Y19zdGF0IFwmIzM0OyRkdW1wX2JcJiMzNDsgXCYjMzQ7ZGlzY2FyZGVkXCYjMzQ7KVxuJiM0MztcdHRhZ2xlc3NfYj0kKHRjX3N0YXQgICBcJiMzNDskZHVtcF9iXCYjMzQ7IFwmIzM0O3RhZ2xlc3NcJiMzNDspXG4mIzQzO1x0ZGlzY2FyZGVkX2E9JCgoZGlzY2FyZGVkX2EgLSB0YWdsZXNzX2EpKVxuJiM0MztcdGRpc2NhcmRlZF9iPSQoKGRpc2NhcmRlZF9iIC0gdGFnbGVzc19iKSlcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDsjIGJvbmQgaW5kaXZpZHVhbCByZWNvdmVyOiBwaW5nX3JjPSRwaW5nX3JjXCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDthMTogY2FwPSRjYXBfYSBwYXNzZWQ9JHBhc3NlZF9hIGRpc2NhcmRlZD0kZGlzY2FyZGVkX2FcJiMzNDsgXFxcbiYjNDM7XHRcdFwmIzM0O2IxOiBjYXA9JGNhcF9iIHBhc3NlZD0kcGFzc2VkX2IgZGlzY2FyZGVkPSRkaXNjYXJkZWRfYlwmIzM0O1xuJiM0MztcbiYjNDM7XHRbIFwmIzM0OyRwaW5nX3JjXCYjMzQ7ICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskY2FwX2FcJiMzNDsgICAgIC1nZSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskY2FwX2JcJiMzNDsgICAgIC1nZSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskcGFzc2VkX2FcJiMzNDsgIC1nZSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskcGFzc2VkX2JcJiMzNDsgIC1nZSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskZGlzY2FyZGVkX2FcJiMzNDsgLWVxIDAgXSAgICAgICAgICAgfHwgcmVzdWx0PVwmIzM0O2ZhaWxcJiMzNDtcbiYjNDM7XHRbIFwmIzM0OyRkaXNjYXJkZWRfYlwmIzM0OyAtZXEgMCBdICAgICAgICAgICB8fCByZXN1bHQ9XCYjMzQ7ZmFpbFwmIzM0O1xuJiM0MztcbiYjNDM7XHRpZiBbIFwmIzM0OyRyZXN1bHRcJiMzNDsgPSBcJiMzNDtwYXNzXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyBcXFxuJiM0MztcdFx0XHRcJiMzNDtib25kIGluZGl2aWR1YWwgcmVjb3ZlcjogcGluZyBPS1wmIzM0OyBcXFxuJiM0MztcdFx0XHRcJiMzNDthMTogY2FwPSRjYXBfYSBwYXNzZWQ9JHBhc3NlZF9hLzBcJiMzNDsgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7YjE6IGNhcD0kY2FwX2IgcGFzc2VkPSRwYXNzZWRfYi8wXCYjMzQ7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JvbmQgaW5kaXZpZHVhbCByZWNvdmVyOiBwaW5nX3JjPSRwaW5nX3JjXCYjMzQ7IFxcXG4mIzQzO1x0XHRcdFwmIzM0O2ExOiBjYXA9JGNhcF9hIHBhc3NlZD0kcGFzc2VkX2EgZGlzY2FyZGVkPSRkaXNjYXJkZWRfYVwmIzM0OyBcXFxuJiM0MztcdFx0XHRcJiMzNDtiMTogY2FwPSRjYXBfYiBwYXNzZWQ9JHBhc3NlZF9iIGRpc2NhcmRlZD0kZGlzY2FyZGVkX2JcJiMzNDtcbiYjNDM7XHRmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBURVNUIDQ6IE5PIFRBRy1QT1AgKGJvbmQgdG9wb2xvZ3kpXG4mIzQzOyNcbiYjNDM7IyBTaGFyZWQgcmVjb3ZlciBydW5zIHdpdGhvdXQgdGFnLXBvcDsgcGFzc2VkIGZyYW1lcyBzdGlsbCBjYXJyeSB0aGUgUi1UQUdcbiYjNDM7IyB3aGVuIHRoZXkgcmVhY2ggYm9uZDEuXG4mIzQzOyNcbiYjNDM7IyBQYXNzIGNyaXRlcmlhOlxuJiM0MzsjICAgLSB0Y3BkdW1wIG9uIGJvbmQxIHdpdGggXCYjMzQ7ZXRoZXIgcHJvdG8gMHhmMWMxXCYjMzQ7IGNhcHR1cmVzIFx1MDAzZT0gMSBSLVRBRyBmcmFtZVxuJiM0MzsjICAgLSB0Y3BkdW1wIG9uIGJvbmQxIHdpdGggXCYjMzQ7aWNtcFwmIzM0OyBjYXB0dXJlcyAwIGZyYW1lcyAob3V0ZXIgRXRoZXJUeXBlIGlzXG4mIzQzOyMgICAgIDB4RjFDMSwgbm90IDB4MDgwMCwgc28gcGxhaW4tSVAgSUNNUCBmaWx0ZXIgZG9lcyBub3QgbWF0Y2gpXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0Mzt0ZXN0X25vX3RhZ19wb3BfYm9uZCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBwY2FwX3J0YWcgcGNhcF9pY21wIHJ0YWdfY291bnQgaWNtcF9jb3VudFxuJiM0MztcdGxvY2FsIHJlc3VsdD1cJiMzNDtwYXNzXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHNldHVwX3B1c2hfbWlycm9yXG4mIzQzO1xuJiM0MztcdCMgdmV0aF9hMSBpbmdyZXNzOiBzaGFyZWQgcmVjb3ZlciBXSVRIT1VUIHRhZy1wb3BcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyAkVEMgcWRpc2MgYWRkIGRldiBcJiMzNDskVkVUSF9BMVwmIzM0OyBjbHNhY3RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyAkVEMgZmlsdGVyIGFkZCBkZXYgXCYjMzQ7JFZFVEhfQTFcJiMzNDsgaW5ncmVzcyBcXFxuJiM0MztcdFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXG4mIzQzO1x0XHRhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgXFxcbiYjNDM7XHRcdFx0cmVzZXQtdGltZSAyMDAwIGluZGV4ICRJRFhfTk9fUE9QXG4mIzQzO1xuJiM0MztcdCMgdmV0aF9iMSBpbmdyZXNzOiBiaW5kIHRvIHRoZSBzYW1lIHNoYXJlZCBhY3Rpb25cbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyAkVEMgcWRpc2MgYWRkIGRldiBcJiMzNDskVkVUSF9CMVwmIzM0OyBjbHNhY3RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19MSVNURU5FUlwmIzM0OyAkVEMgZmlsdGVyIGFkZCBkZXYgXCYjMzQ7JFZFVEhfQjFcJiMzNDsgaW5ncmVzcyBcXFxuJiM0MztcdFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXG4mIzQzO1x0XHRhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4ICRJRFhfTk9fUE9QXG4mIzQzO1xuJiM0MztcdCMgQ2FwdHVyZSAxOiBmcmFtZXMgd2l0aCBSLVRBRyBFdGhlclR5cGUgb24gYm9uZDEgKGV4cGVjdCBcdTAwM2U9IDEpXG4mIzQzO1x0cGNhcF9ydGFnPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX25vcG9wX3J0YWdfWFhYWFhYLnBjYXApXG4mIzQzO1x0Y2FwdHVyZV9zdGFydCBcJiMzNDskcGNhcF9ydGFnXCYjMzQ7IFwmIzM0O2V0aGVyIHByb3RvIDB4ZjFjMVwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JE5TX1RBTEtFUlwmIzM0OyBcXFxuJiM0MztcdFx0JFBJTkcgLWMgMyAtVyAxIC1pIDAuMiAtcSBcJiMzNDskSVBfRFNUXCYjMzQ7IFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSB8fCB0cnVlXG4mIzQzO1x0Y2FwdHVyZV9zdG9wXG4mIzQzO1x0cnRhZ19jb3VudD0kKGNhcHR1cmVfY291bnQgXCYjMzQ7JHBjYXBfcnRhZ1wmIzM0OylcbiYjNDM7XHRybSAtZiBcJiMzNDskcGNhcF9ydGFnXCYjMzQ7XG4mIzQzO1xuJiM0MztcdCMgQ2FwdHVyZSAyOiBwbGFpbiBJQ01QIGZyYW1lcyBvbiBib25kMSAoZXhwZWN0IDApXG4mIzQzO1x0cGNhcF9pY21wPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX25vcG9wX2ljbXBfWFhYWFhYLnBjYXApXG4mIzQzO1x0Y2FwdHVyZV9zdGFydCBcJiMzNDskcGNhcF9pY21wXCYjMzQ7IFwmIzM0O2ljbXBcJiMzNDtcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyROU19UQUxLRVJcJiMzNDsgXFxcbiYjNDM7XHRcdCRQSU5HIC1jIDMgLVcgMSAtaSAwLjIgLXEgXCYjMzQ7JElQX0RTVFwmIzM0OyBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgfHwgdHJ1ZVxuJiM0MztcdGNhcHR1cmVfc3RvcFxuJiM0MztcdGljbXBfY291bnQ9JChjYXB0dXJlX2NvdW50IFwmIzM0OyRwY2FwX2ljbXBcJiMzNDspXG4mIzQzO1x0cm0gLWYgXCYjMzQ7JHBjYXBfaWNtcFwmIzM0O1xuJiM0MztcbiYjNDM7XHR0ZWFyZG93bl90Y1xuJiM0MztcbiYjNDM7XHRlY2hvIFwmIzM0OyMgYm9uZCBubyB0YWctcG9wOiBydGFnPSRydGFnX2NvdW50IChleHBlY3RlZCBcdTAwM2U9MSkgaWNtcD0kaWNtcF9jb3VudCAoZXhwZWN0ZWQgMClcJiMzNDtcbiYjNDM7XG4mIzQzO1x0WyBcJiMzNDskcnRhZ19jb3VudFwmIzM0OyAtZ2UgMSBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskaWNtcF9jb3VudFwmIzM0OyAtZXEgMCBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlmIFsgXCYjMzQ7JHJlc3VsdFwmIzM0OyA9IFwmIzM0O3Bhc3NcJiMzNDsgXTsgdGhlblxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JvbmQgbm8gdGFnLXBvcDogUi1UQUcgcHJlc2VudCBvbiBib25kMSBcJiMzNDsgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7KHJ0YWc9JHJ0YWdfY291bnQpLCBJQ01QIGFic2VudCAoaWNtcD0kaWNtcF9jb3VudClcJiMzNDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7Ym9uZCBubyB0YWctcG9wOiBydGFnPSRydGFnX2NvdW50IGljbXA9JGljbXBfY291bnQgXCYjMzQ7IFxcXG4mIzQzO1x0XHRcdFwmIzM0OyhleHBlY3RlZCBydGFnXHUwMDNlPTEgaWNtcD0wKVwmIzM0O1xuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIFRFU1QgNTogU0lNUExFIFBPSU5ULVRPLVBPSU5UIChubyBib25kKVxuJiM0MzsjXG4mIzQzOyMgU2VsZi1jb250YWluZWQgc2luZ2xlLXBhdGggdG9wb2xvZ3k6IHB1c2ggb24gcDJwX2EwIGVncmVzcywgaW5kaXZpZHVhbFxuJiM0MzsjIHJlY292ZXIgKHdpdGggdGFnLXBvcCkgb24gcDJwX2ExIGluZ3Jlc3MuICBJUCBpcyBhc3NpZ25lZCBkaXJlY3RseSB0byB0aGVcbiYjNDM7IyB2ZXRoIGludGVyZmFjZXMgKG5vIGJvbmQpLlxuJiM0MzsjXG4mIzQzOyMgUGFzcyBjcml0ZXJpYTpcbiYjNDM7IyAgIC0gcGluZyBzdWNjZWVkcyAocmM9MClcbiYjNDM7IyAgIC0gdmV0aF9hMSByZWNvdmVyIHN0YXRzOiBwYXNzZWQgXHUwMDNlPSBQSU5HX0NPVU5ULCBkaXNjYXJkZWQgPSAwXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0Mzt0ZXN0X3NpbXBsZV9wb2ludF90b19wb2ludCgpXG4mIzQzO3tcbiYjNDM7XHRsb2NhbCBwaW5nX3JjPTBcbiYjNDM7XHRsb2NhbCBkdW1wX2ExIHBhc3NlZCBkaXNjYXJkZWRcbiYjNDM7XHRsb2NhbCByZXN1bHQ9XCYjMzQ7cGFzc1wmIzM0O1xuJiM0MztcbiYjNDM7XHQjIENyZWF0ZSBzZWxmLWNvbnRhaW5lZCBwMnAgbmFtZXNwYWNlc1xuJiM0MztcdGlwIG5ldG5zIGFkZCBcJiMzNDskUDJQX05TX1NSQ1wmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGFkZCBcJiMzNDskUDJQX05TX0RTVFwmIzM0O1xuJiM0MztcbiYjNDM7XHRpcCBsaW5rIGFkZCBcJiMzNDskUDJQX1ZFVEhfQTBcJiMzNDsgdHlwZSB2ZXRoIHBlZXIgbmFtZSBcJiMzNDskUDJQX1ZFVEhfQTFcJiMzNDtcbiYjNDM7XHRpcCBsaW5rIHNldCBcJiMzNDskUDJQX1ZFVEhfQTBcJiMzNDsgbmV0bnMgXCYjMzQ7JFAyUF9OU19TUkNcJiMzNDtcbiYjNDM7XHRpcCBsaW5rIHNldCBcJiMzNDskUDJQX1ZFVEhfQTFcJiMzNDsgbmV0bnMgXCYjMzQ7JFAyUF9OU19EU1RcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUDJQX05TX1NSQ1wmIzM0OyBpcCBsaW5rIHNldCBsbyB1cFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFAyUF9OU19TUkNcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JFAyUF9WRVRIX0EwXCYjMzQ7IHVwXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUDJQX05TX1NSQ1wmIzM0OyBpcCBhZGRyIGFkZCBcJiMzNDske0lQX1AyUF9TUkN9LzI0XCYjMzQ7IGRldiBcJiMzNDskUDJQX1ZFVEhfQTBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUDJQX05TX0RTVFwmIzM0OyBpcCBsaW5rIHNldCBsbyB1cFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFAyUF9OU19EU1RcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JFAyUF9WRVRIX0ExXCYjMzQ7IHVwXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUDJQX05TX0RTVFwmIzM0OyBpcCBhZGRyIGFkZCBcJiMzNDske0lQX1AyUF9EU1R9LzI0XCYjMzQ7IGRldiBcJiMzNDskUDJQX1ZFVEhfQTFcJiMzNDtcbiYjNDM7XG4mIzQzO1x0bG9jYWwgbWFjX2EwIG1hY19hMVxuJiM0MztcdG1hY19hMD0kKGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFAyUF9OU19TUkNcJiMzNDsgY2F0IC9zeXMvY2xhc3MvbmV0L1wmIzM0OyRQMlBfVkVUSF9BMFwmIzM0Oy9hZGRyZXNzKVxuJiM0MztcdG1hY19hMT0kKGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFAyUF9OU19EU1RcJiMzNDsgY2F0IC9zeXMvY2xhc3MvbmV0L1wmIzM0OyRQMlBfVkVUSF9BMVwmIzM0Oy9hZGRyZXNzKVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFAyUF9OU19TUkNcJiMzNDsgaXAgbmVpZ2ggYWRkIFwmIzM0OyRJUF9QMlBfRFNUXCYjMzQ7IGxsYWRkciBcJiMzNDskbWFjX2ExXCYjMzQ7IGRldiBcJiMzNDskUDJQX1ZFVEhfQTBcJiMzNDtcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRQMlBfTlNfRFNUXCYjMzQ7IGlwIG5laWdoIGFkZCBcJiMzNDskSVBfUDJQX1NSQ1wmIzM0OyBsbGFkZHIgXCYjMzQ7JG1hY19hMFwmIzM0OyBkZXYgXCYjMzQ7JFAyUF9WRVRIX0ExXCYjMzQ7XG4mIzQzO1xuJiM0MztcdCMgdmV0aF9hMCBlZ3Jlc3M6IHB1c2ggUi1UQUdcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRQMlBfTlNfU1JDXCYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2IFwmIzM0OyRQMlBfVkVUSF9BMFwmIzM0OyBjbHNhY3RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRQMlBfTlNfU1JDXCYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiBcJiMzNDskUDJQX1ZFVEhfQTBcJiMzNDsgZWdyZXNzIFxcXG4mIzQzO1x0XHRwcm90b2NvbCBpcCBmbG93ZXIgc2tpcF9odyBcXFxuJiM0MztcdFx0YWN0aW9uIGZyZXIgcHVzaCBpbmRleCAkSURYX1BVU0hcbiYjNDM7XG4mIzQzO1x0IyB2ZXRoX2ExIGluZ3Jlc3M6IGluZGl2aWR1YWwgcmVjb3ZlciB3aXRoIHRhZy1wb3BcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRQMlBfTlNfRFNUXCYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2IFwmIzM0OyRQMlBfVkVUSF9BMVwmIzM0OyBjbHNhY3RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRQMlBfTlNfRFNUXCYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiBcJiMzNDskUDJQX1ZFVEhfQTFcJiMzNDsgaW5ncmVzcyBcXFxuJiM0MztcdFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXG4mIzQzO1x0XHRhY3Rpb24gZnJlciByZWNvdmVyIGluZGl2aWR1YWwgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcXFxuJiM0MztcdFx0XHRyZXNldC10aW1lIDIwMDAgdGFnLXBvcCBpbmRleCAkSURYX1AyUF9SQ1ZZXG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFAyUF9OU19TUkNcJiMzNDsgXFxcbiYjNDM7XHRcdCRQSU5HIC1jIFwmIzM0OyRQSU5HX0NPVU5UXCYjMzQ7IC1XIFwmIzM0OyRQSU5HX1RJTUVPVVRcJiMzNDsgLWkgMC4yIC1xIFxcXG4mIzQzO1x0XHRcJiMzNDskSVBfUDJQX0RTVFwmIzM0OyBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgfHwgcGluZ19yYz0kP1xuJiM0MztcbiYjNDM7XHRkdW1wX2ExPSQoaXAgbmV0bnMgZXhlYyBcJiMzNDskUDJQX05TX0RTVFwmIzM0OyBcXFxuJiM0MztcdFx0JFRDIC1zIGZpbHRlciBzaG93IGRldiBcJiMzNDskUDJQX1ZFVEhfQTFcJiMzNDsgaW5ncmVzcyAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MztcbiYjNDM7XHQjIFRlYXJkb3duIHAycCB0b3BvbG9neVxuJiM0MztcdGZvciBkZXYgaW4gXCYjMzQ7JFAyUF9WRVRIX0EwXCYjMzQ7OyBkb1xuJiM0MztcdFx0aXAgbmV0bnMgZXhlYyBcJiMzNDskUDJQX05TX1NSQ1wmIzM0OyAkVEMgcWRpc2MgZGVsIGRldiBcJiMzNDskZGV2XCYjMzQ7IGNsc2FjdCBcXFxuJiM0MztcdFx0XHQyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbiYjNDM7XHRkb25lXG4mIzQzO1x0Zm9yIGRldiBpbiBcJiMzNDskUDJQX1ZFVEhfQTFcJiMzNDs7IGRvXG4mIzQzO1x0XHRpcCBuZXRucyBleGVjIFwmIzM0OyRQMlBfTlNfRFNUXCYjMzQ7ICRUQyBxZGlzYyBkZWwgZGV2IFwmIzM0OyRkZXZcJiMzNDsgY2xzYWN0IFxcXG4mIzQzO1x0XHRcdDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGRvbmVcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRQMlBfTlNfU1JDXCYjMzQ7ICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFAyUF9OU19EU1RcJiMzNDsgJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXIgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4mIzQzO1x0aXAgbmV0bnMgZGVsIFwmIzM0OyRQMlBfTlNfU1JDXCYjMzQ7IDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGlwIG5ldG5zIGRlbCBcJiMzNDskUDJQX05TX0RTVFwmIzM0OyAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbiYjNDM7XG4mIzQzO1x0cGFzc2VkPSQodGNfc3RhdCAgICBcJiMzNDskZHVtcF9hMVwmIzM0OyBcJiMzNDtwYXNzZWRcJiMzNDspXG4mIzQzO1x0ZGlzY2FyZGVkPSQodGNfc3RhdCBcJiMzNDskZHVtcF9hMVwmIzM0OyBcJiMzNDtkaXNjYXJkZWRcJiMzNDspXG4mIzQzO1x0bG9jYWwgdGFnbGVzc1xuJiM0MztcdHRhZ2xlc3M9JCh0Y19zdGF0ICAgXCYjMzQ7JGR1bXBfYTFcJiMzNDsgXCYjMzQ7dGFnbGVzc1wmIzM0OylcbiYjNDM7XHRkaXNjYXJkZWQ9JCgoZGlzY2FyZGVkIC0gdGFnbGVzcykpXG4mIzQzO1xuJiM0MztcdGVjaG8gXCYjMzQ7IyBwMnA6IHBpbmdfcmM9JHBpbmdfcmMgcGFzc2VkPSRwYXNzZWQgZGlzY2FyZGVkPSRkaXNjYXJkZWRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0WyBcJiMzNDskcGluZ19yY1wmIzM0OyAgIC1lcSAwIF0gICAgICAgICAgICB8fCByZXN1bHQ9XCYjMzQ7ZmFpbFwmIzM0O1xuJiM0MztcdFsgXCYjMzQ7JHBhc3NlZFwmIzM0OyAgICAtZ2UgXCYjMzQ7JFBJTkdfQ09VTlRcJiMzNDsgXSB8fCByZXN1bHQ9XCYjMzQ7ZmFpbFwmIzM0O1xuJiM0MztcdFsgXCYjMzQ7JGRpc2NhcmRlZFwmIzM0OyAtZXEgMCBdICAgICAgICAgICAgfHwgcmVzdWx0PVwmIzM0O2ZhaWxcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aWYgWyBcJiMzNDskcmVzdWx0XCYjMzQ7ID0gXCYjMzQ7cGFzc1wmIzM0OyBdOyB0aGVuXG4mIzQzO1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7c2ltcGxlIHAycDogcGluZyBPSywgcGFzc2VkPSRwYXNzZWQgZGlzY2FyZGVkPSRkaXNjYXJkZWRcJiMzNDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7c2ltcGxlIHAycDogcGluZ19yYz0kcGluZ19yYyBwYXNzZWQ9JHBhc3NlZCBkaXNjYXJkZWQ9JGRpc2NhcmRlZFwmIzM0O1xuJiM0MztcdGZpXG4mIzQzO31cbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIFRFU1QgNjogUkVMQVkgRTJFIChzZWxmLWNvbnRhaW5lZCwgbm8gYm9uZClcbiYjNDM7I1xuJiM0MzsjIFRhbGtlciBzZW5kcyBWTEFOLTEwMCBmcmFtZXMgaW50byBicmlkZ2UwIChzZXF1ZW5jZSBnZW5lcmF0b3IpLiAgQnJpZGdlMFxuJiM0MzsjIHB1c2hlcyBhbiBSLVRBRyBhbmQgcmVwbGljYXRlcyB0byB0d28gcmVkdW5kYW50IHBhdGhzLiAgQnJpZGdlMSAoZWxpbWluYXRvcilcbiYjNDM7IyByZWNvdmVycyAoc2hhcmVkLCB0YWctcG9wKSBvbiBib3RoIHBhdGhzIGFuZCBmb3J3YXJkcyB0aGUgZGVkdXBsaWNhdGVkIGZyYW1lXG4mIzQzOyMgdG8gdGhlIGxpc3RlbmVyLlxuJiM0MzsjXG4mIzQzOyMgVG9wb2xvZ3k6XG4mIzQzOyMgICBuc190YWxrZXIgKHRhbGtlcl9ldGguMTAwKSAtLSB0YWxrZXJfZXRoL2JyMF91cGxpbmtcbiYjNDM7IyAgICAgICAtLSBicmlkZ2UwIChicl9yMCkgLSYjNDM7LSBicjBfc3dwMC9icjFfc3dwMCAtJiM0MztcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXC0gYnIwX3N3cDEvYnIxX3N3cDEgLSYjNDM7XG4mIzQzOyMgICAgICAgLS0gYnJpZGdlMSAoYnJfcjEpIC0tIGJyMV9kb3dubGluay9saXN0ZW5lcl9ldGggLS0gbnNfbGlzdGVuZXJcbiYjNDM7I1xuJiM0MzsjIEZSRVIgcnVsZXM6XG4mIzQzOyMgICBicmlkZ2UwIC8gYnIwX3VwbGluayBpbmdyZXNzICA6IHB1c2ggaWR4PTUwLCByZWRpcmVjdCBicjBfc3dwMCwgbWlycm9yIGJyMF9zd3AxXG4mIzQzOyMgICBicmlkZ2UxIC8gYnIxX3N3cDAgaW5ncmVzcyAgICA6IHJlY292ZXIgKHNoYXJlZCwgdGFnLXBvcCkgaWR4PTYwLCByZWRpcmVjdCBicjFfZG93bmxpbmtcbiYjNDM7IyAgIGJyaWRnZTEgLyBicjFfc3dwMSBpbmdyZXNzICAgIDogcmVjb3ZlciBpZHg9NjAgKGJpbmQgc2FtZSksIHJlZGlyZWN0IGJyMV9kb3dubGlua1xuJiM0MzsjICAgYnJpZGdlMSAvIGJyMV9kb3dubGluayBpbmdyZXNzOiByZWRpcmVjdCBicjFfc3dwMCAocmVwbHkgcGF0aCwgYnlwYXNzIEZEQilcbiYjNDM7I1xuJiM0MzsjIFBhc3MgY3JpdGVyaWE6XG4mIzQzOyMgICAtIHBpbmcgZnJvbSBuc190YWxrZXIgdG8gbnNfbGlzdGVuZXIgc3VjY2VlZHMgKHJjPTApXG4mIzQzOyMgICAtIHRjcGR1bXAgb24gbGlzdGVuZXIgY2FwdHVyZXMgZXhhY3RseSBQSU5HX0NPVU5UIElDTVAgZWNoby1yZXF1ZXN0IGZyYW1lc1xuJiM0MzsjICAgLSBicjFfc3dwMCB0YyBzdGF0czogcGFzc2VkIFx1MDAzZT0gUElOR19DT1VOVCwgZGlzY2FyZGVkIFx1MDAzZT0gUElOR19DT1VOVFxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7dGVhcmRvd25fcmVsYXlfdGMoKVxuJiM0Mzt7XG4mIzQzO1x0Zm9yIGRldiBpbiBcJiMzNDskUl9CUjBfVVBMSU5LXCYjMzQ7OyBkb1xuJiM0MztcdFx0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7ICRUQyBxZGlzYyBkZWwgZGV2IFwmIzM0OyRkZXZcJiMzNDsgY2xzYWN0IFxcXG4mIzQzO1x0XHRcdDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGRvbmVcbiYjNDM7XHRmb3IgZGV2IGluIFwmIzM0OyRSX0JSMV9TV1AwXCYjMzQ7IFwmIzM0OyRSX0JSMV9TV1AxXCYjMzQ7IFwmIzM0OyRSX0JSMV9ET1dOTElOS1wmIzM0OzsgZG9cbiYjNDM7XHRcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyAkVEMgcWRpc2MgZGVsIGRldiBcJiMzNDskZGV2XCYjMzQ7IGNsc2FjdCBcXFxuJiM0MztcdFx0XHQyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbiYjNDM7XHRkb25lXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7ICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbiYjNDM7fVxuJiM0MztcbiYjNDM7dGVzdF9yZWxheV9lMmUoKVxuJiM0Mzt7XG4mIzQzO1x0bG9jYWwgcGluZ19yYz0wXG4mIzQzO1x0bG9jYWwgZHVtcF9yMXN3cDBcbiYjNDM7XHRsb2NhbCB0b3RhbF9wYXNzZWQgdG90YWxfZGlzY2FyZGVkXG4mIzQzO1x0bG9jYWwgcmVzdWx0PVwmIzM0O3Bhc3NcJiMzNDtcbiYjNDM7XHRsb2NhbCBuc1xuJiM0MztcbiYjNDM7XHRmb3IgbnMgaW4gXCYjMzQ7JFJfTlNfVEFMS0VSXCYjMzQ7IFwmIzM0OyRSX05TX0JSSURHRTBcJiMzNDsgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyBcJiMzNDskUl9OU19MSVNURU5FUlwmIzM0OzsgZG9cbiYjNDM7XHRcdGlwIG5ldG5zIGFkZCBcJiMzNDskbnNcJiMzNDsgfHwge1xuJiM0MztcdFx0XHRlY2hvIFwmIzM0OyMgcmVsYXkgZTJlOiBmYWlsZWQgdG8gY3JlYXRlIG5ldG5zICRuc1wmIzM0OyBcdTAwM2VcdTAwMjYyXG4mIzQzO1x0XHRcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcCBcJiMzNDtyZWxheSBlMmU6IG5ldG5zIHNldHVwIGZhaWxlZFwmIzM0O1xuJiM0MztcdFx0XHRyZXR1cm5cbiYjNDM7XHRcdH1cbiYjNDM7XHRkb25lXG4mIzQzO1xuJiM0MztcdGlwIGxpbmsgYWRkIFwmIzM0OyRSX1RBTEtFUl9FVEhcJiMzNDsgICB0eXBlIHZldGggcGVlciBuYW1lIFwmIzM0OyRSX0JSMF9VUExJTktcJiMzNDtcbiYjNDM7XHRpcCBsaW5rIGFkZCBcJiMzNDskUl9CUjBfU1dQMFwmIzM0OyAgICAgdHlwZSB2ZXRoIHBlZXIgbmFtZSBcJiMzNDskUl9CUjFfU1dQMFwmIzM0O1xuJiM0MztcdGlwIGxpbmsgYWRkIFwmIzM0OyRSX0JSMF9TV1AxXCYjMzQ7ICAgICB0eXBlIHZldGggcGVlciBuYW1lIFwmIzM0OyRSX0JSMV9TV1AxXCYjMzQ7XG4mIzQzO1x0aXAgbGluayBhZGQgXCYjMzQ7JFJfQlIxX0RPV05MSU5LXCYjMzQ7IHR5cGUgdmV0aCBwZWVyIG5hbWUgXCYjMzQ7JFJfTElTVEVORVJfRVRIXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIGxpbmsgc2V0IFwmIzM0OyRSX1RBTEtFUl9FVEhcJiMzNDsgICBuZXRucyBcJiMzNDskUl9OU19UQUxLRVJcJiMzNDtcbiYjNDM7XHRpcCBsaW5rIHNldCBcJiMzNDskUl9CUjBfVVBMSU5LXCYjMzQ7ICAgbmV0bnMgXCYjMzQ7JFJfTlNfQlJJREdFMFwmIzM0O1xuJiM0MztcdGlwIGxpbmsgc2V0IFwmIzM0OyRSX0JSMF9TV1AwXCYjMzQ7ICAgICBuZXRucyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7XG4mIzQzO1x0aXAgbGluayBzZXQgXCYjMzQ7JFJfQlIwX1NXUDFcJiMzNDsgICAgIG5ldG5zIFwmIzM0OyRSX05TX0JSSURHRTBcJiMzNDtcbiYjNDM7XHRpcCBsaW5rIHNldCBcJiMzNDskUl9CUjFfU1dQMFwmIzM0OyAgICAgbmV0bnMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0O1xuJiM0MztcdGlwIGxpbmsgc2V0IFwmIzM0OyRSX0JSMV9TV1AxXCYjMzQ7ICAgICBuZXRucyBcJiMzNDskUl9OU19CUklER0UxXCYjMzQ7XG4mIzQzO1x0aXAgbGluayBzZXQgXCYjMzQ7JFJfQlIxX0RPV05MSU5LXCYjMzQ7IG5ldG5zIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDtcbiYjNDM7XHRpcCBsaW5rIHNldCBcJiMzNDskUl9MSVNURU5FUl9FVEhcJiMzNDsgbmV0bnMgXCYjMzQ7JFJfTlNfTElTVEVORVJcJiMzNDtcbiYjNDM7XG4mIzQzO1x0bG9jYWwgbnNfZGV2XG4mIzQzO1x0Zm9yIG5zX2RldiBpbiBcXFxuJiM0MztcdFx0XCYjMzQ7JFJfTlNfVEFMS0VSOiRSX1RBTEtFUl9FVEhcJiMzNDsgXFxcbiYjNDM7XHRcdFwmIzM0OyRSX05TX0JSSURHRTA6JFJfQlIwX1VQTElOS1wmIzM0OyBcJiMzNDskUl9OU19CUklER0UwOiRSX0JSMF9TV1AwXCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDskUl9OU19CUklER0UwOiRSX0JSMF9TV1AxXCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDskUl9OU19CUklER0UxOiRSX0JSMV9TV1AwXCYjMzQ7IFwmIzM0OyRSX05TX0JSSURHRTE6JFJfQlIxX1NXUDFcJiMzNDsgXFxcbiYjNDM7XHRcdFwmIzM0OyRSX05TX0JSSURHRTE6JFJfQlIxX0RPV05MSU5LXCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDskUl9OU19MSVNURU5FUjokUl9MSVNURU5FUl9FVEhcJiMzNDs7IGRvXG4mIzQzO1x0XHRsb2NhbCBfbnM9XCYjMzQ7JHtuc19kZXYlJToqfVwmIzM0O1xuJiM0MztcdFx0bG9jYWwgX2Rldj1cJiMzNDske25zX2RldiMjKjp9XCYjMzQ7XG4mIzQzO1x0XHRpcCBuZXRucyBleGVjIFwmIzM0OyRfbnNcJiMzNDsgaXAgbGluayBzZXQgbG8gdXBcbiYjNDM7XHRcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JF9uc1wmIzM0OyBpcCBsaW5rIHNldCBcJiMzNDskX2RldlwmIzM0OyB1cFxuJiM0MztcdGRvbmVcbiYjNDM7XG4mIzQzO1x0IyBicmlkZ2UwOiBzZXF1ZW5jZSBnZW5lcmF0b3IsIFZMQU4gZmlsdGVyaW5nXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7IGlwIGxpbmsgYWRkIG5hbWUgXCYjMzQ7JFJfQlIwXCYjMzQ7IHR5cGUgYnJpZGdlIHZsYW5fZmlsdGVyaW5nIDFcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTBcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JFJfQlIwXCYjMzQ7IHVwXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7IGlwIGxpbmsgc2V0IFwmIzM0OyRSX0JSMF9VUExJTktcJiMzNDsgbWFzdGVyIFwmIzM0OyRSX0JSMFwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMFwmIzM0OyBpcCBsaW5rIHNldCBcJiMzNDskUl9CUjBfU1dQMFwmIzM0OyBtYXN0ZXIgXCYjMzQ7JFJfQlIwXCYjMzQ7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7IGlwIGxpbmsgc2V0IFwmIzM0OyRSX0JSMF9TV1AxXCYjMzQ7IG1hc3RlciBcJiMzNDskUl9CUjBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7IGJyaWRnZSB2bGFuIGFkZCBkZXYgXCYjMzQ7JFJfQlIwX1VQTElOS1wmIzM0OyB2aWQgXCYjMzQ7JFJfVkxBTlwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMFwmIzM0OyBicmlkZ2UgdmxhbiBhZGQgZGV2IFwmIzM0OyRSX0JSMF9TV1AwXCYjMzQ7IHZpZCBcJiMzNDskUl9WTEFOXCYjMzQ7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UwXCYjMzQ7IGJyaWRnZSB2bGFuIGRlbCBkZXYgXCYjMzQ7JFJfQlIwX1NXUDFcJiMzNDsgdmlkIDFcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTBcJiMzNDsgYnJpZGdlIHZsYW4gYWRkIGRldiBcJiMzNDskUl9CUjBfU1dQMVwmIzM0OyBcXFxuJiM0MztcdFx0dmlkIFwmIzM0OyRSX1ZMQU5cJiMzNDsgcHZpZCB1bnRhZ2dlZFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMFwmIzM0OyBicmlkZ2UgbGluayBzZXQgZGV2IFwmIzM0OyRSX0JSMF9TV1AwXCYjMzQ7IGxlYXJuaW5nIG9mZlxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMFwmIzM0OyBicmlkZ2UgbGluayBzZXQgZGV2IFwmIzM0OyRSX0JSMF9TV1AxXCYjMzQ7IGxlYXJuaW5nIG9mZlxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMFwmIzM0OyBicmlkZ2UgdmxhbiBzZXQgZGV2IFwmIzM0OyRSX0JSMF9TV1AwXCYjMzQ7IHZpZCBcJiMzNDskUl9WTEFOXCYjMzQ7IG5vZmxvb2RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTBcJiMzNDsgYnJpZGdlIHZsYW4gc2V0IGRldiBcJiMzNDskUl9CUjBfU1dQMVwmIzM0OyB2aWQgXCYjMzQ7JFJfVkxBTlwmIzM0OyBub2Zsb29kXG4mIzQzO1xuJiM0MztcdCMgYnJpZGdlMTogZWxpbWluYXRvciwgVkxBTiBmaWx0ZXJpbmdcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgaXAgbGluayBhZGQgbmFtZSBcJiMzNDskUl9CUjFcJiMzNDsgdHlwZSBicmlkZ2Ugdmxhbl9maWx0ZXJpbmcgMVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyBpcCBsaW5rIHNldCBcJiMzNDskUl9CUjFcJiMzNDsgdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgaXAgbGluayBzZXQgXCYjMzQ7JFJfQlIxX1NXUDBcJiMzNDsgbWFzdGVyIFwmIzM0OyRSX0JSMVwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyBpcCBsaW5rIHNldCBcJiMzNDskUl9CUjFfU1dQMVwmIzM0OyBtYXN0ZXIgXCYjMzQ7JFJfQlIxXCYjMzQ7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UxXCYjMzQ7IGlwIGxpbmsgc2V0IFwmIzM0OyRSX0JSMV9ET1dOTElOS1wmIzM0OyBtYXN0ZXIgXCYjMzQ7JFJfQlIxXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyBicmlkZ2UgdmxhbiBhZGQgZGV2IFwmIzM0OyRSX0JSMV9TV1AwXCYjMzQ7IHZpZCBcJiMzNDskUl9WTEFOXCYjMzQ7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UxXCYjMzQ7IGJyaWRnZSB2bGFuIGRlbCBkZXYgXCYjMzQ7JFJfQlIxX1NXUDFcJiMzNDsgdmlkIDFcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgYnJpZGdlIHZsYW4gYWRkIGRldiBcJiMzNDskUl9CUjFfU1dQMVwmIzM0OyBcXFxuJiM0MztcdFx0dmlkIFwmIzM0OyRSX1ZMQU5cJiMzNDsgcHZpZCB1bnRhZ2dlZFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyBicmlkZ2UgdmxhbiBhZGQgZGV2IFwmIzM0OyRSX0JSMV9ET1dOTElOS1wmIzM0OyB2aWQgXCYjMzQ7JFJfVkxBTlwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyBicmlkZ2UgbGluayBzZXQgZGV2IFwmIzM0OyRSX0JSMV9TV1AwXCYjMzQ7IGxlYXJuaW5nIG9mZlxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyBicmlkZ2UgbGluayBzZXQgZGV2IFwmIzM0OyRSX0JSMV9TV1AxXCYjMzQ7IGxlYXJuaW5nIG9mZlxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfQlJJREdFMVwmIzM0OyBicmlkZ2UgdmxhbiBzZXQgZGV2IFwmIzM0OyRSX0JSMV9TV1AwXCYjMzQ7IHZpZCBcJiMzNDskUl9WTEFOXCYjMzQ7IG5vZmxvb2RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgYnJpZGdlIHZsYW4gc2V0IGRldiBcJiMzNDskUl9CUjFfU1dQMVwmIzM0OyB2aWQgXCYjMzQ7JFJfVkxBTlwmIzM0OyBub2Zsb29kXG4mIzQzO1xuJiM0MztcdCMgbnNfdGFsa2VyOiBWTEFOIHN1Yi1pbnRlcmZhY2VcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX1RBTEtFUlwmIzM0OyBpcCBsaW5rIGFkZCBsaW5rIFwmIzM0OyRSX1RBTEtFUl9FVEhcJiMzNDsgXFxcbiYjNDM7XHRcdG5hbWUgXCYjMzQ7JHtSX1RBTEtFUl9FVEh9LiR7Ul9WTEFOfVwmIzM0OyB0eXBlIHZsYW4gaWQgXCYjMzQ7JFJfVkxBTlwmIzM0O1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfVEFMS0VSXCYjMzQ7IGlwIGxpbmsgc2V0IFwmIzM0OyR7Ul9UQUxLRVJfRVRIfS4ke1JfVkxBTn1cJiMzNDsgdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX1RBTEtFUlwmIzM0OyBpcCBhZGRyIGFkZCBcJiMzNDske1JfSVBfVEFMS0VSfS8yNFwmIzM0OyBcXFxuJiM0MztcdFx0ZGV2IFwmIzM0OyR7Ul9UQUxLRVJfRVRIfS4ke1JfVkxBTn1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyBuc19saXN0ZW5lcjogVkxBTiBzdWItaW50ZXJmYWNlXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19MSVNURU5FUlwmIzM0OyBpcCBsaW5rIGFkZCBsaW5rIFwmIzM0OyRSX0xJU1RFTkVSX0VUSFwmIzM0OyBcXFxuJiM0MztcdFx0bmFtZSBcJiMzNDske1JfTElTVEVORVJfRVRIfS4ke1JfVkxBTn1cJiMzNDsgdHlwZSB2bGFuIGlkIFwmIzM0OyRSX1ZMQU5cJiMzNDtcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0xJU1RFTkVSXCYjMzQ7IGlwIGxpbmsgc2V0IFwmIzM0OyR7Ul9MSVNURU5FUl9FVEh9LiR7Ul9WTEFOfVwmIzM0OyB1cFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfTElTVEVORVJcJiMzNDsgaXAgYWRkciBhZGQgXCYjMzQ7JHtSX0lQX0xJU1RFTkVSfS8yNFwmIzM0OyBcXFxuJiM0MztcdFx0ZGV2IFwmIzM0OyR7Ul9MSVNURU5FUl9FVEh9LiR7Ul9WTEFOfVwmIzM0O1xuJiM0MztcbiYjNDM7XHQjIFN0YXRpYyBBUlAgKFZMQU4gMTAwIGZsb29kaW5nIGlzIGRpc2FibGVkKVxuJiM0MztcdGxvY2FsIG1hY190YWxrZXIgbWFjX2xpc3RlbmVyXG4mIzQzO1x0bWFjX3RhbGtlcj0kKGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfVEFMS0VSXCYjMzQ7IFxcXG4mIzQzO1x0XHRjYXQgL3N5cy9jbGFzcy9uZXQvXCYjMzQ7JHtSX1RBTEtFUl9FVEh9LiR7Ul9WTEFOfVwmIzM0Oy9hZGRyZXNzKVxuJiM0MztcdG1hY19saXN0ZW5lcj0kKGlwIG5ldG5zIGV4ZWMgXCYjMzQ7JFJfTlNfTElTVEVORVJcJiMzNDsgXFxcbiYjNDM7XHRcdGNhdCAvc3lzL2NsYXNzL25ldC9cJiMzNDske1JfTElTVEVORVJfRVRIfS4ke1JfVkxBTn1cJiMzNDsvYWRkcmVzcylcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX1RBTEtFUlwmIzM0OyAgIGlwIG5laWdoIGFkZCBcJiMzNDskUl9JUF9MSVNURU5FUlwmIzM0OyBcXFxuJiM0MztcdFx0bGxhZGRyIFwmIzM0OyRtYWNfbGlzdGVuZXJcJiMzNDsgZGV2IFwmIzM0OyR7Ul9UQUxLRVJfRVRIfS4ke1JfVkxBTn1cJiMzNDtcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0xJU1RFTkVSXCYjMzQ7IGlwIG5laWdoIGFkZCBcJiMzNDskUl9JUF9UQUxLRVJcJiMzNDsgXFxcbiYjNDM7XHRcdGxsYWRkciBcJiMzNDskbWFjX3RhbGtlclwmIzM0OyAgIGRldiBcJiMzNDske1JfTElTVEVORVJfRVRIfS4ke1JfVkxBTn1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyBicmlkZ2UwIC8gYnIwX3VwbGluayBpbmdyZXNzOiBwdXNoIFItVEFHIHRoZW4gcmVwbGljYXRlIHRvIGJvdGggcmVkdW5kYW50IHBhdGhzLlxuJiM0MztcdCMgbWlycm9yIG11c3QgY29tZSBiZWZvcmUgcmVkaXJlY3QgYmVjYXVzZSByZWRpcmVjdCBpcyBhIHRlcm1pbmF0aW5nIGFjdGlvbi5cbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTBcJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgXCYjMzQ7JFJfQlIwX1VQTElOS1wmIzM0OyBjbHNhY3RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTBcJiMzNDsgJFRDIGZpbHRlciBhZGQgZGV2IFwmIzM0OyRSX0JSMF9VUExJTktcJiMzNDsgaW5ncmVzcyBcXFxuJiM0MztcdFx0cHJvdG9jb2wgODAyLjFRIGZsb3dlciBza2lwX2h3IHZsYW5faWQgXCYjMzQ7JFJfVkxBTlwmIzM0OyBcXFxuJiM0MztcdFx0YWN0aW9uIGZyZXIgcHVzaCBpbmRleCAkSURYX1JFTEFZX1BVU0ggXFxcbiYjNDM7XHRcdGFjdGlvbiBtaXJyZWQgZWdyZXNzIG1pcnJvciAgZGV2IFwmIzM0OyRSX0JSMF9TV1AxXCYjMzQ7IFxcXG4mIzQzO1x0XHRhY3Rpb24gbWlycmVkIGVncmVzcyByZWRpcmVjdCBkZXYgXCYjMzQ7JFJfQlIwX1NXUDBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyBicmlkZ2UxIC8gYnIxX3N3cDAgaW5ncmVzczogY3JlYXRlIHNoYXJlZCByZWNvdmVyIGFjdGlvbiAodGFnLXBvcClcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgXCYjMzQ7JFJfQlIxX1NXUDBcJiMzNDsgY2xzYWN0XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UxXCYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiBcJiMzNDskUl9CUjFfU1dQMFwmIzM0OyBpbmdyZXNzIFxcXG4mIzQzO1x0XHRwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXFxcbiYjNDM7XHRcdGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcXFxuJiM0MztcdFx0XHRyZXNldC10aW1lIDIwMDAgdGFnLXBvcCBpbmRleCAkSURYX1JFTEFZX1JDVlkgXFxcbiYjNDM7XHRcdGFjdGlvbiBtaXJyZWQgZWdyZXNzIHJlZGlyZWN0IGRldiBcJiMzNDskUl9CUjFfRE9XTkxJTktcJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyBicmlkZ2UxIC8gYnIxX3N3cDEgaW5ncmVzczogYmluZCB0byB0aGUgc2FtZSBzaGFyZWQgcmVjb3ZlciBhY3Rpb25cbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgXCYjMzQ7JFJfQlIxX1NXUDFcJiMzNDsgY2xzYWN0XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UxXCYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiBcJiMzNDskUl9CUjFfU1dQMVwmIzM0OyBpbmdyZXNzIFxcXG4mIzQzO1x0XHRwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXFxcbiYjNDM7XHRcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggJElEWF9SRUxBWV9SQ1ZZIFxcXG4mIzQzO1x0XHRhY3Rpb24gbWlycmVkIGVncmVzcyByZWRpcmVjdCBkZXYgXCYjMzQ7JFJfQlIxX0RPV05MSU5LXCYjMzQ7XG4mIzQzO1xuJiM0MztcdCMgYnJpZGdlMSAvIGJyMV9kb3dubGluayBpbmdyZXNzOiByZWRpcmVjdCBWTEFOIDEwMCByZXBsaWVzIGRpcmVjdGx5IHRvIGJyMV9zd3AwXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19CUklER0UxXCYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2IFwmIzM0OyRSX0JSMV9ET1dOTElOS1wmIzM0OyBjbHNhY3RcbiYjNDM7XHRpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgJFRDIGZpbHRlciBhZGQgZGV2IFwmIzM0OyRSX0JSMV9ET1dOTElOS1wmIzM0OyBpbmdyZXNzIFxcXG4mIzQzO1x0XHRwcm90b2NvbCA4MDIuMVEgZmxvd2VyIHNraXBfaHcgdmxhbl9pZCBcJiMzNDskUl9WTEFOXCYjMzQ7IFxcXG4mIzQzO1x0XHRhY3Rpb24gbWlycmVkIGVncmVzcyByZWRpcmVjdCBkZXYgXCYjMzQ7JFJfQlIxX1NXUDBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0IyBDYXB0dXJlIElDTVAgZWNoby1yZXF1ZXN0cyBvbiBsaXN0ZW5lcl9ldGguVkxBTiB0byB2ZXJpZnkgZXhhY3RseVxuJiM0MztcdCMgUElOR19DT1VOVCBkZWR1cGxpY2F0ZWQgZnJhbWVzIHJlYWNoIHRoZSBsaXN0ZW5lciBhZnRlciByZWNvdmVyeS5cbiYjNDM7XHRsb2NhbCBwY2FwIGNhcF9jb3VudFxuJiM0MztcdHBjYXA9JChta3RlbXAgL3RtcC9mcmVyX3JlbGF5X1hYWFhYWC5wY2FwKVxuJiM0MztcdGNhcHR1cmVfc3RhcnRfb24gXCYjMzQ7JFJfTlNfTElTVEVORVJcJiMzNDsgXCYjMzQ7JHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59XCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDskcGNhcFwmIzM0OyBcJiMzNDtpY21wW2ljbXB0eXBlXSA9PSBpY21wLWVjaG9cJiMzNDtcbiYjNDM7XG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBcJiMzNDskUl9OU19UQUxLRVJcJiMzNDsgXFxcbiYjNDM7XHRcdCRQSU5HIC1jIFwmIzM0OyRQSU5HX0NPVU5UXCYjMzQ7IC1XIFwmIzM0OyRQSU5HX1RJTUVPVVRcJiMzNDsgLWkgMC4yIC1xIFxcXG4mIzQzO1x0XHRcJiMzNDskUl9JUF9MSVNURU5FUlwmIzM0OyBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgfHwgcGluZ19yYz0kP1xuJiM0MztcbiYjNDM7XHRjYXB0dXJlX3N0b3BcbiYjNDM7XHRjYXBfY291bnQ9JChjYXB0dXJlX2NvdW50X29uIFwmIzM0OyRSX05TX0xJU1RFTkVSXCYjMzQ7IFwmIzM0OyRwY2FwXCYjMzQ7KVxuJiM0MztcdHJtIC1mIFwmIzM0OyRwY2FwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGR1bXBfYnIxX3N3cDA9JChpcCBuZXRucyBleGVjIFwmIzM0OyRSX05TX0JSSURHRTFcJiMzNDsgXFxcbiYjNDM7XHRcdCRUQyAtcyBmaWx0ZXIgc2hvdyBkZXYgXCYjMzQ7JFJfQlIxX1NXUDBcJiMzNDsgaW5ncmVzcyAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MztcbiYjNDM7XHR0ZWFyZG93bl9yZWxheV90Y1xuJiM0MztcdGZvciBucyBpbiBcJiMzNDskUl9OU19UQUxLRVJcJiMzNDsgXCYjMzQ7JFJfTlNfQlJJREdFMFwmIzM0OyBcJiMzNDskUl9OU19CUklER0UxXCYjMzQ7IFwmIzM0OyRSX05TX0xJU1RFTkVSXCYjMzQ7OyBkb1xuJiM0MztcdFx0aXAgbmV0bnMgZGVsIFwmIzM0OyRuc1wmIzM0OyAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbiYjNDM7XHRkb25lXG4mIzQzO1xuJiM0MztcdHRvdGFsX3Bhc3NlZD0kKHRjX3N0YXQgICAgXCYjMzQ7JGR1bXBfYnIxX3N3cDBcJiMzNDsgXCYjMzQ7cGFzc2VkXCYjMzQ7KVxuJiM0MztcdHRvdGFsX2Rpc2NhcmRlZD0kKHRjX3N0YXQgXCYjMzQ7JGR1bXBfYnIxX3N3cDBcJiMzNDsgXCYjMzQ7ZGlzY2FyZGVkXCYjMzQ7KVxuJiM0MztcdGxvY2FsIHRhZ2xlc3NcbiYjNDM7XHR0YWdsZXNzPSQodGNfc3RhdCAgICAgICAgIFwmIzM0OyRkdW1wX2JyMV9zd3AwXCYjMzQ7IFwmIzM0O3RhZ2xlc3NcJiMzNDspXG4mIzQzO1x0dG90YWxfZGlzY2FyZGVkPSQoKHRvdGFsX2Rpc2NhcmRlZCAtIHRhZ2xlc3MpKVxuJiM0MztcbiYjNDM7XHRlY2hvIFwmIzM0OyMgcmVsYXkgZTJlOiBwaW5nX3JjPSRwaW5nX3JjIGNhcD0kY2FwX2NvdW50XCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDtwYXNzZWQ9JHRvdGFsX3Bhc3NlZCBkaXNjYXJkZWQ9JHRvdGFsX2Rpc2NhcmRlZFwmIzM0O1xuJiM0MztcbiYjNDM7XHRbIFwmIzM0OyRwaW5nX3JjXCYjMzQ7ICAgICAgICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskY2FwX2NvdW50XCYjMzQ7ICAgICAgIC1lcSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskdG90YWxfcGFzc2VkXCYjMzQ7ICAgIC1nZSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1x0WyBcJiMzNDskdG90YWxfZGlzY2FyZGVkXCYjMzQ7IC1nZSBcJiMzNDskUElOR19DT1VOVFwmIzM0OyBdIHx8IHJlc3VsdD1cJiMzNDtmYWlsXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGlmIFsgXCYjMzQ7JHJlc3VsdFwmIzM0OyA9IFwmIzM0O3Bhc3NcJiMzNDsgXTsgdGhlblxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFxcXG4mIzQzO1x0XHRcdFwmIzM0O3JlbGF5IGUyZTogcGluZyBPSywgY2FwPSRjYXBfY291bnQgXCYjMzQ7IFxcXG4mIzQzO1x0XHRcdFwmIzM0O3Bhc3NlZD0kdG90YWxfcGFzc2VkIGRpc2NhcmRlZD0kdG90YWxfZGlzY2FyZGVkXCYjMzQ7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFxcXG4mIzQzO1x0XHRcdFwmIzM0O3JlbGF5IGUyZTogcGluZ19yYz0kcGluZ19yYyBjYXA9JGNhcF9jb3VudCBcJiMzNDsgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7cGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWRcJiMzNDsgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7KGV4cGVjdGVkIHBpbmcgT0ssIGNhcD0kUElOR19DT1VOVCxcJiMzNDsgXFxcbiYjNDM7XHRcdFx0XCYjMzQ7cGFzc2VkXHUwMDNlPSRQSU5HX0NPVU5ULCBkaXNjYXJkZWRcdTAwM2U9JFBJTkdfQ09VTlQpXCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgTWFpblxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7bWFpbigpXG4mIzQzO3tcbiYjNDM7XHRrc2Z0X3ByaW50X2hlYWRlclxuJiM0MztcdGNoZWNrX3ByZXJlcXVpc2l0ZXNcbiYjNDM7XHRsb2FkX21vZHVsZVxuJiM0MztcdHNldHVwX3RvcG9sb2d5XG4mIzQzO1xuJiM0MztcdGlmICEgY2hlY2tfZnJlcl9hY3Rpb247IHRoZW5cbiYjNDM7XHRcdGtzZnRfc2V0X3BsYW4gXCYjMzQ7JE5VTV9URVNUU1wmIzM0O1xuJiM0MztcdFx0Zm9yIGkgaW4gJChzZXEgMSBcJiMzNDskTlVNX1RFU1RTXCYjMzQ7KTsgZG9cbiYjNDM7XHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwIFxcXG4mIzQzO1x0XHRcdFx0XCYjMzQ7ZnJlciBhY3Rpb24gbm90IGF2YWlsYWJsZSBpbiB0aGlzIGtlcm5lbCAodGVzdCAkaSlcJiMzNDtcbiYjNDM7XHRcdGRvbmVcbiYjNDM7XHRcdGtzZnRfcHJpbnRfY250c1xuJiM0MztcdFx0ZXhpdCBcJiMzNDskS1NGVF9TS0lQXCYjMzQ7XG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0a3NmdF9zZXRfcGxhbiBcJiMzNDskTlVNX1RFU1RTXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHRlc3RfcHVzaF92ZXJpZnlfYm9uZCAgICAgICAgIyBURVNUIDE6IHB1c2ggb24gYTAvYjAsIG5vIHJlY292ZXIsIFItVEFHIG9uIGJvdGggcGF0aHNcbiYjNDM7XHR0ZXN0X3NoYXJlZF9yZWNvdmVyX2JvbmQgICAgICMgVEVTVCAyOiBzaGFyZWQgcmVjb3ZlciwgZGVkdXAsIHBpbmcgc3VjY2VlZHNcbiYjNDM7XHR0ZXN0X2luZGl2aWR1YWxfcmVjb3Zlcl9ib25kICMgVEVTVCAzOiBpbmRpdmlkdWFsIHJlY292ZXIsIG5vIGRlZHVwLCBkb3VibGUgZnJhbWVzXG4mIzQzO1x0dGVzdF9ub190YWdfcG9wX2JvbmQgICAgICAgICAjIFRFU1QgNDogc2hhcmVkIHJlY292ZXIgd2l0aG91dCB0YWctcG9wLCBSLVRBRyBwcmVzZXJ2ZWRcbiYjNDM7XHR0ZXN0X3NpbXBsZV9wb2ludF90b19wb2ludCAgICMgVEVTVCA1OiBzaW5nbGUtcGF0aCBwMnAsIG5vIGJvbmRcbiYjNDM7XHR0ZXN0X3JlbGF5X2UyZSAgICAgICAgICAgICAgICMgVEVTVCA2OiByZWxheSBicmlkZ2UgdG9wb2xvZ3lcbiYjNDM7XG4mIzQzO1x0a3NmdF9wcmludF9jbnRzXG4mIzQzO1xuJiM0MztcdFsgXCYjMzQ7JF9rc2Z0X2ZhaWxcJiMzNDsgLWVxIDAgXSBcdTAwMjZcdTAwMjYga3NmdF9leGl0X3Bhc3MgfHwga3NmdF9leGl0X2ZhaWxcbiYjNDM7fVxuJiM0MztcbiYjNDM7bWFpbiBcJiMzNDskQFwmIzM0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9mcmVyLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvZnJlci5qc29uXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmQ1YmU2YWUxNTZmNzk0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvZnJlci5qc29uXG5AQCAtMCwwICYjNDM7MSw3ODUgQEBcbiYjNDM7W1xuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMDFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtDcmVhdGUgZnJlciBwdXNoIGFjdGlvbiB3aXRoIGRlZmF1bHQgcGFyYW1ldGVyc1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAwMlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0NyZWF0ZSBmcmVyIHB1c2ggYWN0aW9uIHdpdGggZXhwbGljaXQgdGFnLXR5cGUgcnRhZ1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDJcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHB1c2ggdGFnLXR5cGUgcnRhZyBpbmRleCAyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDAzXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBkZWZhdWx0IHBhcmFtZXRlcnNcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdXG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAxMFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTAgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCBbMC05XSYjNDM7IHJlc2V0LXRpbWUgWzAtOV0mIzQzO1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAwNFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0NyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggdmVjdG9yIGFsZ29yaXRobSBleHBsaWNpdFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaW5kZXggMTFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDExIGFsZyB2ZWN0b3JcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMDVcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIG1hdGNoIGFsZ29yaXRobVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyBtYXRjaCBpbmRleCAxMlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTIgYWxnIG1hdGNoXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDA2XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBoaXN0b3J5LWxlbmd0aCAxNlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgaW5kZXggMTNcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxM1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEzIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTZcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMDdcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHJlc2V0LXRpbWUgMjAwMFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgcmVzZXQtdGltZSAyMDAwIGluZGV4IDE0XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTRcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxNCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIFswLTldJiM0MzsgcmVzZXQtdGltZSAyMDAwXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDA4XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCB0YWctcG9wIGZsYWdcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdXG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciB0YWctcG9wIGluZGV4IDE1XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTVcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxNS4qdGFnLXBvcFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAwOVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0NyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggaW5kaXZpZHVhbCBmbGFnXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7ZnJlclwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFtcbiYjNDM7ICAgICAgICBcJiMzNDttb2Rwcm9iZSBhY3RfZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgICAwLFxuJiM0MzsgICAgICAgIDFcbiYjNDM7ICAgICAgXVxuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBpbmRleCAxNlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDE2XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTYuKmluZGl2aWR1YWxcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMTBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHRha2Utbm8tc2VxIGZsYWdcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdXG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciB0YWtlLW5vLXNlcSBpbmRleCAxN1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDE3XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTcuKnRha2Utbm8tc2VxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDExXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBhbGwgcGFyYW1ldGVycyBjb21iaW5lZFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwIHRhZy1wb3AgaW5kaXZpZHVhbCBpbmRleCAyMFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDIwXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMjAgaW5kaXZpZHVhbCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IHJlc2V0LXRpbWUgMTAwMCB0YWctcG9wXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDEyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBtYXRjaCBhbGcgYW5kIGFsbCBmbGFnc1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyBtYXRjaCB0YWtlLW5vLXNlcSB0YWctcG9wIGluZGl2aWR1YWwgaW5kZXggMjFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAyMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDIxIGluZGl2aWR1YWwgYWxnIG1hdGNoIGhpc3RvcnktbGVuZ3RoIFswLTldJiM0MzsgcmVzZXQtdGltZSBbMC05XSYjNDM7IHRhZy1wb3AgdGFrZS1uby1zZXFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMTNcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtTaG93IGZyZXIgcHVzaCBhY3Rpb24gU2VxR2VuIHN0YXRpc3RpY3MgKHplcm8gYWZ0ZXIgY3JlYXRlKVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF0sXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyAtcyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O1NlcUdlbiBwYWNrZXRzOiAwXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDE0XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7U2hvdyBmcmVyIHJlY292ZXIgYWN0aW9uIFN0YXRpc3RpY3MgbGluZSAoemVybyBhZnRlciBjcmVhdGUpXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7ZnJlclwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFtcbiYjNDM7ICAgICAgICBcJiMzNDttb2Rwcm9iZSBhY3RfZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgICAwLFxuJiM0MzsgICAgICAgIDFcbiYjNDM7ICAgICAgXSxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiByZXNldC10aW1lIDEwMDAgdGFnLXBvcCBpbmRleCAxMFwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIC1zIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDtTdGF0aXN0aWNzOiBwYXNzZWQ9MCBkaXNjYXJkZWQ9MCB0YWdsZXNzPTAgb3V0LW9mLW9yZGVyPTAgcm9ndWU9MCBsb3N0PTAgcmVzZXRzPTBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMTVcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtTaG93IGZyZXIgcmVjb3ZlciBhY3Rpb24gU3RhdGlzdGljcyBmaWVsZHMgcHJlc2VudFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF0sXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyAtcyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O1N0YXRpc3RpY3M6IHBhc3NlZD1bMC05XSYjNDM7IGRpc2NhcmRlZD1bMC05XSYjNDM7IHRhZ2xlc3M9WzAtOV0mIzQzOyBvdXQtb2Ytb3JkZXI9WzAtOV0mIzQzOyByb2d1ZT1bMC05XSYjNDM7IGxvc3Q9WzAtOV0mIzQzOyByZXNldHM9WzAtOV0mIzQzO1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAxNlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O1JlcGxhY2UgZnJlciBwdXNoIGFjdGlvbiAoc2FtZSBpbmRleClcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdLFxuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyByZXBsYWNlIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHB1c2ggdGFnLXR5cGUgcnRhZyBpbmRleCAxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDE3XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7UmVwbGFjZSBmcmVyIHJlY292ZXIgYWN0aW9uIGNoYW5naW5nIGFsZ29yaXRobSBmcm9tIHZlY3RvciB0byBtYXRjaFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF0sXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaW5kZXggMTBcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHJlcGxhY2UgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgbWF0Y2ggaW5kZXggMTBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEwIGFsZyBtYXRjaFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAxOFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0RlbGV0ZSBmcmVyIHB1c2ggYWN0aW9uIGJ5IGluZGV4XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7ZnJlclwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFtcbiYjNDM7ICAgICAgICBcJiMzNDttb2Rwcm9iZSBhY3RfZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgICAwLFxuJiM0MzsgICAgICAgIDFcbiYjNDM7ICAgICAgXSxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgZGVsIGFjdGlvbiBmcmVyIGluZGV4IDFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlclwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7ZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAxOVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0ZsdXNoIGFsbCBmcmVyIGFjdGlvbnNcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdLFxuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAxMFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggMTFcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXJcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAyMFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0FkZCBkdXBsaWNhdGUgZnJlciBhY3Rpb24gaW5kZXggZmFpbHMgd2l0aG91dCByZXBsYWNlIGZsYWdcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdLFxuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzI1NVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAyMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0NyZWF0ZSBmcmVyIHB1c2ggYWN0aW9uIHdpdGggY29udGludWUgY29udHJvbCBhY3Rpb25cJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdXG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxIGNvbnRpbnVlXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcHVzaCB0YWctdHlwZSBydGFnIGluZGV4IDEuKmNvbnRyb2wgY29udGludWVcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMjJcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHBpcGUgY29udHJvbCBhY3Rpb25cJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdXG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAxMCBwaXBlXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxMC4qY29udHJvbCBwaXBlXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDIzXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gaGlzdG9yeS1sZW5ndGggbWluaW11bSBib3VuZGFyeSAoMSlcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdXG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDEgaW5kZXggMzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAzMFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDMwIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH0sXG4mIzQzOyAge1xuJiM0MzsgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2ZyZXJfMDAyNFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0NyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIGhpc3RvcnktbGVuZ3RoIG1heGltdW0gYm91bmRhcnkgKDMyKVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF1cbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMzIgaW5kZXggMzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAzMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDMxIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMzJcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMjVcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHJlc2V0LXRpbWUgMCAodGltZXIgZGlzYWJsZWQpXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7ZnJlclwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFtcbiYjNDM7ICAgICAgICBcJiMzNDttb2Rwcm9iZSBhY3RfZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgICAwLFxuJiM0MzsgICAgICAgIDFcbiYjNDM7ICAgICAgXVxuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciByZXNldC10aW1lIDAgaW5kZXggMzJcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAzMlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDMyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggWzAtOV0mIzQzOyByZXNldC10aW1lIDBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMjZcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtMaXN0IGFsbCBmcmVyIGFjdGlvbnMgc2hvd3MgY29ycmVjdCBjb3VudFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF0sXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaW5kZXggMTBcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyBtYXRjaCB0YWctcG9wIGluZGV4IDExXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXJcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7M1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDI3XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7QmluZCBmcmVyIHB1c2ggYWN0aW9uIHRvIGVncmVzcyBjbHNhY3QgZmlsdGVyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7ZnJlclwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFtcbiYjNDM7ICAgICAgICBcJiMzNDttb2Rwcm9iZSBhY3RfZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgICAwLFxuJiM0MzsgICAgICAgIDFcbiYjNDM7ICAgICAgXSxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBkZWwgZnJlcl9kdW1teSAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2lwIGxpbmsgYWRkIGZyZXJfZHVtbXkgdHlwZSBkdW1teVwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBzZXQgZnJlcl9kdW1teSB1cFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgZnJlcl9kdW1teSBjbHNhY3RcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiBmcmVyX2R1bW15IGVncmVzcyBwcm90b2NvbCBpcCBmbG93ZXIgc2tpcF9odyBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtleHBFeGl0Q29kZVwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIGZpbHRlciBzaG93IGRldiBmcmVyX2R1bW15IGVncmVzc1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7ZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiBmcmVyX2R1bW15IGNsc2FjdFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2lwIGxpbmsgZGVsIGZyZXJfZHVtbXlcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMjhcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtCaW5kIGZyZXIgcmVjb3ZlciBhY3Rpb24gdG8gaW5ncmVzcyBjbHNhY3QgZmlsdGVyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7ZnJlclwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFtcbiYjNDM7ICAgICAgICBcJiMzNDttb2Rwcm9iZSBhY3RfZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgICAwLFxuJiM0MzsgICAgICAgIDFcbiYjNDM7ICAgICAgXSxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBkZWwgZnJlcl9kdW1teSAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2lwIGxpbmsgYWRkIGZyZXJfZHVtbXkgdHlwZSBkdW1teVwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBzZXQgZnJlcl9kdW1teSB1cFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgZnJlcl9kdW1teSBjbHNhY3RcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtjbWRVbmRlclRlc3RcJiMzNDs6IFwmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiBmcmVyX2R1bW15IGluZ3Jlc3MgcHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiByZXNldC10aW1lIDEwMDAgdGFnLXBvcCBpbmRleCAxMFwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgZmlsdGVyIHNob3cgZGV2IGZyZXJfZHVtbXkgaW5ncmVzc1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7ZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTAgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiByZXNldC10aW1lIDEwMDBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDsxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgZnJlcl9kdW1teSBjbHNhY3RcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtpcCBsaW5rIGRlbCBmcmVyX2R1bW15XCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDI5XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7U2hhcmUgZnJlciByZWNvdmVyIGFjdGlvbiBhY3Jvc3MgdHdvIGluZ3Jlc3MgZmlsdGVycyAocmVmY291bnQgY2hlY2spXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7ZnJlclwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFtcbiYjNDM7ICAgICAgICBcJiMzNDttb2Rwcm9iZSBhY3RfZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgICAwLFxuJiM0MzsgICAgICAgIDFcbiYjNDM7ICAgICAgXSxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBkZWwgZnJlcl9hIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBkZWwgZnJlcl9iIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBhZGQgZnJlcl9hIHR5cGUgZHVtbXlcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2lwIGxpbmsgYWRkIGZyZXJfYiB0eXBlIGR1bW15XCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtpcCBsaW5rIHNldCBmcmVyX2EgdXBcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2lwIGxpbmsgc2V0IGZyZXJfYiB1cFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgZnJlcl9hIGNsc2FjdFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgZnJlcl9iIGNsc2FjdFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2IGZyZXJfYSBpbmdyZXNzIHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgdGFnLXBvcCBpbmRleCAxMFwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2IGZyZXJfYiBpbmdyZXNzIHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyAtcyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O3JlZiBbMi05XVswLTldKlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiBmcmVyX2EgY2xzYWN0XCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiBmcmVyX2IgY2xzYWN0XCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBkZWwgZnJlcl9hXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtpcCBsaW5rIGRlbCBmcmVyX2JcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtmcmVyIHB1c2ggYWN0aW9uIHJlZmNvdW50IGluY3JlbWVudHMgd2hlbiBib3VuZCB0byBmaWx0ZXJcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtjYXRlZ29yeVwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDthY3Rpb25zXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtmcmVyXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgW1xuJiM0MzsgICAgICAgIFwmIzM0O21vZHByb2JlIGFjdF9mcmVyXCYjMzQ7LFxuJiM0MzsgICAgICAgIDAsXG4mIzQzOyAgICAgICAgMVxuJiM0MzsgICAgICBdLFxuJiM0MzsgICAgICBcJiMzNDtpcCBsaW5rIGRlbCBmcmVyX2R1bW15IDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7aXAgbGluayBhZGQgZnJlcl9kdW1teSB0eXBlIGR1bW15XCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDtpcCBsaW5rIHNldCBmcmVyX2R1bW15IHVwXCYjMzQ7LFxuJiM0MzsgICAgICBcJiMzNDskVEMgcWRpc2MgYWRkIGRldiBmcmVyX2R1bW15IGNsc2FjdFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2IGZyZXJfZHVtbXkgZWdyZXNzIHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O3JlZiBbMi05XVswLTldKlwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiBmcmVyX2R1bW15IGNsc2FjdFwmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2lwIGxpbmsgZGVsIGZyZXJfZHVtbXlcJiMzNDtcbiYjNDM7ICAgIF1cbiYjNDM7ICB9LFxuJiM0MzsgIHtcbiYjNDM7ICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDtmcmVyXzAwMzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtmcmVyIHB1c2ggb3V0cHV0IHNob3dzIG5vdF9pbl9odyBmbGFnXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgXCYjMzQ7YWN0aW9uc1wmIzM0OyxcbiYjNDM7ICAgICAgXCYjMzQ7ZnJlclwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFtcbiYjNDM7ICAgICAgICBcJiMzNDttb2Rwcm9iZSBhY3RfZnJlclwmIzM0OyxcbiYjNDM7ICAgICAgICAwLFxuJiM0MzsgICAgICAgIDFcbiYjNDM7ICAgICAgXSxcbiYjNDM7ICAgICAgXCYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwmIzM0O1xuJiM0MzsgICAgXSxcbiYjNDM7ICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7bm90X2luX2h3XCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MVwmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCYjMzQ7XG4mIzQzOyAgICBdXG4mIzQzOyAgfSxcbiYjNDM7ICB7XG4mIzQzOyAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZnJlcl8wMDMyXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7ZnJlciByZWNvdmVyIG91dHB1dCBzaG93cyBub3RfaW5faHcgZmxhZ1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgIFwmIzM0O2FjdGlvbnNcJiMzNDssXG4mIzQzOyAgICAgIFwmIzM0O2ZyZXJcJiMzNDtcbiYjNDM7ICAgIF0sXG4mIzQzOyAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICBbXG4mIzQzOyAgICAgICAgXCYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXJcJiMzNDssXG4mIzQzOyAgICAgICAgMCxcbiYjNDM7ICAgICAgICAxXG4mIzQzOyAgICAgIF0sXG4mIzQzOyAgICAgIFwmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwXCYjMzQ7XG4mIzQzOyAgICBdLFxuJiM0MzsgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCYjMzQ7LFxuJiM0MzsgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt2ZXJpZnlDbWRcJiMzNDs6IFwmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcJiMzNDssXG4mIzQzOyAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O25vdF9pbl9od1wmIzM0OyxcbiYjNDM7ICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICBcJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwmIzM0O1xuJiM0MzsgICAgXVxuJiM0MzsgIH1cbiYjNDM7XVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA5OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9BQ1RfRlJFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9mcmVyX2luaXQmIzM0OywKICAgICYjMzQ7dGNmX2ZyZXJfYWN0JiMzNDssCiAgICAmIzM0O3RjZl9mcmVyX2R1bXAmIzM0OywKICAgICYjMzQ7dGNmX2ZyZXJfY2xlYW51cCYjMzQ7LAogICAgJiMzNDtmcmVyX3J0YWdfcHVzaCYjMzQ7LAogICAgJiMzNDtmcmVyX3J0YWdfcG9wJiMzNDssCiAgICAmIzM0O2ZyZXJfcnRhZ19kZWNvZGUmIzM0OywKICAgICYjMzQ7ZnJlcl92ZWN0b3JfYWxnJiMzNDssCiAgICAmIzM0O2ZyZXJfbWF0Y2hfYWxnJiMzNDssCiAgICAmIzM0O2ZyZXJfcmN2eV9ocnRpbWVyX2ZuJiMzNDssCiAgICAmIzM0O2ZyZXJfcmN2eV9yZXNldF93b3JrX2ZuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBgYWN0X2ZyZXJgIGZvciBJRUVFIDgwMi4xQ0IgRlJFUi4gSXQgaW5jbHVkZXMgcGFja2V0IG1hbmlwdWxhdGlvbiAocHVzaC9wb3Agb2YgUi1UQUcpIGFuZCBzZXF1ZW5jZSByZWNvdmVyeSBhbGdvcml0aG1zLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDlkOWY2MjA3OTBmYzI5ZWVjYTAwZjU5YmE5YjZjYWQ1ZTBhZDYyYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDIyIDA5OjQwOjU1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZmxvd19vZmZsb2FkLmggYi9pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaAppbmRleCA3MGEwMmVlMTQzMDgwNy4uOGQ5N2E1ZjI5M2U2ZDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oCkBAIC0xODQsNiAmIzQzOzE4NCw3IEBAIGVudW0gZmxvd19hY3Rpb25faWQgewogCUZMT1dfQUNUSU9OX1ZMQU5fUFVTSF9FVEgsCiAJRkxPV19BQ1RJT05fVkxBTl9QT1BfRVRILAogCUZMT1dfQUNUSU9OX0NPTlRJTlVFLAomIzQzOwlGTE9XX0FDVElPTl9GUkVSLAogCU5VTV9GTE9XX0FDVElPTlMsCiB9OwogCkBAIC0zMjksNiAmIzQzOzMzMCwxNiBAQCBzdHJ1Y3QgZmxvd19hY3Rpb25fZW50cnkgewogCQlzdHJ1Y3QgewkJCQkvKiBGTE9XX0FDVElPTl9QUFBPRV9QVVNIICovCiAJCQl1MTYJCXNpZDsKIAkJfSBwcHBvZTsKJiM0MzsJCXN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTE9XX0FDVElPTl9GUkVSICovCiYjNDM7CQkJdTgJCWZ1bmM7CiYjNDM7CQkJdTgJCXRhZ190eXBlOwomIzQzOwkJCWJvb2wJCWluZGl2aWR1YWw7CiYjNDM7CQkJdTgJCXJjdnlfYWxnOwomIzQzOwkJCXU4CQlyY3Z5X2hpc3RvcnlfbGVuOwomIzQzOwkJCXUzMgkJcmN2eV9yZXNldF9tc2VjOwomIzQzOwkJCWJvb2wJCXRhZ19wb3A7CiYjNDM7CQkJYm9vbAkJdGFrZV9ub19zZXE7CiYjNDM7CQl9IGZyZXI7CiAJfTsKIAlzdHJ1Y3QgZmxvd19hY3Rpb25fY29va2llICp1c2VyX2Nvb2tpZTsgLyogdXNlciBkZWZpbmVkIGFjdGlvbiBjb29raWUgKi8KIH07CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y19hY3QvdGNfZnJlci5oIGIvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2ZyZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNWY2ZjhjYTcwODEzYTAKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y19hY3QvdGNfZnJlci5oCkBAIC0wLDAgJiM0MzsxLDcxIEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi8KJiM0MzsvKiBDb3B5cmlnaHQgMjAyNiBOWFAgKi8KJiM0MzsKJiM0MzsjaWZuZGVmIF9fTkVUX1RDX0ZSRVJfSAomIzQzOyNkZWZpbmUgX19ORVRfVENfRlJFUl9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9hY3RfYXBpLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RjX2FjdC90Y19mcmVyLmgmZ3Q7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogc3RydWN0IGZyZXJfc2VxZ2VuIC0gc2VxdWVuY2UgbnVtYmVyIGdlbmVyYXRvciBzdGF0ZSAoZW1iZWRkZWQgaW4gdGNmX2ZyZXIpCiYjNDM7ICovCiYjNDM7c3RydWN0IGZyZXJfc2VxZ2VuIHsKJiM0MzsJdTMyCQlnZW5fc2VxX251bTsKJiM0MzsJdTY0CQlzZXFfc3BhY2U7CS8qIDEgJmx0OyZsdDsgMTYgKi8KJiM0MzsJc3BpbmxvY2tfdAlsb2NrOwkJLyogcHJvdGVjdHMgZnJlcl9zZXFnZW4gc3RhdGUgKi8KJiM0MzsJdTY0CQlzdGF0c19wa3RzOwkvKiBmcmVyQ3BzU2VxR2VuUGFja2V0cyAqLwomIzQzO307CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogc3RydWN0IGZyZXJfcmN2eSAtIHNlcXVlbmNlIHJlY292ZXJ5IHN0YXRlIChlbWJlZGRlZCBpbiB0Y2ZfZnJlcikKJiM0MzsgKgomIzQzOyAqLwomIzQzO3N0cnVjdCBmcmVyX3JjdnkgewomIzQzOwl1OAkJYWxnOwomIzQzOwl1OAkJaGlzdG9yeV9sZW47CS8qIDEtMzIgKi8KJiM0MzsJdTMyCQlyZXNldF9tc2VjOwomIzQzOwl1NjQJCXNlcV9zcGFjZTsKJiM0MzsJdTMyCQlyY3Z5X3NlcV9udW07CiYjNDM7CXUzMgkJc2VxX2hpc3Rvcnk7CiYjNDM7CWJvb2wJCXRha2VfYW55OwomIzQzOwlib29sCQl0YWtlX25vX3NlcTsKJiM0MzsJc3RydWN0IGhydGltZXIJaHJ0aW1lcjsKJiM0MzsJc3BpbmxvY2tfdAlsb2NrOwkJLyogcHJvdGVjdHMgZnJlcl9yY3Z5IHN0YXRlICovCiYjNDM7CS8qIHN0YXRpc3RpY3MgKi8KJiM0MzsJdTY0CQlzdGF0c190YWdsZXNzX3BrdHM7CiYjNDM7CXU2NAkJc3RhdHNfb3V0X29mX29yZGVyX3BrdHM7CiYjNDM7CXU2NAkJc3RhdHNfcm9ndWVfcGt0czsKJiM0MzsJdTY0CQlzdGF0c19sb3N0X3BrdHM7CiYjNDM7CXU2NAkJc3RhdHNfcmVzZXRzOwomIzQzOwl1NjQJCXN0YXRzX3Bhc3NlZF9wa3RzOwomIzQzOwl1NjQJCXN0YXRzX2Rpc2NhcmRlZF9wa3RzOwomIzQzO307CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogc3RydWN0IHRjZl9mcmVyIC0gcGVyIHRjX2FjdGlvbiBGUkVSIHByaXZhdGUgZGF0YQomIzQzOyAqLwomIzQzO3N0cnVjdCB0Y2ZfZnJlciB7CiYjNDM7CXN0cnVjdCB0Y19hY3Rpb24JY29tbW9uOwomIzQzOwl1OAkJCWZ1bmM7CiYjNDM7CXU4CQkJdGFnX3R5cGU7CiYjNDM7CWJvb2wJCQl0YWdfcG9wOwomIzQzOwlib29sCQkJaW5kaXZpZHVhbDsJLyogSW5kaXZpZHVhbCBSZWNvdmVyeSBmbGFnICovCiYjNDM7CS8qIHB1c2ggcGF0aCAqLwomIzQzOwlzdHJ1Y3QgZnJlcl9zZXFnZW4Jc2VxZ2VuOwomIzQzOwkvKiByZWNvdmVyIHBhdGggKi8KJiM0MzsJc3RydWN0IGZyZXJfcmN2eQlyY3Z5OwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSB0b19mcmVyKGEpICgoc3RydWN0IHRjZl9mcmVyICopKGEpKQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc190Y2ZfZnJlcihjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKQomIzQzO3sKJiM0MzsjaWZkZWYgQ09ORklHX05FVF9DTFNfQUNUCiYjNDM7CWlmIChhLSZndDtvcHMgJmFtcDsmYW1wOyBhLSZndDtvcHMtJmd0O2lkID09IFRDQV9JRF9GUkVSKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7I2VuZGlmCiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fTkVUX1RDX0ZSRVJfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAppbmRleCBmYjVlZmM4ZTA2Y2MxNC4uMmQ5MDkwNzhjZGUxOGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCkBAIC0xMjIsNiAmIzQzOzEyMiw3IEBACiAjZGVmaW5lIEVUSF9QX0RTQV84MDIxUQkweERBREIJCS8qIEZha2UgVkxBTiBIZWFkZXIgZm9yIERTQSBbIE5PVCBBTiBPRkZJQ0lBTExZIFJFR0lTVEVSRUQgSUQgXSAqLwogI2RlZmluZSBFVEhfUF9EU0FfQTVQU1cJMHhFMDAxCQkvKiBBNVBTVyBUYWcgVmFsdWUgWyBOT1QgQU4gT0ZGSUNJQUxMWSBSRUdJU1RFUkVEIElEIF0gKi8KICNkZWZpbmUgRVRIX1BfSUZFCTB4RUQzRQkJLyogRm9yQ0VTIGludGVyLUZFIExGQiB0eXBlICovCiYjNDM7I2RlZmluZSBFVEhfUF9SVEFHCTB4RjFDMQkJLyogUmVkdW5kYW5jeSBUYWcgKElFRUUgODAyLjFDQikgKi8KICNkZWZpbmUgRVRIX1BfQUZfSVVDViAgIDB4RkJGQgkJLyogSUJNIGFmX2l1Y3YgWyBOT1QgQU4gT0ZGSUNJQUxMWSBSRUdJU1RFUkVEIElEIF0gKi8KICNkZWZpbmUgRVRIX1BfTlhQX05FVEMgIDB4RkQzQQkJLyogTlhQIE5FVEMgRFNBIFsgTk9UIEFOIE9GRklDSUFMTFkgUkVHSVNURVJFRCBJRCBdICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oCmluZGV4IDI4ZDk0YjExZDFhYTE2Li45Yjg3ZjA0NTUxMTBkMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oCkBAIC0xMzksNiAmIzQzOzEzOSw3IEBAIGVudW0gdGNhX2lkIHsKIAlUQ0FfSURfTVBMUywKIAlUQ0FfSURfQ1QsCiAJVENBX0lEX0dBVEUsCiYjNDM7CVRDQV9JRF9GUkVSLAogCS8qIG90aGVyIGFjdGlvbnMgZ28gaGVyZSAqLwogCV9fVENBX0lEX01BWCA9IDI1NQogfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZnJlci5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19mcmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI0MWU5MDgyN2UyNjI4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19mcmVyLmgKQEAgLTAsMCAmIzQzOzEsODkgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCYjNDM7IFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCiYjNDM7LyogQ29weXJpZ2h0IDIwMjYgTlhQICovCiYjNDM7CiYjNDM7I2lmbmRlZiBfX0xJTlVYX1RDX0ZSRVJfSAomIzQzOyNkZWZpbmUgX19MSU5VWF9UQ19GUkVSX0gKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGt0X2Nscy5oJmd0OwomIzQzOwomIzQzOy8qIEJhc2UgcGFyYW1ldGVycyBwYXNzZWQgaW4gVENBX0ZSRVJfUEFSTVMgKi8KJiM0MztzdHJ1Y3QgdGNfZnJlciB7CiYjNDM7CXRjX2dlbjsKJiM0Mzt9OwomIzQzOwomIzQzOy8qKgomIzQzOyAqIGVudW0gVENBX0ZSRVJfKiAtIG5ldGxpbmsgYXR0cmlidXRlcyBmb3IgdGhlIEZSRVIgdGMgYWN0aW9uCiYjNDM7ICoKJiM0MzsgKiBAVENBX0ZSRVJfRlVOQzogICAgICAgICAgICAgRnVuY3Rpb25hbCBzdWItY29tbWFuZCAodGNfZnJlcl9mdW5jKS4KJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5LgomIzQzOyAqIEBUQ0FfRlJFUl9UQUdfVFlQRTogICAgICAgICBSZWR1bmRhbmN5IHRhZyB0eXBlICh0Y19mcmVyX3RhZ190eXBlKS4KJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5LgomIzQzOyAqCiYjNDM7ICogUHVzaC1zcGVjaWZpYyBhdHRyaWJ1dGVzIChUQ0FfRlJFUl9GVU5DX1BVU0gpOgomIzQzOyAqIFJlY292ZXItc3BlY2lmaWMgYXR0cmlidXRlcyAoVENBX0ZSRVJfRlVOQ19SRUNPVkVSKToKJiM0MzsgKiBAVENBX0ZSRVJfUkNWWV9JTkRJVklEVUFMOiAgRmxhZy4gRm9yY2UgSW5kaXZpZHVhbCBSZWNvdmVyeS4KJiM0MzsgKiBAVENBX0ZSRVJfUkNWWV9BTEc6ICAgICAgICAgdTguIFJlY292ZXJ5IGFsZ29yaXRobSAodGNfZnJlcl9yY3Z5X2FsZykuCiYjNDM7ICogQFRDQV9GUkVSX1JDVllfSElTVE9SWV9MRU46IHU4LiBTZXF1ZW5jZUhpc3Rvcnkgd2luZG93IHNpemUgKDEtMzIpLgomIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBzIHRvIGZyZXJTZXFSY3Z5SGlzdG9yeUxlbmd0aC4KJiM0MzsgKiBAVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDOiAgdTMyLiBSZXNldCB0aW1lciBpbiBtaWxsaXNlY29uZHMuCiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgZGlzYWJsZXMgdGhlIHRpbWVyLgomIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBzIHRvIGZyZXJTZXFSY3Z5UmVzZXRNU2VjLgomIzQzOyAqIEBUQ0FfRlJFUl9SQ1ZZX1RBS0VfTk9fU0VROiBGbGFnLiBBY2NlcHQgZnJhbWVzIHdpdGhvdXQgYSByZWR1bmRhbmN5CiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyBhbmQgcGFzcyB0aGVtIHVuY29uZGl0aW9uYWxseS4KJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwcyB0byBmcmVyU2VxUmN2eVRha2VOb1NlcS4KJiM0MzsgKiBAVENBX0ZSRVJfUkNWWV9UQUdfUE9QOiAgICAgRmxhZy4gUmVtb3ZlIHRoZSByZWR1bmRhbmN5IHRhZyBmcm9tCiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcyB0aGF0IHBhc3MgdGhlIHJlY292ZXJ5IGZ1bmN0aW9uLgomIzQzOyAqCiYjNDM7ICogUmVhZC1vbmx5IHN0YXRpc3RpY3MgKGZpbGxlZCBvbiBkdW1wLCBJRUVFIDgwMi4xQ0IgVGFibGUgMTAtMSk6CiYjNDM7ICogQFRDQV9GUkVSX1NUQVRTX1RBR0xFU1NfUEtUUzogICAgICAgZnJlckNwc1NlcVJjdnlUYWdsZXNzUGFja2V0cwomIzQzOyAqIEBUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUzogIGZyZXJDcHNTZXFSY3Z5T3V0T2ZPcmRlclBhY2tldHMKJiM0MzsgKiBAVENBX0ZSRVJfU1RBVFNfUk9HVUVfUEtUUzogICAgICAgICBmcmVyQ3BzU2VxUmN2eVJvZ3VlUGFja2V0cwomIzQzOyAqIEBUQ0FfRlJFUl9TVEFUU19MT1NUX1BLVFM6ICAgICAgICAgIGZyZXJDcHNTZXFSY3Z5TG9zdFBhY2tldHMKJiM0MzsgKiBAVENBX0ZSRVJfU1RBVFNfUkVTRVRTOiAgICAgICAgICAgICBmcmVyQ3BzU2VxUmN2eVJlc2V0cwomIzQzOyAqIEBUQ0FfRlJFUl9TVEFUU19QQVNTRURfUEtUUzogICAgICAgIGZyZXJDcHNTZXFSY3Z5UGFzc2VkUGFja2V0cwomIzQzOyAqIEBUQ0FfRlJFUl9TVEFUU19ESVNDQVJERURfUEtUUzogICAgIGZyZXJDcHNTZXFSY3Z5RGlzY2FyZGVkUGFja2V0cwomIzQzOyAqIEBUQ0FfRlJFUl9TVEFUU19TRVFHRU5fUEtUUzogICAgICAgIGZyZXJDcHNTZXFHZW5QYWNrZXRzCiYjNDM7ICovCiYjNDM7ZW51bSB7CiYjNDM7CVRDQV9GUkVSX1VOU1BFQywKJiM0MzsJVENBX0ZSRVJfVE0sICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgdGNmX3QgKi8KJiM0MzsJVENBX0ZSRVJfUEFSTVMsICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgdGNfZnJlciAqLwomIzQzOwlUQ0FfRlJFUl9QQUQsCiYjNDM7CVRDQV9GUkVSX0ZVTkMsICAgICAgICAgICAgICAgICAgICAgLyogdTg6IHRjX2ZyZXJfZnVuYyAqLwomIzQzOwlUQ0FfRlJFUl9UQUdfVFlQRSwgICAgICAgICAgICAgICAgIC8qIHU4OiB0Y19mcmVyX3RhZ190eXBlICovCiYjNDM7CVRDQV9GUkVSX1JDVllfSU5ESVZJRFVBTCwgICAgICAgICAgLyogTkxBX0ZMQUcgKi8KJiM0MzsJVENBX0ZSRVJfUkNWWV9BTEcsICAgICAgICAgICAgICAgICAvKiB1ODogdGNfZnJlcl9yY3Z5X2FsZyAqLwomIzQzOwlUQ0FfRlJFUl9SQ1ZZX0hJU1RPUllfTEVOLCAgICAgICAgIC8qIHU4OiAxLTMyICovCiYjNDM7CVRDQV9GUkVSX1JDVllfUkVTRVRfTVNFQywgICAgICAgICAgLyogdTMyICovCiYjNDM7CVRDQV9GUkVSX1JDVllfVEFLRV9OT19TRVEsICAgICAgICAgLyogTkxBX0ZMQUcgKi8KJiM0MzsJVENBX0ZSRVJfUkNWWV9UQUdfUE9QLCAgICAgICAgICAgICAvKiBOTEFfRkxBRyAqLwomIzQzOwlUQ0FfRlJFUl9TVEFUU19UQUdMRVNTX1BLVFMsICAgICAgIC8qIHU2NCAqLwomIzQzOwlUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUywgIC8qIHU2NCAqLwomIzQzOwlUQ0FfRlJFUl9TVEFUU19ST0dVRV9QS1RTLCAgICAgICAgIC8qIHU2NCAqLwomIzQzOwlUQ0FfRlJFUl9TVEFUU19MT1NUX1BLVFMsICAgICAgICAgIC8qIHU2NCAqLwomIzQzOwlUQ0FfRlJFUl9TVEFUU19SRVNFVFMsICAgICAgICAgICAgIC8qIHU2NCAqLwomIzQzOwlUQ0FfRlJFUl9TVEFUU19QQVNTRURfUEtUUywgICAgICAgIC8qIHU2NCAqLwomIzQzOwlUQ0FfRlJFUl9TVEFUU19ESVNDQVJERURfUEtUUywgICAgIC8qIHU2NCAqLwomIzQzOwlUQ0FfRlJFUl9TVEFUU19TRVFHRU5fUEtUUywgICAgICAgIC8qIHU2NCAqLwomIzQzOwlfX1RDQV9GUkVSX01BWCwKJiM0Mzt9OwomIzQzOwomIzQzOyNkZWZpbmUgVENBX0ZSRVJfTUFYIChfX1RDQV9GUkVSX01BWCAtIDEpCiYjNDM7CiYjNDM7ZW51bSB0Y19mcmVyX2Z1bmMgewomIzQzOwlUQ0FfRlJFUl9GVU5DX1BVU0ggICAgPSAxLAomIzQzOwlUQ0FfRlJFUl9GVU5DX1JFQ09WRVIgPSAyLAomIzQzO307CiYjNDM7CiYjNDM7ZW51bSB0Y19mcmVyX3RhZ190eXBlIHsKJiM0MzsJVENBX0ZSRVJfVEFHX1JUQUcgPSAxLAomIzQzOwlUQ0FfRlJFUl9UQUdfSFNSLAomIzQzOwlUQ0FfRlJFUl9UQUdfUFJQLAomIzQzO307CiYjNDM7CiYjNDM7ZW51bSB0Y19mcmVyX3JjdnlfYWxnIHsKJiM0MzsJVENBX0ZSRVJfUkNWWV9WRUNUT1JfQUxHID0gMCwgIC8qIElFRUUgODAyLjFDQiA3LjQuMy40ICovCiYjNDM7CVRDQV9GUkVSX1JDVllfTUFUQ0hfQUxHICA9IDEsICAvKiBJRUVFIDgwMi4xQ0IgNy40LjMuNSAqLwomIzQzO307CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fTElOVVhfVENfRlJFUl9IICovCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvS2NvbmZpZyBiL25ldC9zY2hlZC9LY29uZmlnCmluZGV4IDZkZGZmMDI4YjgxYTQxLi43Y2E3OWIzZWI1YjM0YyAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL0tjb25maWcKQEAgLTkzOSw2ICYjNDM7OTM5LDIyIEBAIGNvbmZpZyBORVRfQUNUX0dBVEUKIAkgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKIAkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhY3RfZ2F0ZS4KIAomIzQzO2NvbmZpZyBORVRfQUNUX0ZSRVIKJiM0MzsJdHJpc3RhdGUgJiMzNDtJRUVFIDgwMi4xQ0IgRlJFUiB0YyBhY3Rpb24mIzM0OwomIzQzOwlkZXBlbmRzIG9uIE5FVF9DTFNfQUNUCiYjNDM7CWhlbHAKJiM0MzsJICBTYXkgWSBoZXJlIHRvIGVuYWJsZSB0aGUgSUVFRSA4MDIuMUNCIEZSRVIgdGMgYWN0aW9uLiAgVGhlIGFjdGlvbgomIzQzOwkgIGltcGxlbWVudHMgdGhlIFNlcXVlbmNlIEdlbmVyYXRpb24gRnVuY3Rpb24gKGVncmVzcyBSLVRBRyBpbnNlcnRpb24KJiM0MzsJICB3aXRoIHNoYXJlZCBwZXItc3RyZWFtIHNlcXVlbmNlIGNvdW50ZXIpIGFuZCB0aGUgU2VxdWVuY2UgUmVjb3ZlcnkKJiM0MzsJICBGdW5jdGlvbiAoaW5ncmVzcyBkdXBsaWNhdGUgZGV0ZWN0aW9uIGFuZCBlbGltaW5hdGlvbikgZGVzY3JpYmVkIGluCiYjNDM7CSAgSUVFRSA4MDIuMUNCLTIwMTcuCiYjNDM7CiYjNDM7CSAgQm90aCBTZXF1ZW5jZSBSZWNvdmVyeSAoY3Jvc3MtcG9ydCBzaGFyZWQgc3RhdGUgdmlhIHJjdnktaWQpIGFuZAomIzQzOwkgIEluZGl2aWR1YWwgUmVjb3ZlcnkgKHBlci1wb3J0IGluZGVwZW5kZW50IHN0YXRlKSBhcmUgc3VwcG9ydGVkLgomIzQzOwomIzQzOwkgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKJiM0MzsJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2ZyZXIuCiYjNDM7CiBjb25maWcgTkVUX0lGRV9TS0JNQVJLCiAJdHJpc3RhdGUgJiMzNDtTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb24mIzM0OwogCWRlcGVuZHMgb24gTkVUX0FDVF9JRkUKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9NYWtlZmlsZSBiL25ldC9zY2hlZC9NYWtlZmlsZQppbmRleCA1MDc4ZWE4NGU2YWQ3YS4uZDlmNjA0MzRlN2Q3N2YgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvTWFrZWZpbGUKQEAgLTMxLDYgJiM0MzszMSw3IEBAIG9iai0kKENPTkZJR19ORVRfSUZFX1NLQlRDSU5ERVgpCSYjNDM7PSBhY3RfbWV0YV9za2J0Y2luZGV4Lm8KIG9iai0kKENPTkZJR19ORVRfQUNUX1RVTk5FTF9LRVkpJiM0Mzs9IGFjdF90dW5uZWxfa2V5Lm8KIG9iai0kKENPTkZJR19ORVRfQUNUX0NUKQkmIzQzOz0gYWN0X2N0Lm8KIG9iai0kKENPTkZJR19ORVRfQUNUX0dBVEUpCSYjNDM7PSBhY3RfZ2F0ZS5vCiYjNDM7b2JqLSQoQ09ORklHX05FVF9BQ1RfRlJFUikJJiM0Mzs9IGFjdF9mcmVyLm8KIG9iai0kKENPTkZJR19ORVRfU0NIX0ZJRk8pCSYjNDM7PSBzY2hfZmlmby5vCiBvYmotJChDT05GSUdfTkVUX1NDSF9IVEIpCSYjNDM7PSBzY2hfaHRiLm8KIG9iai0kKENPTkZJR19ORVRfU0NIX0hGU0MpCSYjNDM7PSBzY2hfaGZzYy5vCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2ZyZXIuYyBiL25ldC9zY2hlZC9hY3RfZnJlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi43YjZkYjY0Mzc4OGRmNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfZnJlci5jCkBAIC0wLDAgJiM0MzsxLDgzNSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCiYjNDM7LyogQ29weXJpZ2h0IDIwMjYgTlhQICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3J0bmV0bGluay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NwaW5sb2NrLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2lmX3ZsYW4uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaHJ0aW1lci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC93b3JrcXVldWUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2FjdF9hcGkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L25ldGxpbmsuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L3BrdF9jbHMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L3RjX2FjdC90Y19mcmVyLmgmZ3Q7CiYjNDM7CiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7LyogUi1UQUcgd2lyZSBzdHJ1Y3R1cmVzIChJRUVFIDgwMi4xQ0IgNy44KSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsKJiM0MztzdHJ1Y3Qgcl90YWcgewomIzQzOwlfX2JlMTYgcmVzZXJ2ZWQ7CiYjNDM7CV9fYmUxNiBzZXF1ZW5jZV9ucjsKJiM0MzsJX19iZTE2IGVuY2FwX3Byb3RvOwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9mcmVyX29wczsKJiM0MzsKJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsvKiBSZWNvdmVyeSByZXNldCBtYWNoaW5lcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7CiYjNDM7c3RydWN0IGZyZXJfcmN2eV93b3JrIHsKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0CXdvcms7CiYjNDM7CXN0cnVjdCBmcmVyX3JjdnkJKnJjdnk7CiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBmcmVyX3JjdnlfcmVzZXQoc3RydWN0IGZyZXJfcmN2eSAqcmN2eSkKJiM0Mzt7CiYjNDM7CWlmIChyY3Z5LSZndDthbGcgPT0gVENBX0ZSRVJfUkNWWV9WRUNUT1JfQUxHKSB7CiYjNDM7CQlyY3Z5LSZndDtyY3Z5X3NlcV9udW0gPSAodTMyKShyY3Z5LSZndDtzZXFfc3BhY2UgLSAxKTsKJiM0MzsJCXJjdnktJmd0O3NlcV9oaXN0b3J5ICA9IDA7CiYjNDM7CX0KJiM0MzsJcmN2eS0mZ3Q7dGFrZV9hbnkgPSB0cnVlOwomIzQzOwlyY3Z5LSZndDtzdGF0c19yZXNldHMmIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBmcmVyX3JjdnlfcmVzZXRfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZnJlcl9yY3Z5X3dvcmsgKnJ3ID0KJiM0MzsJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZnJlcl9yY3Z5X3dvcmssIHdvcmspOwomIzQzOwlzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5ID0gcnctJmd0O3Jjdnk7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3JjdnktJmd0O2xvY2spOwomIzQzOwlmcmVyX3JjdnlfcmVzZXQocmN2eSk7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7cmN2eS0mZ3Q7bG9jayk7CiYjNDM7CWtmcmVlKHJ3KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGZyZXJfcmN2eV9ocnRpbWVyX2ZuKHN0cnVjdCBocnRpbWVyICp0aW1lcikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmcmVyX3JjdnkgKnJjdnkgPQomIzQzOwkJY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgZnJlcl9yY3Z5LCBocnRpbWVyKTsKJiM0MzsJc3RydWN0IGZyZXJfcmN2eV93b3JrICpydzsKJiM0MzsKJiM0MzsJLyogQWxsb2NhdGUgaW4gR0ZQX0FUT01JQyBjb250ZXh0OyBpZiBpdCBmYWlscyB0aGUgc3RhdGUgaXMgbm90CiYjNDM7CSAqIHJlc2V0IHRoaXMgY3ljbGUgLSB0aGUgbmV4dCBmcmFtZSB3aWxsIGF0dGVtcHQgYWdhaW4uCiYjNDM7CSAqLwomIzQzOwlydyA9IGttYWxsb2Nfb2JqKCpydyk7CiYjNDM7CWlmIChydykgewomIzQzOwkJSU5JVF9XT1JLKCZhbXA7cnctJmd0O3dvcmssIGZyZXJfcmN2eV9yZXNldF93b3JrX2ZuKTsKJiM0MzsJCXJ3LSZndDtyY3Z5ID0gcmN2eTsKJiM0MzsJCXNjaGVkdWxlX3dvcmsoJmFtcDtydy0mZ3Q7d29yayk7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBmcmVyX3JjdnlfdGltZXJfcmVzdGFydChzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5KQomIzQzO3sKJiM0MzsJaWYgKHJjdnktJmd0O3Jlc2V0X21zZWMpCiYjNDM7CQlocnRpbWVyX3N0YXJ0KCZhbXA7cmN2eS0mZ3Q7aHJ0aW1lciwKJiM0MzsJCQkgICAgICBtc190b19rdGltZShyY3Z5LSZndDtyZXNldF9tc2VjKSwKJiM0MzsJCQkgICAgICBIUlRJTUVSX01PREVfUkVMX1NPRlQpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBmcmVyX3JjdnlfaW5pdF9zdGF0ZShzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5LCB1OCBhbGcsCiYjNDM7CQkJCSB1OCBoaXN0b3J5X2xlbiwgdTMyIHJlc2V0X21zZWMsCiYjNDM7CQkJCSBib29sIHRha2Vfbm9fc2VxKQomIzQzO3sKJiM0MzsJcmN2eS0mZ3Q7YWxnICAgICAgICAgID0gYWxnOwomIzQzOwlyY3Z5LSZndDtoaXN0b3J5X2xlbiAgPSBoaXN0b3J5X2xlbjsKJiM0MzsJcmN2eS0mZ3Q7cmVzZXRfbXNlYyAgID0gcmVzZXRfbXNlYzsKJiM0MzsJcmN2eS0mZ3Q7c2VxX3NwYWNlICAgID0gMSAmbHQ7Jmx0OyAxNjsKJiM0MzsJcmN2eS0mZ3Q7dGFrZV9ub19zZXEgID0gdGFrZV9ub19zZXE7CiYjNDM7CXJjdnktJmd0O3Rha2VfYW55ICAgICA9IHRydWU7CiYjNDM7CXJjdnktJmd0O3Jjdnlfc2VxX251bSA9ICh1MzIpKHJjdnktJmd0O3NlcV9zcGFjZSAtIDEpOwomIzQzOwlyY3Z5LSZndDtzZXFfaGlzdG9yeSAgPSAwOwomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO3JjdnktJmd0O2xvY2spOwomIzQzOwlocnRpbWVyX3NldHVwKCZhbXA7cmN2eS0mZ3Q7aHJ0aW1lciwgZnJlcl9yY3Z5X2hydGltZXJfZm4sIENMT0NLX01PTk9UT05JQywKJiM0MzsJCSAgICAgIEhSVElNRVJfTU9ERV9SRUxfU09GVCk7CiYjNDM7fQomIzQzOwomIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwomIzQzOy8qIFItVEFHIGhlbHBlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsKJiM0MztzdGF0aWMgaW50IGZyZXJfcnRhZ19wdXNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBzZXFfbnVtKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgY2hhciAqbmV3X21hY19oZWFkZXI7CiYjNDM7CXVuc2lnbmVkIGludCBkYXRhX29mZnNldDsKJiM0MzsJdW5zaWduZWQgaW50IGhlYWRfbGVuOwomIzQzOwlzdHJ1Y3Qgdmxhbl9ldGhoZHIgKnZoOwomIzQzOwlzdHJ1Y3QgZXRoaGRyICplaDsKJiM0MzsJc3RydWN0IHJfdGFnICpydGFnOwomIzQzOwlfX2JlMTYgKnByb3RvX3B0cjsKJiM0MzsJX19iZTE2IHNhdmVkX3Byb3RvOwomIzQzOwomIzQzOwlpZiAoIXNrYl9tYWNfaGVhZGVyX3dhc19zZXQoc2tiKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlkYXRhX29mZnNldCA9IHNrYi0mZ3Q7ZGF0YSAtIHNrYl9tYWNfaGVhZGVyKHNrYik7CiYjNDM7CiYjNDM7CWlmIChza2JfY293X2hlYWQoc2tiLCBkYXRhX29mZnNldCAmIzQzOyBzaXplb2YoKnJ0YWcpKSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlpZiAoZGF0YV9vZmZzZXQgJmd0OyAwKQomIzQzOwkJc2tiX3B1c2goc2tiLCBkYXRhX29mZnNldCk7CiYjNDM7CiYjNDM7CWVoID0gZXRoX2hkcihza2IpOwomIzQzOwlpZiAoZXRoX3R5cGVfdmxhbihlaC0mZ3Q7aF9wcm90bykpIHsKJiM0MzsJCWlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZigqdmgpKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCWVoID0gZXRoX2hkcihza2IpOwomIzQzOwkJdmggPSAoc3RydWN0IHZsYW5fZXRoaGRyICopZWg7CiYjNDM7CQlwcm90b19wdHIgPSAmYW1wO3ZoLSZndDtoX3ZsYW5fZW5jYXBzdWxhdGVkX3Byb3RvOwomIzQzOwkJaGVhZF9sZW4gPSBzaXplb2YoKnZoKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZigqZWgpKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCWVoID0gZXRoX2hkcihza2IpOwomIzQzOwkJcHJvdG9fcHRyID0gJmFtcDtlaC0mZ3Q7aF9wcm90bzsKJiM0MzsJCWhlYWRfbGVuID0gc2l6ZW9mKCplaCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc2F2ZWRfcHJvdG8gPSAqcHJvdG9fcHRyOwomIzQzOwkqcHJvdG9fcHRyID0gaHRvbnMoRVRIX1BfUlRBRyk7CiYjNDM7CiYjNDM7CXNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpydGFnKSk7CiYjNDM7CXNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7CiYjNDM7CiYjNDM7CW5ld19tYWNfaGVhZGVyID0gc2tiX21hY19oZWFkZXIoc2tiKTsKJiM0MzsJbWVtbW92ZShuZXdfbWFjX2hlYWRlciwgKHVuc2lnbmVkIGNoYXIgKillaCwgaGVhZF9sZW4pOwomIzQzOwomIzQzOwlza2ItJmd0O3Byb3RvY29sID0gaHRvbnMoRVRIX1BfUlRBRyk7CiYjNDM7CXNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCBoZWFkX2xlbik7CiYjNDM7CWlmIChkYXRhX29mZnNldCAmZ3Q7IDApCiYjNDM7CQlza2JfcHVsbChza2IsIGRhdGFfb2Zmc2V0KTsKJiM0MzsKJiM0MzsJLyogV3JpdGUgUi1UQUcgYWZ0ZXIgdGhlIEV0aGVybmV0IC8gVkxBTiBoZWFkZXIgKi8KJiM0MzsJcnRhZyA9IChzdHJ1Y3Qgcl90YWcgKikobmV3X21hY19oZWFkZXIgJiM0MzsgaGVhZF9sZW4pOwomIzQzOwlydGFnLSZndDtyZXNlcnZlZCAgICA9IDA7CiYjNDM7CXJ0YWctJmd0O3NlcXVlbmNlX25yID0gaHRvbnMoc2VxX251bSk7CiYjNDM7CXJ0YWctJmd0O2VuY2FwX3Byb3RvID0gc2F2ZWRfcHJvdG87CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBmcmVyX3J0YWdfcG9wKHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBjaGFyICpuZXdfbWFjX2hlYWRlcjsKJiM0MzsJdW5zaWduZWQgaW50IGRhdGFfb2Zmc2V0OwomIzQzOwl1bnNpZ25lZCBpbnQgaGVhZF9sZW47CiYjNDM7CXN0cnVjdCB2bGFuX2V0aGhkciAqdmg7CiYjNDM7CXN0cnVjdCBldGhoZHIgKmVoOwomIzQzOwlzdHJ1Y3Qgcl90YWcgKnJ0YWc7CiYjNDM7CV9fYmUxNiAqcHJvdG9fcHRyOwomIzQzOwomIzQzOwlkYXRhX29mZnNldCA9IHNrYi0mZ3Q7ZGF0YSAtIHNrYl9tYWNfaGVhZGVyKHNrYik7CiYjNDM7CWlmIChkYXRhX29mZnNldCAmZ3Q7IDApCiYjNDM7CQlza2JfcHVzaChza2IsIGRhdGFfb2Zmc2V0KTsKJiM0MzsKJiM0MzsJZWggPSBldGhfaGRyKHNrYik7CiYjNDM7CWlmIChldGhfdHlwZV92bGFuKGVoLSZndDtoX3Byb3RvKSkgewomIzQzOwkJdmggPSAoc3RydWN0IHZsYW5fZXRoaGRyICopZWg7CiYjNDM7CQlwcm90b19wdHIgPSAmYW1wO3ZoLSZndDtoX3ZsYW5fZW5jYXBzdWxhdGVkX3Byb3RvOwomIzQzOwkJaGVhZF9sZW4gPSBzaXplb2YoKnZoKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXByb3RvX3B0ciA9ICZhbXA7ZWgtJmd0O2hfcHJvdG87CiYjNDM7CQloZWFkX2xlbiA9IHNpemVvZigqZWgpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICgqcHJvdG9fcHRyICE9IGh0b25zKEVUSF9QX1JUQUcpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlydGFnID0gKHN0cnVjdCByX3RhZyAqKSgodW5zaWduZWQgY2hhciAqKWVoICYjNDM7IGhlYWRfbGVuKTsKJiM0MzsJKnByb3RvX3B0ciA9IHJ0YWctJmd0O2VuY2FwX3Byb3RvOwomIzQzOwomIzQzOwlza2ItJmd0O3Byb3RvY29sID0gcnRhZy0mZ3Q7ZW5jYXBfcHJvdG87CiYjNDM7CiYjNDM7CXNrYl9wb3N0cHVsbF9yY3N1bShza2IsIHJ0YWcsIHNpemVvZihzdHJ1Y3Qgcl90YWcpKTsKJiM0MzsJc2tiX3B1bGwoc2tiLCBzaXplb2YoKnJ0YWcpKTsKJiM0MzsJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKJiM0MzsKJiM0MzsJbmV3X21hY19oZWFkZXIgPSBza2JfbWFjX2hlYWRlcihza2IpOwomIzQzOwltZW1tb3ZlKG5ld19tYWNfaGVhZGVyLCAodW5zaWduZWQgY2hhciAqKWVoLCBoZWFkX2xlbik7CiYjNDM7CiYjNDM7CXNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCBoZWFkX2xlbik7CiYjNDM7CWlmIChkYXRhX29mZnNldCAmZ3Q7IDApCiYjNDM7CQlza2JfcHVsbChza2IsIGRhdGFfb2Zmc2V0KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBmcmVyX3J0YWdfZGVjb2RlKHN0cnVjdCBza19idWZmICpza2IsIGludCAqc2VxKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgaW50IGRhdGFfb2Zmc2V0OwomIzQzOwlzdHJ1Y3Qgdmxhbl9ldGhoZHIgKnZoOwomIzQzOwl1bnNpZ25lZCBpbnQgaGVhZF9sZW47CiYjNDM7CXN0cnVjdCBldGhoZHIgKmVoOwomIzQzOwlzdHJ1Y3Qgcl90YWcgKnJ0YWc7CiYjNDM7CV9fYmUxNiAqcHJvdG9fcHRyOwomIzQzOwomIzQzOwlpZiAoIXNrYl9tYWNfaGVhZGVyX3dhc19zZXQoc2tiKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlkYXRhX29mZnNldCA9IHNrYi0mZ3Q7ZGF0YSAtIHNrYl9tYWNfaGVhZGVyKHNrYik7CiYjNDM7CiYjNDM7CWlmIChza2JfY293X2hlYWQoc2tiLCBkYXRhX29mZnNldCkpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJaWYgKGRhdGFfb2Zmc2V0ICZndDsgMCkKJiM0MzsJCXNrYl9wdXNoKHNrYiwgZGF0YV9vZmZzZXQpOwomIzQzOwomIzQzOwllaCA9IGV0aF9oZHIoc2tiKTsKJiM0MzsJaWYgKGV0aF90eXBlX3ZsYW4oZWgtJmd0O2hfcHJvdG8pKSB7CiYjNDM7CQlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2YoKnZoKSAmIzQzOyBzaXplb2YoKnJ0YWcpKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCWVoID0gZXRoX2hkcihza2IpOwomIzQzOwkJdmggPSAoc3RydWN0IHZsYW5fZXRoaGRyICopZWg7CiYjNDM7CQlwcm90b19wdHIgPSAmYW1wO3ZoLSZndDtoX3ZsYW5fZW5jYXBzdWxhdGVkX3Byb3RvOwomIzQzOwkJaGVhZF9sZW4gPSBzaXplb2YoKnZoKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZigqZWgpICYjNDM7IHNpemVvZigqcnRhZykpKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJZWggPSBldGhfaGRyKHNrYik7CiYjNDM7CQlwcm90b19wdHIgPSAmYW1wO2VoLSZndDtoX3Byb3RvOwomIzQzOwkJaGVhZF9sZW4gPSBzaXplb2YoKmVoKTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoZGF0YV9vZmZzZXQgJmd0OyAwKQomIzQzOwkJc2tiX3B1bGwoc2tiLCBkYXRhX29mZnNldCk7CiYjNDM7CiYjNDM7CWlmICgqcHJvdG9fcHRyICE9IGh0b25zKEVUSF9QX1JUQUcpKSB7CiYjNDM7CQkqc2VxID0gLTE7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwomIzQzOwlydGFnID0gKHN0cnVjdCByX3RhZyAqKSgodW5zaWduZWQgY2hhciAqKWVoICYjNDM7IGhlYWRfbGVuKTsKJiM0MzsKJiM0MzsJKnNlcSA9IChpbnQpbnRvaHMocnRhZy0mZ3Q7c2VxdWVuY2VfbnIpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7LyogUmVjb3ZlcnkgYWxnb3JpdGhtcyAoY2FsbGVkIHdpdGggcmN2eS0mZ3Q7bG9jayBoZWxkKSAgICAgICAgICAgICAgICAgICovCiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7CiYjNDM7LyogUmV0dXJucyB0cnVlID0gcGFzcyBmcmFtZSwgZmFsc2UgPSBkaXNjYXJkIGZyYW1lLgomIzQzOyAqIEBpbmRpdmlkdWFsOiB3aGVuIHRydWUsIHJlc3RhcnQgdGhlIHJlc2V0IHRpbWVyIGV2ZW4gb24gZGlzY2FyZGVkIGZyYW1lcwomIzQzOyAqICAgKHJvZ3VlL2R1cGxpY2F0ZSksIGFzIHJlcXVpcmVkIGZvciBJbmRpdmlkdWFsIFJlY292ZXJ5IChJRUVFIDgwMi4xQ0IgNy41KS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgYm9vbCBmcmVyX3ZlY3Rvcl9hbGcoc3RydWN0IGZyZXJfcmN2eSAqcmN2eSwgaW50IHNlcSwgYm9vbCBpbmRpdmlkdWFsKQomIzQzO3sKJiM0MzsJaW50IGRlbHRhOwomIzQzOwlib29sIHJlc3RhcnRfdGltZXIgPSBmYWxzZTsKJiM0MzsJYm9vbCBwYXNzOwomIzQzOwomIzQzOwlpZiAoc2VxICZsdDsgMCkgewomIzQzOwkJLyogTm8gUi1UQUcgcHJlc2VudCAqLwomIzQzOwkJcmN2eS0mZ3Q7c3RhdHNfdGFnbGVzc19wa3RzJiM0MzsmIzQzOzsKJiM0MzsJCWlmIChyY3Z5LSZndDt0YWtlX25vX3NlcSkgewomIzQzOwkJCXJlc3RhcnRfdGltZXIgPSB0cnVlOwomIzQzOwkJCXBhc3MgPSB0cnVlOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlwYXNzID0gZmFsc2U7CiYjNDM7CQl9CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocmN2eS0mZ3Q7dGFrZV9hbnkpIHsKJiM0MzsJCS8qIEZpcnN0IGZyYW1lIGFmdGVyIHJlc2V0OiBhY2NlcHQgdW5jb25kaXRpb25hbGx5ICovCiYjNDM7CQlyY3Z5LSZndDt0YWtlX2FueSAgICAgPSBmYWxzZTsKJiM0MzsJCXJjdnktJmd0O3Jjdnlfc2VxX251bSA9ICh1MzIpc2VxOwomIzQzOwkJcmN2eS0mZ3Q7c2VxX2hpc3RvcnkgID0gQklUKDApOwomIzQzOwkJcmVzdGFydF90aW1lciA9IHRydWU7CiYjNDM7CQlwYXNzID0gdHJ1ZTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiYjNDM7CWRlbHRhID0gKHNlcSAtIChpbnQpcmN2eS0mZ3Q7cmN2eV9zZXFfbnVtKSAmYW1wOwomIzQzOwkJKGludCkocmN2eS0mZ3Q7c2VxX3NwYWNlIC0gMSk7CiYjNDM7CS8qIE1hcCBkZWx0YSAmZ3Q7IHNlcV9zcGFjZS8yIHRvIG5lZ2F0aXZlIChzaWduZWQgd3JhcCkgKi8KJiM0MzsJaWYgKCh1MzIpZGVsdGEgJmFtcDsgKHUzMikocmN2eS0mZ3Q7c2VxX3NwYWNlIC8gMikpCiYjNDM7CQlkZWx0YSAtPSAoaW50KXJjdnktJmd0O3NlcV9zcGFjZTsKJiM0MzsKJiM0MzsJaWYgKGRlbHRhICZndDs9IChpbnQpcmN2eS0mZ3Q7aGlzdG9yeV9sZW4gfHwKJiM0MzsJICAgIGRlbHRhICZsdDs9IC0oaW50KXJjdnktJmd0O2hpc3RvcnlfbGVuKSB7CiYjNDM7CQkvKiBQYWNrZXQgaXMgb3V0LW9mLXJhbmdlIChyb2d1ZSkuICovCiYjNDM7CQlyY3Z5LSZndDtzdGF0c19yb2d1ZV9wa3RzJiM0MzsmIzQzOzsKJiM0MzsJCWlmIChpbmRpdmlkdWFsKQomIzQzOwkJCXJlc3RhcnRfdGltZXIgPSB0cnVlOwomIzQzOwkJcGFzcyA9IGZhbHNlOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGRlbHRhICZsdDs9IDApIHsKJiM0MzsJCS8qIFBhY2tldCBpcyBvbGQ6IGNoZWNrIHdoZXRoZXIgYWxyZWFkeSBzZWVuLiAqLwomIzQzOwkJaWYgKHJjdnktJmd0O3NlcV9oaXN0b3J5ICZhbXA7IEJJVCgtZGVsdGEpKSB7CiYjNDM7CQkJaWYgKGluZGl2aWR1YWwpCiYjNDM7CQkJCXJlc3RhcnRfdGltZXIgPSB0cnVlOwomIzQzOwkJCS8qIEFscmVhZHkgcmVjZWl2ZWQgKi8KJiM0MzsJCQlwYXNzID0gZmFsc2U7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCS8qIE91dC1vZi1vcmRlciBidXQgbm90IHlldCBzZWVuICovCiYjNDM7CQkJcmN2eS0mZ3Q7c2VxX2hpc3RvcnkgfD0gQklUKC1kZWx0YSk7CiYjNDM7CQkJcmN2eS0mZ3Q7c3RhdHNfb3V0X29mX29yZGVyX3BrdHMmIzQzOyYjNDM7OwomIzQzOwkJCXJlc3RhcnRfdGltZXIgPSB0cnVlOwomIzQzOwkJCXBhc3MgPSB0cnVlOwomIzQzOwkJfQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogZGVsdGEgJmd0OyAwOiBmcmFtZSBpcyBuZXdlciB0aGFuIGV4cGVjdGVkICovCiYjNDM7CWlmIChkZWx0YSAhPSAxKQomIzQzOwkJcmN2eS0mZ3Q7c3RhdHNfb3V0X29mX29yZGVyX3BrdHMmIzQzOyYjNDM7OwomIzQzOwomIzQzOwkvKiBTaGlmdCBoaXN0b3J5IGZvcndhcmQsIGNvdW50aW5nIGFueSBnYXBzIGFzIGxvc3QgKi8KJiM0MzsJd2hpbGUgKC0tZGVsdGEpIHsKJiM0MzsJCWlmICghKHJjdnktJmd0O3NlcV9oaXN0b3J5ICZhbXA7IEJJVChyY3Z5LSZndDtoaXN0b3J5X2xlbiAtIDEpKSkKJiM0MzsJCQlyY3Z5LSZndDtzdGF0c19sb3N0X3BrdHMmIzQzOyYjNDM7OwomIzQzOwkJcmN2eS0mZ3Q7c2VxX2hpc3RvcnkgJmx0OyZsdDs9IDE7CiYjNDM7CX0KJiM0MzsJaWYgKCEocmN2eS0mZ3Q7c2VxX2hpc3RvcnkgJmFtcDsgQklUKHJjdnktJmd0O2hpc3RvcnlfbGVuIC0gMSkpKQomIzQzOwkJcmN2eS0mZ3Q7c3RhdHNfbG9zdF9wa3RzJiM0MzsmIzQzOzsKJiM0MzsJcmN2eS0mZ3Q7c2VxX2hpc3RvcnkgPSAocmN2eS0mZ3Q7c2VxX2hpc3RvcnkgJmx0OyZsdDsgMSkgfCBCSVQoMCk7CiYjNDM7CXJjdnktJmd0O3Jjdnlfc2VxX251bSA9ICh1MzIpc2VxOwomIzQzOwlyZXN0YXJ0X3RpbWVyID0gdHJ1ZTsKJiM0MzsJcGFzcyA9IHRydWU7CiYjNDM7CiYjNDM7b3V0OgomIzQzOwlpZiAocmVzdGFydF90aW1lcikKJiM0MzsJCWZyZXJfcmN2eV90aW1lcl9yZXN0YXJ0KHJjdnkpOwomIzQzOwlyZXR1cm4gcGFzczsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgZnJlcl9tYXRjaF9hbGcoc3RydWN0IGZyZXJfcmN2eSAqcmN2eSwgaW50IHNlcSwgYm9vbCBpbmRpdmlkdWFsKQomIzQzO3sKJiM0MzsJaWYgKHNlcSAmbHQ7IDApIHsKJiM0MzsJCS8qIE5vIFItVEFHOiBNYXRjaCBhbGcgY2Fubm90IGRlZHVwbGljYXRlLCBhbHdheXMgcGFzcy4gKi8KJiM0MzsJCXJjdnktJmd0O3N0YXRzX3RhZ2xlc3NfcGt0cyYjNDM7JiM0Mzs7CiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocmN2eS0mZ3Q7dGFrZV9hbnkpIHsKJiM0MzsJCXJjdnktJmd0O3Rha2VfYW55ICAgICA9IGZhbHNlOwomIzQzOwkJcmN2eS0mZ3Q7cmN2eV9zZXFfbnVtID0gKHUzMilzZXE7CiYjNDM7CQlmcmVyX3JjdnlfdGltZXJfcmVzdGFydChyY3Z5KTsKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICgodTMyKXNlcSA9PSByY3Z5LSZndDtyY3Z5X3NlcV9udW0pIHsKJiM0MzsJCS8qIER1cGxpY2F0ZSAqLwomIzQzOwkJaWYgKGluZGl2aWR1YWwpCiYjNDM7CQkJZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogTmV3IHNlcXVlbmNlIG51bWJlcjogYWNjZXB0IGFuZCB1cGRhdGUgKi8KJiM0MzsJaWYgKCh1MzIpc2VxICE9ICgocmN2eS0mZ3Q7cmN2eV9zZXFfbnVtICYjNDM7IDEpICUgcmN2eS0mZ3Q7c2VxX3NwYWNlKSkKJiM0MzsJCXJjdnktJmd0O3N0YXRzX291dF9vZl9vcmRlcl9wa3RzJiM0MzsmIzQzOzsKJiM0MzsJcmN2eS0mZ3Q7cmN2eV9zZXFfbnVtID0gKHUzMilzZXE7CiYjNDM7CWZyZXJfcmN2eV90aW1lcl9yZXN0YXJ0KHJjdnkpOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7LyogTmV0bGluayBwb2xpY3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwomIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBmcmVyX3BvbGljeVtUQ0FfRlJFUl9NQVggJiM0MzsgMV0gPSB7CiYjNDM7CVtUQ0FfRlJFUl9QQVJNU10gICAgICAgICAgICA9IE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKHNpemVvZihzdHJ1Y3QgdGNfZnJlcikpLAomIzQzOwlbVENBX0ZSRVJfRlVOQ10gICAgICAgICAgICAgPSB7IC50eXBlID0gTkxBX1U4IH0sCiYjNDM7CVtUQ0FfRlJFUl9UQUdfVFlQRV0gICAgICAgICA9IHsgLnR5cGUgPSBOTEFfVTggfSwKJiM0MzsJW1RDQV9GUkVSX1JDVllfSU5ESVZJRFVBTF0gID0geyAudHlwZSA9IE5MQV9GTEFHIH0sCiYjNDM7CVtUQ0FfRlJFUl9SQ1ZZX0FMR10gICAgICAgICA9IHsgLnR5cGUgPSBOTEFfVTggfSwKJiM0MzsJW1RDQV9GUkVSX1JDVllfSElTVE9SWV9MRU5dID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIDEsIDMyKSwKJiM0MzsJW1RDQV9GUkVSX1JDVllfUkVTRVRfTVNFQ10gID0geyAudHlwZSA9IE5MQV9VMzIgfSwKJiM0MzsJW1RDQV9GUkVSX1JDVllfVEFLRV9OT19TRVFdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sCiYjNDM7CVtUQ0FfRlJFUl9SQ1ZZX1RBR19QT1BdICAgICA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LAomIzQzO307CiYjNDM7CiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7LyogQWN0aW9uIGluaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwomIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwomIzQzOwomIzQzO3N0YXRpYyBpbnQgdGNmX2ZyZXJfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSwKJiM0MzsJCQkgc3RydWN0IG5sYXR0ciAqZXN0LCBzdHJ1Y3QgdGNfYWN0aW9uICoqYSwKJiM0MzsJCQkgc3RydWN0IHRjZl9wcm90byAqdHAsIHUzMiBmbGFncywKJiM0MzsJCQkgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQomIzQzO3sKJiM0MzsJc3RydWN0IHRjX2FjdGlvbl9uZXQgKnRuID0gbmV0X2dlbmVyaWMobmV0LCBhY3RfZnJlcl9vcHMubmV0X2lkKTsKJiM0MzsJYm9vbCBiaW5kID0gZmxhZ3MgJmFtcDsgVENBX0FDVF9GTEFHU19CSU5EOwomIzQzOwlzdHJ1Y3QgbmxhdHRyICp0YltUQ0FfRlJFUl9NQVggJiM0MzsgMV07CiYjNDM7CXN0cnVjdCB0Y2ZfY2hhaW4gKmdvdG9fY2ggPSBOVUxMOwomIzQzOwlzdHJ1Y3QgdGNmX2ZyZXIgKmY7CiYjNDM7CXN0cnVjdCB0Y19mcmVyICpwYXJtOwomIzQzOwlib29sIGV4aXN0cyA9IGZhbHNlOwomIzQzOwlpbnQgcmV0ID0gMCwgZXJyLCBpbmRleDsKJiM0MzsJdTggZnVuYywgdGFnX3R5cGU7CiYjNDM7CiYjNDM7CWlmICghbmxhKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O2ZyZXI6IGF0dHJpYnV0ZXMgcmVxdWlyZWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwllcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBUQ0FfRlJFUl9NQVgsIG5sYSwgZnJlcl9wb2xpY3ksIGV4dGFjayk7CiYjNDM7CWlmIChlcnIgJmx0OyAwKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJaWYgKCF0YltUQ0FfRlJFUl9QQVJNU10pIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7ZnJlcjogVENBX0ZSRVJfUEFSTVMgbWlzc2luZyYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CWlmICghdGJbVENBX0ZSRVJfRlVOQ10pIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7ZnJlcjogVENBX0ZSRVJfRlVOQyBtaXNzaW5nJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsJaWYgKCF0YltUQ0FfRlJFUl9UQUdfVFlQRV0pIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7ZnJlcjogVENBX0ZSRVJfVEFHX1RZUEUgbWlzc2luZyYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZ1bmMgICAgID0gbmxhX2dldF91OCh0YltUQ0FfRlJFUl9GVU5DXSk7CiYjNDM7CXRhZ190eXBlID0gbmxhX2dldF91OCh0YltUQ0FfRlJFUl9UQUdfVFlQRV0pOwomIzQzOwomIzQzOwlpZiAoZnVuYyAhPSBUQ0FfRlJFUl9GVU5DX1BVU0ggJmFtcDsmYW1wOyBmdW5jICE9IFRDQV9GUkVSX0ZVTkNfUkVDT1ZFUikgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtmcmVyOiB1bmtub3duIGZ1bmMmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwlpZiAodGFnX3R5cGUgIT0gVENBX0ZSRVJfVEFHX1JUQUcpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7ZnJlcjogb25seSBydGFnIHN1cHBvcnRlZCYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlwYXJtICA9IG5sYV9kYXRhKHRiW1RDQV9GUkVSX1BBUk1TXSk7CiYjNDM7CWluZGV4ID0gcGFybS0mZ3Q7aW5kZXg7CiYjNDM7CiYjNDM7CWVyciA9IHRjZl9pZHJfY2hlY2tfYWxsb2ModG4sICZhbXA7aW5kZXgsIGEsIGJpbmQpOwomIzQzOwlpZiAoZXJyICZsdDsgMCkKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CWV4aXN0cyA9IGVycjsKJiM0MzsKJiM0MzsJaWYgKGV4aXN0cyAmYW1wOyZhbXA7IGJpbmQpCiYjNDM7CQlyZXR1cm4gQUNUX1BfQk9VTkQ7CiYjNDM7CiYjNDM7CWlmICghZXhpc3RzKSB7CiYjNDM7CQlyZXQgPSB0Y2ZfaWRyX2NyZWF0ZV9mcm9tX2ZsYWdzKHRuLCBpbmRleCwgZXN0LCBhLAomIzQzOwkJCQkJCSZhbXA7YWN0X2ZyZXJfb3BzLCBiaW5kLCBmbGFncyk7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJdGNmX2lkcl9jbGVhbnVwKHRuLCBpbmRleCk7CiYjNDM7CQkJcmV0dXJuIHJldDsKJiM0MzsJCX0KJiM0MzsJCXJldCA9IEFDVF9QX0NSRUFURUQ7CiYjNDM7CX0gZWxzZSBpZiAoIShmbGFncyAmYW1wOyBUQ0FfQUNUX0ZMQUdTX1JFUExBQ0UpKSB7CiYjNDM7CQl0Y2ZfaWRyX3JlbGVhc2UoKmEsIGJpbmQpOwomIzQzOwkJcmV0dXJuIC1FRVhJU1Q7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZXJyID0gdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KHBhcm0tJmd0O2FjdGlvbiwgdHAsICZhbXA7Z290b19jaCwgZXh0YWNrKTsKJiM0MzsJaWYgKGVyciAmbHQ7IDApCiYjNDM7CQlnb3RvIHJlbGVhc2VfaWRyOwomIzQzOwomIzQzOwlmID0gdG9fZnJlcigqYSk7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2YtJmd0O3RjZl9sb2NrKTsKJiM0MzsJZ290b19jaCA9IHRjZl9hY3Rpb25fc2V0X2N0cmxhY3QoKmEsIHBhcm0tJmd0O2FjdGlvbiwgZ290b19jaCk7CiYjNDM7CWYtJmd0O2Z1bmMgICAgID0gZnVuYzsKJiM0MzsJZi0mZ3Q7dGFnX3R5cGUgPSB0YWdfdHlwZTsKJiM0MzsJZi0mZ3Q7dGFnX3BvcCAgPSAhIXRiW1RDQV9GUkVSX1JDVllfVEFHX1BPUF07CiYjNDM7CiYjNDM7CWlmIChmdW5jID09IFRDQV9GUkVSX0ZVTkNfUFVTSCkgewomIzQzOwkJaWYgKHJldCA9PSBBQ1RfUF9DUkVBVEVEKSB7CiYjNDM7CQkJc3Bpbl9sb2NrX2luaXQoJmFtcDtmLSZndDtzZXFnZW4ubG9jayk7CiYjNDM7CQkJZi0mZ3Q7c2VxZ2VuLnNlcV9zcGFjZSA9IDEgJmx0OyZsdDsgMTY7CiYjNDM7CQl9CiYjNDM7CQkvKiBnZW5fc2VxX251bSBzdGFydHMgYXQgMCBvbiBjcmVhdGlvbjsgcHJlc2VydmVkIG9uIHJlcGxhY2UgKi8KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXU4IGFsZyA9IHRiW1RDQV9GUkVSX1JDVllfQUxHXSA/CiYjNDM7CQkJIG5sYV9nZXRfdTgodGJbVENBX0ZSRVJfUkNWWV9BTEddKSA6CiYjNDM7CQkJIFRDQV9GUkVSX1JDVllfVkVDVE9SX0FMRzsKJiM0MzsJCXU4IGhpc3RvcnlfbGVuID0gdGJbVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTl0gPwomIzQzOwkJCQkgbmxhX2dldF91OCh0YltUQ0FfRlJFUl9SQ1ZZX0hJU1RPUllfTEVOXSkgOiAzMjsKJiM0MzsJCXUzMiByZXNldF9tc2VjID0gdGJbVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDXSA/CiYjNDM7CQkJCSBubGFfZ2V0X3UzMih0YltUQ0FfRlJFUl9SQ1ZZX1JFU0VUX01TRUNdKSA6IDA7CiYjNDM7CQlib29sIHRha2Vfbm9fc2VxID0gISF0YltUQ0FfRlJFUl9SQ1ZZX1RBS0VfTk9fU0VRXTsKJiM0MzsKJiM0MzsJCWlmIChhbGcgIT0gVENBX0ZSRVJfUkNWWV9WRUNUT1JfQUxHICZhbXA7JmFtcDsKJiM0MzsJCSAgICBhbGcgIT0gVENBX0ZSRVJfUkNWWV9NQVRDSF9BTEcpIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO2YtJmd0O3RjZl9sb2NrKTsKJiM0MzsJCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O2ZyZXI6IHVua25vd24gcmVjb3ZlcnkgYWxnb3JpdGhtJiMzNDspOwomIzQzOwkJCWVyciA9IC1FSU5WQUw7CiYjNDM7CQkJZ290byByZWxlYXNlX2lkcjsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWYtJmd0O2luZGl2aWR1YWwgPSAhIXRiW1RDQV9GUkVSX1JDVllfSU5ESVZJRFVBTF07CiYjNDM7CiYjNDM7CQkvKiBDYW5jZWwgYW55IHJ1bm5pbmcgcmVzZXQgdGltZXIgYmVmb3JlIHJlLWluaXRpYWxpc2luZy4gKi8KJiM0MzsJCWlmIChyZXQgIT0gQUNUX1BfQ1JFQVRFRCAmYW1wOyZhbXA7IGYtJmd0O3JjdnkucmVzZXRfbXNlYykgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7Zi0mZ3Q7dGNmX2xvY2spOwomIzQzOwkJCWhydGltZXJfY2FuY2VsKCZhbXA7Zi0mZ3Q7cmN2eS5ocnRpbWVyKTsKJiM0MzsJCQlzcGluX2xvY2tfYmgoJmFtcDtmLSZndDt0Y2ZfbG9jayk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlmcmVyX3JjdnlfaW5pdF9zdGF0ZSgmYW1wO2YtJmd0O3JjdnksIGFsZywgaGlzdG9yeV9sZW4sCiYjNDM7CQkJCSAgICAgcmVzZXRfbXNlYywgdGFrZV9ub19zZXEpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7Zi0mZ3Q7dGNmX2xvY2spOwomIzQzOwomIzQzOwlpZiAoZ290b19jaCkKJiM0MzsJCXRjZl9jaGFpbl9wdXRfYnlfYWN0KGdvdG9fY2gpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzOwomIzQzO3JlbGVhc2VfaWRyOgomIzQzOwl0Y2ZfaWRyX3JlbGVhc2UoKmEsIGJpbmQpOwomIzQzOwlyZXR1cm4gZXJyOwomIzQzO30KJiM0MzsKJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsvKiBEYXRhIHBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7CiYjNDM7c3RhdGljIGludCB0Y2ZfZnJlcl9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSwKJiM0MzsJCQlzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKQomIzQzO3sKJiM0MzsJc3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhKTsKJiM0MzsJaW50IHJldHZhbDsKJiM0MzsKJiM0MzsJdGNmX2xhc3R1c2VfdXBkYXRlKCZhbXA7Zi0mZ3Q7dGNmX3RtKTsKJiM0MzsJdGNmX2FjdGlvbl91cGRhdGVfYnN0YXRzKCZhbXA7Zi0mZ3Q7Y29tbW9uLCBza2IpOwomIzQzOwlyZXR2YWwgPSBSRUFEX09OQ0UoZi0mZ3Q7dGNmX2FjdGlvbik7CiYjNDM7CiYjNDM7CWlmIChmLSZndDtmdW5jID09IFRDQV9GUkVSX0ZVTkNfUFVTSCkgewomIzQzOwkJc3RydWN0IGZyZXJfc2VxZ2VuICpzZyA9ICZhbXA7Zi0mZ3Q7c2VxZ2VuOwomIzQzOwkJdTE2IHNlcTsKJiM0MzsKJiM0MzsJCXNwaW5fbG9jaygmYW1wO3NnLSZndDtsb2NrKTsKJiM0MzsJCXNlcSA9ICh1MTYpc2ctJmd0O2dlbl9zZXFfbnVtOwomIzQzOwkJaWYgKCYjNDM7JiM0MztzZy0mZ3Q7Z2VuX3NlcV9udW0gJmd0Oz0gc2ctJmd0O3NlcV9zcGFjZSkKJiM0MzsJCQlzZy0mZ3Q7Z2VuX3NlcV9udW0gPSAwOwomIzQzOwkJc2ctJmd0O3N0YXRzX3BrdHMmIzQzOyYjNDM7OwomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtzZy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CQlpZiAoZnJlcl9ydGFnX3B1c2goc2tiLCBzZXEpICZsdDsgMCkgewomIzQzOwkJCXRjZl9hY3Rpb25faW5jX2Ryb3BfcXN0YXRzKCZhbXA7Zi0mZ3Q7Y29tbW9uKTsKJiM0MzsJCQlyZXR1cm4gVENfQUNUX1NIT1Q7CiYjNDM7CQl9CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5ID0gJmFtcDtmLSZndDtyY3Z5OwomIzQzOwkJYm9vbCBwYXNzOwomIzQzOwkJaW50IHNlcTsKJiM0MzsKJiM0MzsJCWlmIChmcmVyX3J0YWdfZGVjb2RlKHNrYiwgJmFtcDtzZXEpICZsdDsgMCkgewomIzQzOwkJCXRjZl9hY3Rpb25faW5jX2Ryb3BfcXN0YXRzKCZhbXA7Zi0mZ3Q7Y29tbW9uKTsKJiM0MzsJCQlyZXR1cm4gVENfQUNUX1NIT1Q7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDtyY3Z5LSZndDtsb2NrKTsKJiM0MzsJCWlmIChyY3Z5LSZndDthbGcgPT0gVENBX0ZSRVJfUkNWWV9WRUNUT1JfQUxHKQomIzQzOwkJCXBhc3MgPSBmcmVyX3ZlY3Rvcl9hbGcocmN2eSwgc2VxLCBmLSZndDtpbmRpdmlkdWFsKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlwYXNzID0gZnJlcl9tYXRjaF9hbGcocmN2eSwgc2VxLCBmLSZndDtpbmRpdmlkdWFsKTsKJiM0MzsKJiM0MzsJCWlmIChwYXNzKSB7CiYjNDM7CQkJcmN2eS0mZ3Q7c3RhdHNfcGFzc2VkX3BrdHMmIzQzOyYjNDM7OwomIzQzOwkJCXNwaW5fdW5sb2NrKCZhbXA7cmN2eS0mZ3Q7bG9jayk7CiYjNDM7CQkJaWYgKGYtJmd0O3RhZ19wb3ApCiYjNDM7CQkJCWZyZXJfcnRhZ19wb3Aoc2tiKTsKJiM0MzsJCQlyZXR1cm4gcmV0dmFsOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcmN2eS0mZ3Q7c3RhdHNfZGlzY2FyZGVkX3BrdHMmIzQzOyYjNDM7OwomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtyY3Z5LSZndDtsb2NrKTsKJiM0MzsJCXJldHVybiBUQ19BQ1RfU0hPVDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0dmFsOwomIzQzO30KJiM0MzsKJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsvKiBEdW1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7CiYjNDM7c3RhdGljIGludCB0Y2ZfZnJlcl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKmEsCiYjNDM7CQkJIGludCBiaW5kLCBpbnQgcmVmKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgY2hhciAqYiA9IHNrYl90YWlsX3BvaW50ZXIoc2tiKTsKJiM0MzsJc3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhKTsKJiM0MzsJc3RydWN0IHRjX2ZyZXIgb3B0ID0gewomIzQzOwkJLmluZGV4ICAgPSBmLSZndDt0Y2ZfaW5kZXgsCiYjNDM7CQkucmVmY250ICA9IHJlZmNvdW50X3JlYWQoJmFtcDtmLSZndDt0Y2ZfcmVmY250KSAtIHJlZiwKJiM0MzsJCS5iaW5kY250ID0gYXRvbWljX3JlYWQoJmFtcDtmLSZndDt0Y2ZfYmluZGNudCkgLSBiaW5kLAomIzQzOwl9OwomIzQzOwlzdHJ1Y3QgdGNmX3QgdDsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7Zi0mZ3Q7dGNmX2xvY2spOwomIzQzOwlvcHQuYWN0aW9uID0gZi0mZ3Q7dGNmX2FjdGlvbjsKJiM0MzsKJiM0MzsJaWYgKG5sYV9wdXQoc2tiLCBUQ0FfRlJFUl9QQVJNUywgc2l6ZW9mKG9wdCksICZhbXA7b3B0KSkKJiM0MzsJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwlpZiAobmxhX3B1dF91OChza2IsIFRDQV9GUkVSX0ZVTkMsIGYtJmd0O2Z1bmMpKQomIzQzOwkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CWlmIChubGFfcHV0X3U4KHNrYiwgVENBX0ZSRVJfVEFHX1RZUEUsIGYtJmd0O3RhZ190eXBlKSkKJiM0MzsJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwlpZiAoZi0mZ3Q7dGFnX3BvcCAmYW1wOyZhbXA7IG5sYV9wdXRfZmxhZyhza2IsIFRDQV9GUkVSX1JDVllfVEFHX1BPUCkpCiYjNDM7CQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKJiM0MzsKJiM0MzsJaWYgKGYtJmd0O2Z1bmMgPT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7CiYjNDM7CQlzcGluX2xvY2soJmFtcDtmLSZndDtzZXFnZW4ubG9jayk7CiYjNDM7CQlpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19TRVFHRU5fUEtUUywKJiM0MzsJCQkJICAgICAgZi0mZ3Q7c2VxZ2VuLnN0YXRzX3BrdHMsIFRDQV9GUkVSX1BBRCkpIHsKJiM0MzsJCQlzcGluX3VubG9jaygmYW1wO2YtJmd0O3NlcWdlbi5sb2NrKTsKJiM0MzsJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKJiM0MzsJCX0KJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7Zi0mZ3Q7c2VxZ2VuLmxvY2spOwomIzQzOwl9IGVsc2UgewomIzQzOwkJdTY0IHRhZ2xlc3MsIG9vbywgcm9ndWUsIGxvc3QsIHJlc2V0cywgcGFzc2VkLCBkaXNjYXJkZWQ7CiYjNDM7CQlzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5ID0gJmFtcDtmLSZndDtyY3Z5OwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrKCZhbXA7cmN2eS0mZ3Q7bG9jayk7CiYjNDM7CQl0YWdsZXNzICAgID0gcmN2eS0mZ3Q7c3RhdHNfdGFnbGVzc19wa3RzOwomIzQzOwkJb29vICAgICAgICA9IHJjdnktJmd0O3N0YXRzX291dF9vZl9vcmRlcl9wa3RzOwomIzQzOwkJcm9ndWUgICAgICA9IHJjdnktJmd0O3N0YXRzX3JvZ3VlX3BrdHM7CiYjNDM7CQlsb3N0ICAgICAgID0gcmN2eS0mZ3Q7c3RhdHNfbG9zdF9wa3RzOwomIzQzOwkJcmVzZXRzICAgICA9IHJjdnktJmd0O3N0YXRzX3Jlc2V0czsKJiM0MzsJCXBhc3NlZCAgICAgPSByY3Z5LSZndDtzdGF0c19wYXNzZWRfcGt0czsKJiM0MzsJCWRpc2NhcmRlZCAgPSByY3Z5LSZndDtzdGF0c19kaXNjYXJkZWRfcGt0czsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7cmN2eS0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CQlpZiAoZi0mZ3Q7aW5kaXZpZHVhbCAmYW1wOyZhbXA7IG5sYV9wdXRfZmxhZyhza2IsIFRDQV9GUkVSX1JDVllfSU5ESVZJRFVBTCkpCiYjNDM7CQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmxhX3B1dF91OChza2IsIFRDQV9GUkVSX1JDVllfQUxHLCByY3Z5LSZndDthbGcpKQomIzQzOwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwkJaWYgKG5sYV9wdXRfdTgoc2tiLCBUQ0FfRlJFUl9SQ1ZZX0hJU1RPUllfTEVOLCByY3Z5LSZndDtoaXN0b3J5X2xlbikpCiYjNDM7CQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmxhX3B1dF91MzIoc2tiLCBUQ0FfRlJFUl9SQ1ZZX1JFU0VUX01TRUMsIHJjdnktJmd0O3Jlc2V0X21zZWMpKQomIzQzOwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwkJaWYgKHJjdnktJmd0O3Rha2Vfbm9fc2VxICZhbXA7JmFtcDsgbmxhX3B1dF9mbGFnKHNrYiwgVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUSkpCiYjNDM7CQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19UQUdMRVNTX1BLVFMsCiYjNDM7CQkJCSAgICAgIHRhZ2xlc3MsIFRDQV9GUkVSX1BBRCkpCiYjNDM7CQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUywKJiM0MzsJCQkJICAgICAgb29vLCBUQ0FfRlJFUl9QQUQpKQomIzQzOwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwkJaWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfUk9HVUVfUEtUUywKJiM0MzsJCQkJICAgICAgcm9ndWUsIFRDQV9GUkVSX1BBRCkpCiYjNDM7CQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19MT1NUX1BLVFMsCiYjNDM7CQkJCSAgICAgIGxvc3QsIFRDQV9GUkVSX1BBRCkpCiYjNDM7CQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19SRVNFVFMsCiYjNDM7CQkJCSAgICAgIHJlc2V0cywgVENBX0ZSRVJfUEFEKSkKJiM0MzsJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKJiM0MzsJCWlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX1BBU1NFRF9QS1RTLAomIzQzOwkJCQkgICAgICBwYXNzZWQsIFRDQV9GUkVSX1BBRCkpCiYjNDM7CQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19ESVNDQVJERURfUEtUUywKJiM0MzsJCQkJICAgICAgZGlzY2FyZGVkLCBUQ0FfRlJFUl9QQUQpKQomIzQzOwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXRjZl90bV9kdW1wKCZhbXA7dCwgJmFtcDtmLSZndDt0Y2ZfdG0pOwomIzQzOwlpZiAobmxhX3B1dF82NGJpdChza2IsIFRDQV9GUkVSX1RNLCBzaXplb2YodCksICZhbXA7dCwgVENBX0ZSRVJfUEFEKSkKJiM0MzsJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwomIzQzOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2YtJmd0O3RjZl9sb2NrKTsKJiM0MzsJcmV0dXJuIHNrYi0mZ3Q7bGVuOwomIzQzOwomIzQzO25sYV9wdXRfZmFpbHVyZToKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtmLSZndDt0Y2ZfbG9jayk7CiYjNDM7CW5sbXNnX3RyaW0oc2tiLCBiKTsKJiM0MzsJcmV0dXJuIC0xOwomIzQzO30KJiM0MzsKJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsvKiBDbGVhbnVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiYjNDM7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGNmX2ZyZXJfY2xlYW51cChzdHJ1Y3QgdGNfYWN0aW9uICphKQomIzQzO3sKJiM0MzsJc3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhKTsKJiM0MzsKJiM0MzsJaWYgKGYtJmd0O2Z1bmMgPT0gVENBX0ZSRVJfRlVOQ19SRUNPVkVSKQomIzQzOwkJaHJ0aW1lcl9jYW5jZWwoJmFtcDtmLSZndDtyY3Z5LmhydGltZXIpOwomIzQzO30KJiM0MzsKJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsvKiBXYWxrZXIgLyBzZWFyY2ggLyBzdGF0cyAvIGZpbGwtc2l6ZSAvIG9mZmxvYWQgICAgICAgICAgICAgICAgICAgICAgKi8KJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsKJiM0MztzdGF0aWMgaW50IHRjZl9mcmVyX3dhbGtlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7CQkJICAgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLCBpbnQgdHlwZSwKJiM0MzsJCQkgICBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uX29wcyAqb3BzLAomIzQzOwkJCSAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0Y19hY3Rpb25fbmV0ICp0biA9IG5ldF9nZW5lcmljKG5ldCwgYWN0X2ZyZXJfb3BzLm5ldF9pZCk7CiYjNDM7CiYjNDM7CXJldHVybiB0Y2ZfZ2VuZXJpY193YWxrZXIodG4sIHNrYiwgY2IsIHR5cGUsIG9wcywgZXh0YWNrKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGNmX2ZyZXJfc3RhdHNfdXBkYXRlKHN0cnVjdCB0Y19hY3Rpb24gKmEsIHU2NCBieXRlcywgdTY0IHBhY2tldHMsCiYjNDM7CQkJCSAgdTY0IGRyb3BzLCB1NjQgbGFzdHVzZSwgYm9vbCBodykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0Y2ZfZnJlciAqZiA9IHRvX2ZyZXIoYSk7CiYjNDM7CXN0cnVjdCB0Y2ZfdCAqdG0gPSAmYW1wO2YtJmd0O3RjZl90bTsKJiM0MzsKJiM0MzsJdGNmX2FjdGlvbl91cGRhdGVfc3RhdHMoYSwgYnl0ZXMsIHBhY2tldHMsIGRyb3BzLCBodyk7CiYjNDM7CXRtLSZndDtsYXN0dXNlID0gbWF4X3QodTY0LCB0bS0mZ3Q7bGFzdHVzZSwgbGFzdHVzZSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzaXplX3QgdGNmX2ZyZXJfZ2V0X2ZpbGxfc2l6ZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphY3QpCiYjNDM7ewomIzQzOwlyZXR1cm4gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB0Y19mcmVyKSkgLyogVENBX0ZSRVJfUEFSTVMgKi8KJiM0MzsJCSYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIFRDQV9GUkVSX0ZVTkMgKi8KJiM0MzsJCSYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIFRDQV9GUkVSX1RBR19UWVBFICovCiYjNDM7CQkmIzQzOyBubGFfdG90YWxfc2l6ZSgwKSAvKiBUQ0FfRlJFUl9SQ1ZZX1RBR19QT1AgKGZsYWcpICovCiYjNDM7CQkmIzQzOyBubGFfdG90YWxfc2l6ZSgwKSAvKiBUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUwgKGZsYWcpICovCiYjNDM7CQkmIzQzOyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBUQ0FfRlJFUl9SQ1ZZX0FMRyAqLwomIzQzOwkJJiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHU4KSkgLyogVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTiAqLwomIzQzOwkJJiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpIC8qIFRDQV9GUkVSX1JDVllfUkVTRVRfTVNFQyAqLwomIzQzOwkJJiM0MzsgbmxhX3RvdGFsX3NpemUoMCkgLyogVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUSAoZmxhZykgKi8KJiM0MzsJCSYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19UQUdMRVNTX1BLVFMgKi8KJiM0MzsJCSYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUyAqLwomIzQzOwkJJiM0MzsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX1JPR1VFX1BLVFMgKi8KJiM0MzsJCSYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19MT1NUX1BLVFMgKi8KJiM0MzsJCSYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19SRVNFVFMgKi8KJiM0MzsJCSYjNDM7IG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19QQVNTRURfUEtUUyAqLwomIzQzOwkJJiM0MzsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX0RJU0NBUkRFRF9QS1RTICovCiYjNDM7CQkmIzQzOyBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2Yoc3RydWN0IHRjZl90KSk7IC8qIFRDQV9GUkVSX1RNICovCiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgdGNmX2ZyZXJfb2ZmbG9hZF9hY3Rfc2V0dXAoc3RydWN0IHRjX2FjdGlvbiAqYWN0LCB2b2lkICplbnRyeV9kYXRhLAomIzQzOwkJCQkgICAgICB1MzIgKmluZGV4X2luYywgYm9vbCBiaW5kLAomIzQzOwkJCQkgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiYjNDM7ewomIzQzOwlpZiAoYmluZCkgewomIzQzOwkJc3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5ICplbnRyeSA9IGVudHJ5X2RhdGE7CiYjNDM7CQlzdHJ1Y3QgdGNmX2ZyZXIgKmYgPSB0b19mcmVyKGFjdCk7CiYjNDM7CiYjNDM7CQllbnRyeS0mZ3Q7aWQgICAgICAgICAgICA9IEZMT1dfQUNUSU9OX0ZSRVI7CiYjNDM7CQllbnRyeS0mZ3Q7ZnJlci5mdW5jICAgICA9IGYtJmd0O2Z1bmM7CiYjNDM7CQllbnRyeS0mZ3Q7ZnJlci50YWdfdHlwZSA9IGYtJmd0O3RhZ190eXBlOwomIzQzOwkJZW50cnktJmd0O2ZyZXIudGFnX3BvcCAgPSBmLSZndDt0YWdfcG9wOwomIzQzOwomIzQzOwkJaWYgKGYtJmd0O2Z1bmMgIT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7CiYjNDM7CQkJZW50cnktJmd0O2ZyZXIuaW5kaXZpZHVhbCAgICAgICA9IGYtJmd0O2luZGl2aWR1YWw7CiYjNDM7CQkJZW50cnktJmd0O2ZyZXIucmN2eV9hbGcgICAgICAgICA9IGYtJmd0O3JjdnkuYWxnOwomIzQzOwkJCWVudHJ5LSZndDtmcmVyLnJjdnlfaGlzdG9yeV9sZW4gPSBmLSZndDtyY3Z5Lmhpc3RvcnlfbGVuOwomIzQzOwkJCWVudHJ5LSZndDtmcmVyLnJjdnlfcmVzZXRfbXNlYyAgPSBmLSZndDtyY3Z5LnJlc2V0X21zZWM7CiYjNDM7CQkJZW50cnktJmd0O2ZyZXIudGFrZV9ub19zZXEgICAgICA9IGYtJmd0O3JjdnkudGFrZV9ub19zZXE7CiYjNDM7CQl9CiYjNDM7CQkqaW5kZXhfaW5jID0gMTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXN0cnVjdCBmbG93X29mZmxvYWRfYWN0aW9uICpmbF9hY3Rpb24gPSBlbnRyeV9kYXRhOwomIzQzOwomIzQzOwkJZmxfYWN0aW9uLSZndDtpZCA9IEZMT1dfQUNUSU9OX0ZSRVI7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzOy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwomIzQzOy8qIE1vZHVsZSBnbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KJiM0MzsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X2ZyZXJfb3BzID0gewomIzQzOwkua2luZAkJICAgID0gJiMzNDtmcmVyJiMzNDssCiYjNDM7CS5pZAkJICAgID0gVENBX0lEX0ZSRVIsCiYjNDM7CS5vd25lcgkJICAgID0gVEhJU19NT0RVTEUsCiYjNDM7CS5hY3QJCSAgICA9IHRjZl9mcmVyX2FjdCwKJiM0MzsJLmluaXQJCSAgICA9IHRjZl9mcmVyX2luaXQsCiYjNDM7CS5jbGVhbnVwCSAgICA9IHRjZl9mcmVyX2NsZWFudXAsCiYjNDM7CS5kdW1wCQkgICAgPSB0Y2ZfZnJlcl9kdW1wLAomIzQzOwkud2FsawkJICAgID0gdGNmX2ZyZXJfd2Fsa2VyLAomIzQzOwkuc3RhdHNfdXBkYXRlCSAgICA9IHRjZl9mcmVyX3N0YXRzX3VwZGF0ZSwKJiM0MzsJLmdldF9maWxsX3NpemUJICAgID0gdGNmX2ZyZXJfZ2V0X2ZpbGxfc2l6ZSwKJiM0MzsJLm9mZmxvYWRfYWN0X3NldHVwICA9IHRjZl9mcmVyX29mZmxvYWRfYWN0X3NldHVwLAomIzQzOwkuc2l6ZQkJICAgID0gc2l6ZW9mKHN0cnVjdCB0Y2ZfZnJlciksCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgX19uZXRfaW5pdCBpbnQgZnJlcl9pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGNfYWN0aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGFjdF9mcmVyX29wcy5uZXRfaWQpOwomIzQzOwomIzQzOwlyZXR1cm4gdGNfYWN0aW9uX25ldF9pbml0KG5ldCwgdG4sICZhbXA7YWN0X2ZyZXJfb3BzKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgX19uZXRfZXhpdCBmcmVyX2V4aXRfbmV0KHN0cnVjdCBsaXN0X2hlYWQgKm5ldF9saXN0KQomIzQzO3sKJiM0MzsJdGNfYWN0aW9uX25ldF9leGl0KG5ldF9saXN0LCBhY3RfZnJlcl9vcHMubmV0X2lkKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBmcmVyX25ldF9vcHMgPSB7CiYjNDM7CS5pbml0ICAgICAgID0gZnJlcl9pbml0X25ldCwKJiM0MzsJLmV4aXRfYmF0Y2ggPSBmcmVyX2V4aXRfbmV0LAomIzQzOwkuaWQgICAgICAgICA9ICZhbXA7YWN0X2ZyZXJfb3BzLm5ldF9pZCwKJiM0MzsJLnNpemUgICAgICAgPSBzaXplb2Yoc3RydWN0IHRjX2FjdGlvbl9uZXQpLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBfX2luaXQgZnJlcl9pbml0X21vZHVsZSh2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRjZl9yZWdpc3Rlcl9hY3Rpb24oJmFtcDthY3RfZnJlcl9vcHMsICZhbXA7ZnJlcl9uZXRfb3BzKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgX19leGl0IGZyZXJfY2xlYW51cF9tb2R1bGUodm9pZCkKJiM0Mzt7CiYjNDM7CXRjZl91bnJlZ2lzdGVyX2FjdGlvbigmYW1wO2FjdF9mcmVyX29wcywgJmFtcDtmcmVyX25ldF9vcHMpOwomIzQzO30KJiM0MzsKJiM0Mzttb2R1bGVfaW5pdChmcmVyX2luaXRfbW9kdWxlKTsKJiM0Mzttb2R1bGVfZXhpdChmcmVyX2NsZWFudXBfbW9kdWxlKTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtJRUVFIDgwMi4xQ0IgRlJFUiB0YyBhY3Rpb24mIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKaW5kZXggNmExOTBhNTI1YTM5MTcuLjY3Yjg5NjYxMWYwODY1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlCkBAIC0zOCw2ICYjNDM7MzgsNyBAQCBURVNUX1BST0dTIDo9IFwKIAlmaWJfcnVsZV90ZXN0cy5zaCBcCiAJZmliX3Rlc3RzLnNoIFwKIAlmaW5fYWNrX2xhdC5zaCBcCiYjNDM7CWZyZXJfdGVzdC5zaCBcCiAJZnFfYmFuZF9wa3RsaW1pdC5zaCBcCiAJZ3JlX2dzby5zaCBcCiAJZ3JlX2lwdjZfbGxhZGRyLnNoIFwKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mcmVyX3Rlc3Quc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZnJlcl90ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lY2Q4ODk1MmY0OTU4MQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mcmVyX3Rlc3Quc2gKQEAgLTAsMCAmIzQzOzEsMTAxMyBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMgQ29weXJpZ2h0IDIwMjYgTlhQCiYjNDM7IwomIzQzOyMgZnJlcl90ZXN0LnNoIC0gSUVFRSA4MDIuMUNCIEZSRVIgdGMgYWN0aW9uIGtzZWxmdGVzdAomIzQzOyMKJiM0MzsjIFRvcG9sb2d5IGZvciB0ZXN0cyAxLTQ6CiYjNDM7IwomIzQzOyMgICBuc190YWxrZXIgIGJvbmQwICh2ZXRoX2EwICYjNDM7IHZldGhfYjApICAmbHQ7LS0tJmd0OyAgYm9uZDEgKHZldGhfYTEgJiM0MzsgdmV0aF9iMSkgIG5zX2xpc3RlbmVyCiYjNDM7IwomIzQzOyMgICBJUF9TUkMgYXNzaWduZWQgdG8gYm9uZDA7ICBJUF9EU1QgYXNzaWduZWQgdG8gYm9uZDEKJiM0MzsjCiYjNDM7IyAgIGJvbmQgbW9kZTogYmFsYW5jZS1yciAocm91bmQtcm9iaW4pLCBzbyBmcmFtZXMgYXJlIGRpc3RyaWJ1dGVkIGFjcm9zcwomIzQzOyMgICAgICAgICAgICAgIGJvdGggc2xhdmVzLiAgRlJFUiBwdXNoIGlzIGNvbmZpZ3VyZWQgb24gYm90aCB2ZXRoX2EwIGFuZAomIzQzOyMgICAgICAgICAgICAgIHZldGhfYjAgZWdyZXNzIHdpdGggY3Jvc3MtbWlycm9yIHNvIGV2ZXJ5IGZyYW1lIHNlbnQgYnkgZWl0aGVyCiYjNDM7IyAgICAgICAgICAgICAgc2xhdmUgY2FycmllcyBhbiBSLVRBRyBhbmQgYSBtaXJyb3JlZCBjb3B5IHJlYWNoZXMgdGhlIHBlZXIuCiYjNDM7IyAgIEZSRVIgcmVjb3ZlcjogdmV0aF9hMS92ZXRoX2IxIGluZ3Jlc3MsIHNoYXJlZCBvciBpbmRpdmlkdWFsIHJlY292ZXIgcGVyIHRlc3QKJiM0MzsjCiYjNDM7IyAgIFBpbmcgcnVucyBmcm9tIGJvbmQwIHRvIGJvbmQxOyB0Y3BkdW1wIGNhcHR1cmVzIG9uIGJvbmQxIChvciBvbiBpbmRpdmlkdWFsCiYjNDM7IyAgIHNsYXZlIGludGVyZmFjZXMgZm9yIHRlc3RzIHdoZXJlIGJvdGggY29waWVzIG11c3QgYmUgb2JzZXJ2YWJsZSkuCiYjNDM7IwomIzQzOyMgVGVzdCA1OiBzaW1wbGUgcG9pbnQtdG8tcG9pbnQsIHNlbGYtY29udGFpbmVkIHRvcG9sb2d5IChubyBib25kKS4KJiM0MzsjIFRlc3QgNjogcmVsYXkgc3lzdGVtLCBzZWxmLWNvbnRhaW5lZCB0b3BvbG9neS4KJiM0MzsjCiYjNDM7IyBBbGwgbmFtZXNwYWNlcywgdmV0aCBwYWlycywgYm9uZCBpbnRlcmZhY2VzLCB0YyBydWxlcyBhbmQgYWRkcmVzc2VzIGFyZQomIzQzOyMgY3JlYXRlZCBhbmQgZGVzdHJveWVkIHdpdGhpbiB0aGlzIHNjcmlwdC4gIEV4dGVybmFsIGRlcGVuZGVuY2llczoKJiM0MzsjICAgLSBrZXJuZWwgd2l0aCBDT05GSUdfTkVUX0FDVF9GUkVSIGFuZCBDT05GSUdfQk9ORElORwomIzQzOyMgICAtIGlwcm91dGUyIHRjIHdpdGggZnJlciBhY3Rpb24gc3VwcG9ydAomIzQzOyMgICAtIHRjcGR1bXAsIHBpbmcKJiM0MzsjICAgLSByb290IHByaXZpbGVnZXMKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIGtzZWxmdGVzdCBsaWJyYXJ5OiBUQVAgb3V0cHV0ICYjNDM7IGV4aXQtY29kZSBjb25zdGFudHMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0Mztrc2Z0X2xpYj0mIzM0OyR7S1NGVF9MSUI6LSQoZGlybmFtZSAmIzM0OyQwJiMzNDspLy4uL2tzZWxmdGVzdC9saWIuc2h9JiMzNDsKJiM0MztpZiBbIC1mICYjMzQ7JGtzZnRfbGliJiMzNDsgXTsgdGhlbgomIzQzOwkjIHNoZWxsY2hlY2sgc291cmNlPS9kZXYvbnVsbAomIzQzOwkuICYjMzQ7JGtzZnRfbGliJiMzNDsKJiM0MztlbHNlCiYjNDM7CSMgTWluaW1hbCBmYWxsYmFjayB3aGVuIHJ1biBvdXRzaWRlIHRoZSBrc2VsZnRlc3QgdHJlZQomIzQzOwlLU0ZUX1BBU1M9MAomIzQzOwlLU0ZUX0ZBSUw9MQomIzQzOwlLU0ZUX1NLSVA9NAomIzQzOwlfa3NmdF9jb3VudD0wCiYjNDM7CV9rc2Z0X3Bhc3M9MAomIzQzOwlfa3NmdF9mYWlsPTAKJiM0MzsJX2tzZnRfc2tpcD0wCiYjNDM7CiYjNDM7CWtzZnRfcHJpbnRfaGVhZGVyKCkgeyBlY2hvICYjMzQ7VEFQIHZlcnNpb24gMTMmIzM0OzsgfQomIzQzOwlrc2Z0X3NldF9wbGFuKCkgICAgIHsgZWNobyAmIzM0OzEuLiQxJiMzNDs7IH0KJiM0MzsJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCkgewomIzQzOwkJX2tzZnRfY291bnQ9JCgoX2tzZnRfY291bnQgJiM0MzsgMSkpOyBfa3NmdF9wYXNzPSQoKF9rc2Z0X3Bhc3MgJiM0MzsgMSkpCiYjNDM7CQllY2hvICYjMzQ7b2sgJF9rc2Z0X2NvdW50IC0gJComIzM0OwomIzQzOwl9CiYjNDM7CWtzZnRfdGVzdF9yZXN1bHRfZmFpbCgpIHsKJiM0MzsJCV9rc2Z0X2NvdW50PSQoKF9rc2Z0X2NvdW50ICYjNDM7IDEpKTsgX2tzZnRfZmFpbD0kKChfa3NmdF9mYWlsICYjNDM7IDEpKQomIzQzOwkJZWNobyAmIzM0O25vdCBvayAkX2tzZnRfY291bnQgLSAkKiYjMzQ7CiYjNDM7CX0KJiM0MzsJa3NmdF90ZXN0X3Jlc3VsdF9za2lwKCkgewomIzQzOwkJX2tzZnRfY291bnQ9JCgoX2tzZnRfY291bnQgJiM0MzsgMSkpOyBfa3NmdF9za2lwPSQoKF9rc2Z0X3NraXAgJiM0MzsgMSkpCiYjNDM7CQllY2hvICYjMzQ7b2sgJF9rc2Z0X2NvdW50IC0gJCogIyBTS0lQJiMzNDsKJiM0MzsJfQomIzQzOwlrc2Z0X3ByaW50X2NudHMoKSB7CiYjNDM7CQllY2hvICYjMzQ7IyBUb3RhbHM6IHBhc3M9JF9rc2Z0X3Bhc3MgZmFpbD0kX2tzZnRfZmFpbCBza2lwPSRfa3NmdF9za2lwJiMzNDsKJiM0MzsJfQomIzQzOwlrc2Z0X2V4aXRfcGFzcygpICAgICB7IGV4aXQgJEtTRlRfUEFTUzsgfQomIzQzOwlrc2Z0X2V4aXRfZmFpbCgpICAgICB7IGV4aXQgJEtTRlRfRkFJTDsgfQomIzQzOwlrc2Z0X2V4aXRfZmFpbF9tc2coKSB7IGVjaG8gJiMzNDsjIEZBVEFMOiAkKiYjMzQ7ICZndDsmYW1wOzI7IGV4aXQgJEtTRlRfRkFJTDsgfQomIzQzO2ZpCiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBDb25maWd1cmF0aW9uIChvdmVycmlkZSB2aWEgZW52aXJvbm1lbnQpCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7VEM9JiMzNDske1RDOi10Y30mIzM0OwomIzQzO1BJTkc9JiMzNDske1BJTkc6LXBpbmd9JiMzNDsKJiM0MztUQ1BEVU1QPSYjMzQ7JHtUQ1BEVU1QOi10Y3BkdW1wfSYjMzQ7CiYjNDM7UElOR19DT1VOVD0mIzM0OyR7UElOR19DT1VOVDotNX0mIzM0OwomIzQzO1BJTkdfVElNRU9VVD0mIzM0OyR7UElOR19USU1FT1VUOi0yfSYjMzQ7CiYjNDM7U0tJUF9NT0RQUk9CRT0mIzM0OyR7U0tJUF9NT0RQUk9CRTotMH0mIzM0OwomIzQzOwomIzQzOyMgQm9uZCB0b3BvbG9neSBpbnRlcmZhY2VzICh0ZXN0cyAxLTQpCiYjNDM7cmVhZG9ubHkgVkVUSF9BMD0mIzM0O2ZyZXJfYTAmIzM0OwomIzQzO3JlYWRvbmx5IFZFVEhfQTE9JiMzNDtmcmVyX2ExJiMzNDsKJiM0MztyZWFkb25seSBWRVRIX0IwPSYjMzQ7ZnJlcl9iMCYjMzQ7CiYjNDM7cmVhZG9ubHkgVkVUSF9CMT0mIzM0O2ZyZXJfYjEmIzM0OwomIzQzO3JlYWRvbmx5IEJPTkQwPSYjMzQ7ZnJlcl9ib25kMCYjMzQ7CiYjNDM7cmVhZG9ubHkgQk9ORDE9JiMzNDtmcmVyX2JvbmQxJiMzNDsKJiM0MzsKJiM0MztyZWFkb25seSBOU19UQUxLRVI9JiMzNDtmcmVyX25zX3RhbGtlciYjMzQ7CiYjNDM7cmVhZG9ubHkgTlNfTElTVEVORVI9JiMzNDtmcmVyX25zX2xpc3RlbmVyJiMzNDsKJiM0MzsKJiM0MztyZWFkb25seSBJUF9TUkM9JiMzNDsxMC4wLjAuMSYjMzQ7CiYjNDM7cmVhZG9ubHkgSVBfRFNUPSYjMzQ7MTAuMC4wLjImIzM0OwomIzQzOwomIzQzOyMgUG9pbnQtdG8tcG9pbnQgdG9wb2xvZ3kgaW50ZXJmYWNlcyAodGVzdCA1KQomIzQzO3JlYWRvbmx5IFAyUF9OU19TUkM9JiMzNDtmcmVyX3AycF9zcmMmIzM0OwomIzQzO3JlYWRvbmx5IFAyUF9OU19EU1Q9JiMzNDtmcmVyX3AycF9kc3QmIzM0OwomIzQzO3JlYWRvbmx5IFAyUF9WRVRIX0EwPSYjMzQ7ZnJlcl9wMnBfYTAmIzM0OwomIzQzO3JlYWRvbmx5IFAyUF9WRVRIX0ExPSYjMzQ7ZnJlcl9wMnBfYTEmIzM0OwomIzQzO3JlYWRvbmx5IElQX1AyUF9TUkM9JiMzNDsxMC4wLjEuMSYjMzQ7CiYjNDM7cmVhZG9ubHkgSVBfUDJQX0RTVD0mIzM0OzEwLjAuMS4yJiMzNDsKJiM0MzsKJiM0MzsjIFJlbGF5IHRvcG9sb2d5IGludGVyZmFjZXMgKHRlc3QgNikKJiM0MzsjCiYjNDM7IyAgIG5zX3RhbGtlciAodGFsa2VyX2V0aC4xMDApIC0tIHRhbGtlcl9ldGgvYnIwX3VwbGluayAtLSBicmlkZ2UwIChicl9yMCkKJiM0MzsjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0gYnIwX3N3cDAvYnIxX3N3cDAgLS1cCiYjNDM7IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXC0tIGJyMF9zd3AxL2JyMV9zd3AxIC0tJiM0MzstLVwKJiM0MzsjCQlicmlkZ2UxIChicl9yMSkgLS0gYnIxX2Rvd25saW5rL2xpc3RlbmVyX2V0aCAtLSBuc19saXN0ZW5lcgomIzQzOyMKJiM0MzsjIGJyaWRnZTAgYWN0cyBhcyBzZXF1ZW5jZSBnZW5lcmF0b3IgKGZyZXIgcHVzaCAmIzQzOyByZXBsaWNhdGUgdG8gYm90aCBwYXRocykuCiYjNDM7IyBicmlkZ2UxIGFjdHMgYXMgZWxpbWluYXRvciAoZnJlciByZWNvdmVyLCBzaGFyZWQsIHRhZy1wb3ApLgomIzQzO3JlYWRvbmx5IFJfTlNfVEFMS0VSPSYjMzQ7ZnJlcl9yX3RhbGtlciYjMzQ7CiYjNDM7cmVhZG9ubHkgUl9OU19CUklER0UwPSYjMzQ7ZnJlcl9yX2JyaWRnZTAmIzM0OwomIzQzO3JlYWRvbmx5IFJfTlNfQlJJREdFMT0mIzM0O2ZyZXJfcl9icmlkZ2UxJiMzNDsKJiM0MztyZWFkb25seSBSX05TX0xJU1RFTkVSPSYjMzQ7ZnJlcl9yX2xpc3RlbmVyJiMzNDsKJiM0MztyZWFkb25seSBSX1RBTEtFUl9FVEg9JiMzNDtyX3Rsa19ldGgmIzM0OyAgICAgICAjIHRhbGtlci1zaWRlIHBoeXNpY2FsIHBvcnQKJiM0MztyZWFkb25seSBSX0JSMF9VUExJTks9JiMzNDtyX2JyMF91cGxpbmsmIzM0OyAgICAjIGJyaWRnZTAgdXBsaW5rIGZhY2luZyB0YWxrZXIKJiM0MztyZWFkb25seSBSX0JSMF9TV1AwPSYjMzQ7cl9icjBfc3dwMCYjMzQ7ICAgICAgICAjIGJyaWRnZTAgcmVkdW5kYW50IHBhdGggcG9ydCAwCiYjNDM7cmVhZG9ubHkgUl9CUjBfU1dQMT0mIzM0O3JfYnIwX3N3cDEmIzM0OyAgICAgICAgIyBicmlkZ2UwIHJlZHVuZGFudCBwYXRoIHBvcnQgMQomIzQzO3JlYWRvbmx5IFJfQlIxX1NXUDA9JiMzNDtyX2JyMV9zd3AwJiMzNDsgICAgICAgICMgYnJpZGdlMSByZWR1bmRhbnQgcGF0aCBwb3J0IDAKJiM0MztyZWFkb25seSBSX0JSMV9TV1AxPSYjMzQ7cl9icjFfc3dwMSYjMzQ7ICAgICAgICAjIGJyaWRnZTEgcmVkdW5kYW50IHBhdGggcG9ydCAxCiYjNDM7cmVhZG9ubHkgUl9CUjFfRE9XTkxJTks9JiMzNDtyX2JyMV9kd25sbmsmIzM0OyAgIyBicmlkZ2UxIGRvd25saW5rIGZhY2luZyBsaXN0ZW5lcgomIzQzO3JlYWRvbmx5IFJfTElTVEVORVJfRVRIPSYjMzQ7cl9sc3RfZXRoJiMzNDsgICAgICMgbGlzdGVuZXItc2lkZSBwaHlzaWNhbCBwb3J0CiYjNDM7cmVhZG9ubHkgUl9CUjA9JiMzNDticl9yMCYjMzQ7CiYjNDM7cmVhZG9ubHkgUl9CUjE9JiMzNDticl9yMSYjMzQ7CiYjNDM7cmVhZG9ubHkgUl9WTEFOPTEwMAomIzQzO3JlYWRvbmx5IFJfSVBfVEFMS0VSPSYjMzQ7MTAuMS4wLjEmIzM0OwomIzQzO3JlYWRvbmx5IFJfSVBfTElTVEVORVI9JiMzNDsxMC4xLjAuMiYjMzQ7CiYjNDM7CiYjNDM7IyBGUkVSIGFjdGlvbiBpbmRleCBjb25zdGFudHMKJiM0MztyZWFkb25seSBJRFhfUFVTSD0xCiYjNDM7cmVhZG9ubHkgSURYX1NIQVJFRF9SQ1ZZPTEwCiYjNDM7cmVhZG9ubHkgSURYX0lORFZfUkNWWV9BPTIwCiYjNDM7cmVhZG9ubHkgSURYX0lORFZfUkNWWV9CPTIxCiYjNDM7cmVhZG9ubHkgSURYX05PX1BPUD0zMAomIzQzO3JlYWRvbmx5IElEWF9QMlBfUkNWWT00MAomIzQzO3JlYWRvbmx5IElEWF9SRUxBWV9QVVNIPTUwCiYjNDM7cmVhZG9ubHkgSURYX1JFTEFZX1JDVlk9NjAKJiM0MzsKJiM0MztyZWFkb25seSBOVU1fVEVTVFM9NgomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgUHJlcmVxdWlzaXRlIGNoZWNrCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7Y2hlY2tfcHJlcmVxdWlzaXRlcygpCiYjNDM7ewomIzQzOwlsb2NhbCBtaXNzaW5nPTAKJiM0MzsKJiM0MzsJWyAmIzM0OyQoaWQgLXUpJiMzNDsgLWVxIDAgXSB8fCB7IGVjaG8gJiMzNDsjIE11c3QgYmUgcnVuIGFzIHJvb3QmIzM0OyAmZ3Q7JmFtcDsyOyBtaXNzaW5nPTE7IH0KJiM0MzsKJiM0MzsJZm9yIGNtZCBpbiBpcCAmIzM0OyRUQyYjMzQ7ICYjMzQ7JFRDUERVTVAmIzM0OyAmIzM0OyRQSU5HJiMzNDs7IGRvCiYjNDM7CQljb21tYW5kIC12ICYjMzQ7JGNtZCYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEgfHwgewomIzQzOwkJCWVjaG8gJiMzNDsjIE1pc3NpbmcgY29tbWFuZDogJGNtZCYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJCQltaXNzaW5nPTEKJiM0MzsJCX0KJiM0MzsJZG9uZQomIzQzOwomIzQzOwlpZiBbICYjMzQ7JG1pc3NpbmcmIzM0OyAtbmUgMCBdOyB0aGVuCiYjNDM7CQlrc2Z0X3NldF9wbGFuICYjMzQ7JE5VTV9URVNUUyYjMzQ7CiYjNDM7CQlmb3IgaSBpbiAkKHNlcSAxICYjMzQ7JE5VTV9URVNUUyYjMzQ7KTsgZG8KJiM0MzsJCQlrc2Z0X3Rlc3RfcmVzdWx0X3NraXAgJiMzNDtwcmVyZXF1aXNpdGVzIG5vdCBtZXQgKHRlc3QgJGkpJiMzNDsKJiM0MzsJCWRvbmUKJiM0MzsJCWtzZnRfcHJpbnRfY250cwomIzQzOwkJZXhpdCAmIzM0OyRLU0ZUX1NLSVAmIzM0OwomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0Mztsb2FkX21vZHVsZSgpCiYjNDM7ewomIzQzOwlbICYjMzQ7JFNLSVBfTU9EUFJPQkUmIzM0OyA9ICYjMzQ7MSYjMzQ7IF0gJmFtcDsmYW1wOyByZXR1cm4KJiM0MzsJaWYgISBtb2Rwcm9iZSBhY3RfZnJlciAyJmd0Oy9kZXYvbnVsbDsgdGhlbgomIzQzOwkJZWNobyAmIzM0OyMgbW9kcHJvYmUgYWN0X2ZyZXIgZmFpbGVkIC0gbWF5IGJlIGJ1aWx0LWluIG9yIHVuYXZhaWxhYmxlJiMzNDsgJmd0OyZhbXA7MgomIzQzOwlmaQomIzQzOwlpZiAhIG1vZHByb2JlIGJvbmRpbmcgMiZndDsvZGV2L251bGw7IHRoZW4KJiM0MzsJCWVjaG8gJiMzNDsjIG1vZHByb2JlIGJvbmRpbmcgZmFpbGVkIC0gbWF5IGJlIGJ1aWx0LWluIG9yIHVuYXZhaWxhYmxlJiMzNDsgJmd0OyZhbXA7MgomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MztjaGVja19mcmVyX2FjdGlvbigpCiYjNDM7ewomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IFwKJiM0MzsJCSRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDk5OSAyJmd0Oy9kZXYvbnVsbCB8fCByZXR1cm4gMQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IFwKJiM0MzsJCSRUQyBhY3Rpb25zIGRlbCBhY3Rpb24gZnJlciBpbmRleCA5OTkgMiZndDsvZGV2L251bGwgfHwgdHJ1ZQomIzQzOwlyZXR1cm4gMAomIzQzO30KJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEJvbmQgdG9wb2xvZ3kgc2V0dXAgLyB0ZWFyZG93biAodXNlZCBieSB0ZXN0cyAxLTQpCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7c2V0dXBfdG9wb2xvZ3koKQomIzQzO3sKJiM0MzsJZm9yIG4gaW4gJiMzNDskTlNfVEFMS0VSJiMzNDsgJiMzNDskTlNfTElTVEVORVImIzM0OzsgZG8KJiM0MzsJCWlwIG5ldG5zIGFkZCAmIzM0OyRuJiMzNDsKJiM0MzsJZG9uZQomIzQzOwomIzQzOwlpcCBsaW5rIGFkZCAmIzM0OyRWRVRIX0EwJiMzNDsgdHlwZSB2ZXRoIHBlZXIgbmFtZSAmIzM0OyRWRVRIX0ExJiMzNDsKJiM0MzsJaXAgbGluayBzZXQgJiMzNDskVkVUSF9BMCYjMzQ7IG5ldG5zICYjMzQ7JE5TX1RBTEtFUiYjMzQ7CiYjNDM7CWlwIGxpbmsgc2V0ICYjMzQ7JFZFVEhfQTEmIzM0OyBuZXRucyAmIzM0OyROU19MSVNURU5FUiYjMzQ7CiYjNDM7CiYjNDM7CWlwIGxpbmsgYWRkICYjMzQ7JFZFVEhfQjAmIzM0OyB0eXBlIHZldGggcGVlciBuYW1lICYjMzQ7JFZFVEhfQjEmIzM0OwomIzQzOwlpcCBsaW5rIHNldCAmIzM0OyRWRVRIX0IwJiMzNDsgbmV0bnMgJiMzNDskTlNfVEFMS0VSJiMzNDsKJiM0MzsJaXAgbGluayBzZXQgJiMzNDskVkVUSF9CMSYjMzQ7IG5ldG5zICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsKJiM0MzsKJiM0MzsJIyBuc190YWxrZXI6IGNyZWF0ZSBib25kMCAoYmFsYW5jZS1yciksIGZyYW1lcyByb3VuZC1yb2JpbiBhY3Jvc3MgYm90aCBzbGF2ZXMuCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfVEFMS0VSJiMzNDsgaXAgbGluayBzZXQgbG8gdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19UQUxLRVImIzM0OyBpcCBsaW5rIGFkZCAmIzM0OyRCT05EMCYjMzQ7IHR5cGUgYm9uZCBtb2RlIGJhbGFuY2UtcnIgbWlpbW9uIDEwMAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFZFVEhfQTAmIzM0OyBtYXN0ZXIgJiMzNDskQk9ORDAmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFZFVEhfQjAmIzM0OyBtYXN0ZXIgJiMzNDskQk9ORDAmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFZFVEhfQTAmIzM0OyB1cAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFZFVEhfQjAmIzM0OyB1cAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JEJPTkQwJiMzNDsgdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19UQUxLRVImIzM0OyBpcCBhZGRyIGFkZCAmIzM0OyR7SVBfU1JDfS8yNCYjMzQ7IGRldiAmIzM0OyRCT05EMCYjMzQ7CiYjNDM7CiYjNDM7CSMgbnNfbGlzdGVuZXI6IGNyZWF0ZSBib25kMSAoYmFsYW5jZS1ycikuCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfTElTVEVORVImIzM0OyBpcCBsaW5rIHNldCBsbyB1cAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgaXAgbGluayBhZGQgJiMzNDskQk9ORDEmIzM0OyB0eXBlIGJvbmQgbW9kZSBiYWxhbmNlLXJyIG1paW1vbiAxMDAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFZFVEhfQTEmIzM0OyBtYXN0ZXIgJiMzNDskQk9ORDEmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgaXAgbGluayBzZXQgJiMzNDskVkVUSF9CMSYjMzQ7IG1hc3RlciAmIzM0OyRCT05EMSYjMzQ7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfTElTVEVORVImIzM0OyBpcCBsaW5rIHNldCAmIzM0OyRWRVRIX0ExJiMzNDsgdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFZFVEhfQjEmIzM0OyB1cAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgaXAgbGluayBzZXQgJiMzNDskQk9ORDEmIzM0OyB1cAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgaXAgYWRkciBhZGQgJiMzNDske0lQX0RTVH0vMjQmIzM0OyBkZXYgJiMzNDskQk9ORDEmIzM0OwomIzQzOwomIzQzOwkjIFN0YXRpYyBBUlAgc28gTDIgZm9yd2FyZGluZyB3b3JrcyB3aXRob3V0IEFSUCBicm9hZGNhc3RzLgomIzQzOwkjIFdpdGggYmFsYW5jZS1yciBib3RoIHNsYXZlcyBzaGFyZSB0aGUgYm9uZCBNQUMuCiYjNDM7CWxvY2FsIG1hY19ib25kMCBtYWNfYm9uZDEKJiM0MzsJbWFjX2JvbmQwPSQoaXAgbmV0bnMgZXhlYyAmIzM0OyROU19UQUxLRVImIzM0OyAgIGNhdCAvc3lzL2NsYXNzL25ldC8mIzM0OyRCT05EMCYjMzQ7L2FkZHJlc3MpCiYjNDM7CW1hY19ib25kMT0kKGlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfTElTVEVORVImIzM0OyBjYXQgL3N5cy9jbGFzcy9uZXQvJiMzNDskQk9ORDEmIzM0Oy9hZGRyZXNzKQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7ICAgaXAgbmVpZ2ggYWRkICYjMzQ7JElQX0RTVCYjMzQ7IGxsYWRkciAmIzM0OyRtYWNfYm9uZDEmIzM0OyBkZXYgJiMzNDskQk9ORDAmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgaXAgbmVpZ2ggYWRkICYjMzQ7JElQX1NSQyYjMzQ7IGxsYWRkciAmIzM0OyRtYWNfYm9uZDAmIzM0OyBkZXYgJiMzNDskQk9ORDEmIzM0OwomIzQzO30KJiM0MzsKJiM0MztjbGVhbnVwKCkKJiM0Mzt7CiYjNDM7CWZvciBuIGluICYjMzQ7JE5TX1RBTEtFUiYjMzQ7ICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgXAomIzQzOwkJJiMzNDskUDJQX05TX1NSQyYjMzQ7ICYjMzQ7JFAyUF9OU19EU1QmIzM0OyBcCiYjNDM7CQkmIzM0OyRSX05TX1RBTEtFUiYjMzQ7ICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7ICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7ICYjMzQ7JFJfTlNfTElTVEVORVImIzM0OzsgZG8KJiM0MzsJCWlwIG5ldG5zIGRlbCAmIzM0OyRuJiMzNDsgMiZndDsvZGV2L251bGwgfHwgdHJ1ZQomIzQzOwlkb25lCiYjNDM7fQomIzQzO3RyYXAgY2xlYW51cCBFWElUCiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBUQyBydWxlIGhlbHBlcnMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzsjIFB1c2ggb24gYm90aCB2ZXRoX2EwIGFuZCB2ZXRoX2IwIGVncmVzcyB1c2luZyB0aGUgc2FtZSBzaGFyZWQgZnJlciBwdXNoCiYjNDM7IyBhY3Rpb24gKElEWF9QVVNIKS4gIEVhY2ggc2xhdmUgYWxzbyBtaXJyb3JzIHRvIHRoZSBvdGhlciBzbyB0aGF0IGV2ZXJ5CiYjNDM7IyBvdXRnb2luZyBmcmFtZSBpcyByZXBsaWNhdGVkIG9udG8gYm90aCBwYXRocyByZWdhcmRsZXNzIG9mIHdoaWNoIHNsYXZlIHRoZQomIzQzOyMgYm9uZCBjdXJyZW50bHkgc2VsZWN0cy4gIFRoaXMgcHJldmVudHMgcGFja2V0IGxvc3MgZHVyaW5nIGJvbmQgbGluayBjaGFuZ2VzLgomIzQzO3NldHVwX3B1c2hfbWlycm9yKCkKJiM0Mzt7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfVEFMS0VSJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgJiMzNDskVkVUSF9BMCYjMzQ7IGNsc2FjdAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRWRVRIX0EwJiMzNDsgZWdyZXNzIFwKJiM0MzsJCXByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IFwKJiM0MzsJCWFjdGlvbiBmcmVyIHB1c2ggaW5kZXggJElEWF9QVVNIIFwKJiM0MzsJCWFjdGlvbiBtaXJyZWQgZWdyZXNzIG1pcnJvciBkZXYgJiMzNDskVkVUSF9CMCYjMzQ7CiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfVEFMS0VSJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgJiMzNDskVkVUSF9CMCYjMzQ7IGNsc2FjdAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRWRVRIX0IwJiMzNDsgZWdyZXNzIFwKJiM0MzsJCXByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IFwKJiM0MzsJCWFjdGlvbiBmcmVyIHB1c2ggaW5kZXggJElEWF9QVVNIIFwKJiM0MzsJCWFjdGlvbiBtaXJyZWQgZWdyZXNzIG1pcnJvciBkZXYgJiMzNDskVkVUSF9BMCYjMzQ7CiYjNDM7fQomIzQzOwomIzQzO3RlYXJkb3duX3RjKCkKJiM0Mzt7CiYjNDM7CWZvciBkZXYgaW4gJiMzNDskVkVUSF9BMCYjMzQ7ICYjMzQ7JFZFVEhfQjAmIzM0OzsgZG8KJiM0MzsJCWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfVEFMS0VSJiMzNDsgJFRDIHFkaXNjIGRlbCBkZXYgJiMzNDskZGV2JiMzNDsgY2xzYWN0IFwKJiM0MzsJCQkyJmd0Oy9kZXYvbnVsbCB8fCB0cnVlCiYjNDM7CWRvbmUKJiM0MzsJZm9yIGRldiBpbiAmIzM0OyRWRVRIX0ExJiMzNDsgJiMzNDskVkVUSF9CMSYjMzQ7OyBkbwomIzQzOwkJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBxZGlzYyBkZWwgZGV2ICYjMzQ7JGRldiYjMzQ7IGNsc2FjdCBcCiYjNDM7CQkJMiZndDsvZGV2L251bGwgfHwgdHJ1ZQomIzQzOwlkb25lCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfVEFMS0VSJiMzNDsgICAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyJmd0Oy9kZXYvbnVsbCB8fCB0cnVlCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfTElTVEVORVImIzM0OyAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyJmd0Oy9kZXYvbnVsbCB8fCB0cnVlCiYjNDM7fQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgUGFja2V0LWNhcHR1cmUgaGVscGVycwomIzQzOyMKJiM0MzsjIGNhcHR1cmVfc3RhcnRfb24gTlMgSUZBQ0UgUENBUCBbQlBGX0ZJTFRFUl0KJiM0MzsjICAgU3RhcnRzIHRjcGR1bXAgaW4gbmFtZXNwYWNlIE5TIG9uIElGQUNFLCB3cml0aW5nIHRvIFBDQVAuCiYjNDM7IyAgIFN0b3JlcyBQSUQgaW4gX0NBUF9QSUQuCiYjNDM7IwomIzQzOyMgY2FwdHVyZV9zdG9wCiYjNDM7IyAgIFdhaXRzIGZvciB0Y3BkdW1wIChzdG9yZWQgaW4gX0NBUF9QSUQpIHRvIGZpbmlzaC4KJiM0MzsjCiYjNDM7IyBjYXB0dXJlX2NvdW50X29uIE5TIFBDQVAKJiM0MzsjICAgUHJpbnRzIHRoZSBudW1iZXIgb2YgY2FwdHVyZWQgcGFja2V0cy4KJiM0MzsjCiYjNDM7IyBDb252ZW5pZW5jZSB3cmFwcGVycyBjYXB0dXJlX3N0YXJ0IC8gY2FwdHVyZV9jb3VudCB0YXJnZXQgYm9uZDEgaW4KJiM0MzsjIE5TX0xJU1RFTkVSICh0aGUgcHJpbWFyeSBvYnNlcnZhdGlvbiBwb2ludCBmb3IgdGVzdHMgMiBhbmQgNCkuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7X0NBUF9QSUQ9JiMzNDsmIzM0OwomIzQzOwomIzQzO2NhcHR1cmVfc3RhcnRfb24oKQomIzQzO3sKJiM0MzsJbG9jYWwgbnM9JiMzNDskMSYjMzQ7IGlmYWNlPSYjMzQ7JDImIzM0OyBwY2FwPSYjMzQ7JDMmIzM0OyBmaWx0ZXI9JiMzNDskezQ6LX0mIzM0OwomIzQzOwomIzQzOwlpZiBbIC1uICYjMzQ7JGZpbHRlciYjMzQ7IF07IHRoZW4KJiM0MzsJCWlwIG5ldG5zIGV4ZWMgJiMzNDskbnMmIzM0OyB0aW1lb3V0IDQgXAomIzQzOwkJCSRUQ1BEVU1QIC1pICYjMzQ7JGlmYWNlJiMzNDsgLXcgJiMzNDskcGNhcCYjMzQ7IFwKJiM0MzsJCQktLWltbWVkaWF0ZS1tb2RlIC1aIHJvb3QgLXkgRU4xME1CIFwKJiM0MzsJCQkkZmlsdGVyICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEgJmFtcDsKJiM0MzsJZWxzZQomIzQzOwkJaXAgbmV0bnMgZXhlYyAmIzM0OyRucyYjMzQ7IHRpbWVvdXQgNCBcCiYjNDM7CQkJJFRDUERVTVAgLWkgJiMzNDskaWZhY2UmIzM0OyAtdyAmIzM0OyRwY2FwJiMzNDsgXAomIzQzOwkJCS0taW1tZWRpYXRlLW1vZGUgLVogcm9vdCAteSBFTjEwTUIgXAomIzQzOwkJCSZndDsvZGV2L251bGwgMiZndDsmYW1wOzEgJmFtcDsKJiM0MzsJZmkKJiM0MzsJX0NBUF9QSUQ9JCEKJiM0MzsKJiM0MzsJIyBXYWl0IHVudGlsIHRjcGR1bXAgb3BlbnMgYSBwYWNrZXQgc29ja2V0IChtYXggfjIuNSBzKS4KJiM0MzsJbG9jYWwgdHJpZXM9MAomIzQzOwl3aGlsZSBbICR0cmllcyAtbHQgNTAgXTsgZG8KJiM0MzsJCWlwIG5ldG5zIGV4ZWMgJiMzNDskbnMmIzM0OyBncmVwIC1xICYjMzQ7JGlmYWNlJiMzNDsgL3Byb2MvbmV0L3BhY2tldCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGJyZWFrCiYjNDM7CQlzbGVlcCAwLjA1CiYjNDM7CQl0cmllcz0kKCh0cmllcyAmIzQzOyAxKSkKJiM0MzsJZG9uZQomIzQzO30KJiM0MzsKJiM0MztjYXB0dXJlX3N0b3AoKQomIzQzO3sKJiM0MzsJWyAtbiAmIzM0OyRfQ0FQX1BJRCYjMzQ7IF0gfHwgcmV0dXJuIDAKJiM0MzsJd2FpdCAmIzM0OyRfQ0FQX1BJRCYjMzQ7IDImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsJX0NBUF9QSUQ9JiMzNDsmIzM0OwomIzQzO30KJiM0MzsKJiM0MztjYXB0dXJlX2NvdW50X29uKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIG5zPSYjMzQ7JDEmIzM0OyBwY2FwPSYjMzQ7JDImIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JG5zJiMzNDsgXAomIzQzOwkJJFRDUERVTVAgLXIgJiMzNDskcGNhcCYjMzQ7IC0tbm8tcHJvbWlzY3VvdXMtbW9kZSAyJmd0Oy9kZXYvbnVsbCBcCiYjNDM7CQl8IGdyZXAgLWMgJiMzNDteWzAtOV0mIzM0OyB8fCB0cnVlCiYjNDM7fQomIzQzOwomIzQzOyMgQ29udmVuaWVuY2Ugd3JhcHBlcnM6IGRlZmF1bHQgdG8gYm9uZDEgaW4gTlNfTElTVEVORVIKJiM0MztjYXB0dXJlX3N0YXJ0KCkgeyBjYXB0dXJlX3N0YXJ0X29uICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJiMzNDskQk9ORDEmIzM0OyAmIzM0OyRAJiMzNDs7IH0KJiM0MztjYXB0dXJlX2NvdW50KCkgeyBjYXB0dXJlX2NvdW50X29uICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJiMzNDskMSYjMzQ7OyB9CiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBQaW5nIGhlbHBlcgomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzO2RvX3BpbmcoKQomIzQzO3sKJiM0MzsJbG9jYWwgcmM9MAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IFwKJiM0MzsJCSRQSU5HIC1jICYjMzQ7JFBJTkdfQ09VTlQmIzM0OyAtVyAmIzM0OyRQSU5HX1RJTUVPVVQmIzM0OyAtaSAwLjIgLXEgXAomIzQzOwkJJiMzNDskSVBfRFNUJiMzNDsgJmd0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MSB8fCByYz0kPwomIzQzOwlyZXR1cm4gJHJjCiYjNDM7fQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgdGMgc3RhdGlzdGljcyBwYXJzZXIKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0Mzt0Y19zdGF0KCkKJiM0Mzt7CiYjNDM7CWxvY2FsIGR1bXA9JiMzNDskMSYjMzQ7IGZpZWxkPSYjMzQ7JDImIzM0OwomIzQzOwllY2hvICYjMzQ7JGR1bXAmIzM0OyB8IGF3ayAtRiYjMzQ7JHtmaWVsZH09JiMzNDsgJiMzOTtORiZndDsxe3NwbGl0KCQyLGEsJiMzNDsgJiMzNDspO3ByaW50IGFbMV07ZXhpdH0mIzM5OyB8fCBlY2hvICYjMzQ7MCYjMzQ7CiYjNDM7fQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVEVTVCAxOiBQVVNIIFZFUklGWSAoYm9uZCB0b3BvbG9neSkKJiM0MzsjCiYjNDM7IyBPbmx5IHB1c2ggaXMgY29uZmlndXJlZCBvbiB0aGUgdGFsa2VyIHNpZGU7IG5vIHJlY292ZXIgb24gdGhlIGxpc3RlbmVyLgomIzQzOyMgVGhlIHB1c2ggYWN0aW9uIG9uIHZldGhfYTAgZWdyZXNzIGluc2VydHMgYW4gUi1UQUcgYW5kIG1pcnJvcnMgYSBjb3B5IHRvCiYjNDM7IyB2ZXRoX2IwLCBzbyBib3RoIGxpc3RlbmVyIHNsYXZlcyAodmV0aF9hMSBhbmQgdmV0aF9iMSkgcmVjZWl2ZSBhIGZyYW1lCiYjNDM7IyB3aXRoIEV0aGVyVHlwZSAweEYxQzEuICBDYXB0dXJlcyBydW4gc2VxdWVudGlhbGx5IG9uIGVhY2ggc2xhdmUgdG8gdmVyaWZ5CiYjNDM7IyB0aGF0IGJvdGggcGF0aHMgY2FycnkgUi1UQUcgZnJhbWVzLgomIzQzOyMKJiM0MzsjIFBhc3MgY3JpdGVyaWE6CiYjNDM7IyAgIC0gdmV0aF9hMSBjYXB0dXJlcyAmZ3Q7PSAxIFItVEFHIGZyYW1lCiYjNDM7IyAgIC0gdmV0aF9iMSBjYXB0dXJlcyAmZ3Q7PSAxIFItVEFHIGZyYW1lCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7dGVzdF9wdXNoX3ZlcmlmeV9ib25kKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHBjYXBfYSBwY2FwX2IgY2FwX2EgY2FwX2IKJiM0MzsJbG9jYWwgcmVzdWx0PSYjMzQ7cGFzcyYjMzQ7CiYjNDM7CiYjNDM7CXNldHVwX3B1c2hfbWlycm9yCiYjNDM7CiYjNDM7CSMgQ2FwdHVyZSAxOiBSLVRBRyBmcmFtZXMgb24gdmV0aF9hMSAocGF0aCBBKQomIzQzOwlwY2FwX2E9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfcHVzaF9hX1hYWFhYWC5wY2FwKQomIzQzOwljYXB0dXJlX3N0YXJ0X29uICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJiMzNDskVkVUSF9BMSYjMzQ7ICYjMzQ7JHBjYXBfYSYjMzQ7ICYjMzQ7ZXRoZXIgcHJvdG8gMHhmMWMxJiMzNDsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19UQUxLRVImIzM0OyBcCiYjNDM7CQkkUElORyAtYyAzIC1XIDEgLWkgMC4yIC1xICYjMzQ7JElQX0RTVCYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEgfHwgdHJ1ZQomIzQzOwljYXB0dXJlX3N0b3AKJiM0MzsJY2FwX2E9JChjYXB0dXJlX2NvdW50X29uICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJiMzNDskcGNhcF9hJiMzNDspCiYjNDM7CXJtIC1mICYjMzQ7JHBjYXBfYSYjMzQ7CiYjNDM7CiYjNDM7CSMgQ2FwdHVyZSAyOiBSLVRBRyBmcmFtZXMgb24gdmV0aF9iMSAocGF0aCBCLCBtaXJyb3JlZCBjb3B5KQomIzQzOwlwY2FwX2I9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfcHVzaF9iX1hYWFhYWC5wY2FwKQomIzQzOwljYXB0dXJlX3N0YXJ0X29uICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJiMzNDskVkVUSF9CMSYjMzQ7ICYjMzQ7JHBjYXBfYiYjMzQ7ICYjMzQ7ZXRoZXIgcHJvdG8gMHhmMWMxJiMzNDsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19UQUxLRVImIzM0OyBcCiYjNDM7CQkkUElORyAtYyAzIC1XIDEgLWkgMC4yIC1xICYjMzQ7JElQX0RTVCYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEgfHwgdHJ1ZQomIzQzOwljYXB0dXJlX3N0b3AKJiM0MzsJY2FwX2I9JChjYXB0dXJlX2NvdW50X29uICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJiMzNDskcGNhcF9iJiMzNDspCiYjNDM7CXJtIC1mICYjMzQ7JHBjYXBfYiYjMzQ7CiYjNDM7CiYjNDM7CXRlYXJkb3duX3RjCiYjNDM7CiYjNDM7CWVjaG8gJiMzNDsjIGJvbmQgcHVzaCB2ZXJpZnk6IHZldGhfYTEgUi1UQUc9JGNhcF9hIHZldGhfYjEgUi1UQUc9JGNhcF9iJiMzNDsKJiM0MzsKJiM0MzsJWyAmIzM0OyRjYXBfYSYjMzQ7IC1nZSAxIF0gfHwgcmVzdWx0PSYjMzQ7ZmFpbCYjMzQ7CiYjNDM7CVsgJiMzNDskY2FwX2ImIzM0OyAtZ2UgMSBdIHx8IHJlc3VsdD0mIzM0O2ZhaWwmIzM0OwomIzQzOwomIzQzOwlpZiBbICYjMzQ7JHJlc3VsdCYjMzQ7ID0gJiMzNDtwYXNzJiMzNDsgXTsgdGhlbgomIzQzOwkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFwKJiM0MzsJCQkmIzM0O2JvbmQgcHVzaCB2ZXJpZnk6IFItVEFHIG9uIGJvdGggcGF0aHMgKGExPSRjYXBfYSBiMT0kY2FwX2IpJiMzNDsKJiM0MzsJZWxzZQomIzQzOwkJa3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFwKJiM0MzsJCQkmIzM0O2JvbmQgcHVzaCB2ZXJpZnk6IGV4cGVjdGVkIFItVEFHIG9uIGJvdGggcGF0aHMgKGExPSRjYXBfYSBiMT0kY2FwX2IpJiMzNDsKJiM0MzsJZmkKJiM0Mzt9CiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBURVNUIDI6IFNIQVJFRCBSRUNPVkVSIEUyRSAoYm9uZCB0b3BvbG9neSkKJiM0MzsjCiYjNDM7IyB2ZXRoX2ExIGFuZCB2ZXRoX2IxIGluZ3Jlc3Mgc2hhcmUgb25lIHJlY292ZXIgYWN0aW9uIChpZHg9MTApIHdpdGggdGFnLXBvcC4KJiM0MzsjIFRoZSBsaXN0ZW5lciByZWNlaXZlcyB0d28gUi1UQUcgY29waWVzIHBlciByZXF1ZXN0OyB0aGUgc2hhcmVkIHJlY292ZXIgcGFzc2VzCiYjNDM7IyBleGFjdGx5IG9uZSBhbmQgZGlzY2FyZHMgdGhlIG90aGVyLiAgVGhlIHJlY292ZXJlZCBwbGFpbiBJQ01QIHJlYWNoZXMgYm9uZDEmIzM5O3MKJiM0MzsjIElQIHN0YWNrIGFuZCBhIHJlcGx5IGlzIHNlbnQsIG1ha2luZyBwaW5nIHN1Y2NlZWQuCiYjNDM7IwomIzQzOyMgUGFzcyBjcml0ZXJpYToKJiM0MzsjICAgLSBwaW5nIHN1Y2NlZWRzIChyYz0wKQomIzQzOyMgICAtIHRjcGR1bXAgb24gYm9uZDEgY2FwdHVyZXMgZXhhY3RseSBQSU5HX0NPVU5UIElDTVAgZWNoby1yZXF1ZXN0IGZyYW1lcwomIzQzOyMgICAgIChmaWx0ZXIgaXMgcmVzdHJpY3RlZCB0byB0eXBlPTggdG8gZXhjbHVkZSBlY2hvIHJlcGxpZXMsIHdoaWNoIHdvdWxkCiYjNDM7IyAgICAgZG91YmxlIHRoZSBjb3VudCBzaW5jZSBib25kMSBhbHNvIG9yaWdpbmF0ZXMgdGhlIHJlcGx5IHBhY2tldHMpCiYjNDM7IyAgIC0gdGMgc3RhdHMgb24gdmV0aF9hMTogcGFzc2VkICZndDs9IFBJTkdfQ09VTlQsIGRpc2NhcmRlZCAmZ3Q7PSBQSU5HX0NPVU5UCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7dGVzdF9zaGFyZWRfcmVjb3Zlcl9ib25kKCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHBjYXAgY2FwX2NvdW50IHBpbmdfcmM9MAomIzQzOwlsb2NhbCBkdW1wX2EKJiM0MzsJbG9jYWwgdG90YWxfcGFzc2VkIHRvdGFsX2Rpc2NhcmRlZCB0YWdsZXNzCiYjNDM7CWxvY2FsIHJlc3VsdD0mIzM0O3Bhc3MmIzM0OwomIzQzOwomIzQzOwlzZXR1cF9wdXNoX21pcnJvcgomIzQzOwomIzQzOwkjIHZldGhfYTEgaW5ncmVzczogY3JlYXRlIHNoYXJlZCByZWNvdmVyIGFjdGlvbiB3aXRoIHRhZy1wb3AKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2ICYjMzQ7JFZFVEhfQTEmIzM0OyBjbHNhY3QKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRWRVRIX0ExJiMzNDsgaW5ncmVzcyBcCiYjNDM7CQlwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXAomIzQzOwkJYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFwKJiM0MzsJCQlyZXNldC10aW1lIDIwMDAgdGFnLXBvcCBpbmRleCAkSURYX1NIQVJFRF9SQ1ZZCiYjNDM7CiYjNDM7CSMgdmV0aF9iMSBpbmdyZXNzOiBiaW5kIHRvIHRoZSBzYW1lIHNoYXJlZCBhY3Rpb24gYnkgaW5kZXgKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2ICYjMzQ7JFZFVEhfQjEmIzM0OyBjbHNhY3QKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRWRVRIX0IxJiMzNDsgaW5ncmVzcyBcCiYjNDM7CQlwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXAomIzQzOwkJYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAkSURYX1NIQVJFRF9SQ1ZZCiYjNDM7CiYjNDM7CXBjYXA9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfc2hhcmVkX1hYWFhYWC5wY2FwKQomIzQzOwljYXB0dXJlX3N0YXJ0ICYjMzQ7JHBjYXAmIzM0OyAmIzM0O2ljbXBbaWNtcHR5cGVdID09IGljbXAtZWNobyYjMzQ7CiYjNDM7CiYjNDM7CWRvX3BpbmcgfHwgcGluZ19yYz0kPwomIzQzOwomIzQzOwljYXB0dXJlX3N0b3AKJiM0MzsKJiM0MzsJY2FwX2NvdW50PSQoY2FwdHVyZV9jb3VudCAmIzM0OyRwY2FwJiMzNDspCiYjNDM7CXJtIC1mICYjMzQ7JHBjYXAmIzM0OwomIzQzOwomIzQzOwlkdW1wX2E9JChpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgXAomIzQzOwkJJFRDIC1zIGZpbHRlciBzaG93IGRldiAmIzM0OyRWRVRIX0ExJiMzNDsgaW5ncmVzcyAyJmd0Oy9kZXYvbnVsbCkKJiM0MzsKJiM0MzsJdGVhcmRvd25fdGMKJiM0MzsKJiM0MzsJdG90YWxfcGFzc2VkPSQodGNfc3RhdCAgICAmIzM0OyRkdW1wX2EmIzM0OyAmIzM0O3Bhc3NlZCYjMzQ7KQomIzQzOwl0b3RhbF9kaXNjYXJkZWQ9JCh0Y19zdGF0ICYjMzQ7JGR1bXBfYSYjMzQ7ICYjMzQ7ZGlzY2FyZGVkJiMzNDspCiYjNDM7CXRhZ2xlc3M9JCh0Y19zdGF0ICAgICAgICAgJiMzNDskZHVtcF9hJiMzNDsgJiMzNDt0YWdsZXNzJiMzNDspCiYjNDM7CXRvdGFsX2Rpc2NhcmRlZD0kKCh0b3RhbF9kaXNjYXJkZWQgLSB0YWdsZXNzKSkKJiM0MzsKJiM0MzsJZWNobyAmIzM0OyMgYm9uZCBzaGFyZWQgcmVjb3ZlcjogcGluZ19yYz0kcGluZ19yYyBjYXA9JGNhcF9jb3VudCYjMzQ7IFwKJiM0MzsJCSYjMzQ7cGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWQmIzM0OwomIzQzOwomIzQzOwlbICYjMzQ7JHBpbmdfcmMmIzM0OyAgICAgICAgIC1lcSAwIF0gICAgICAgICAgICB8fCByZXN1bHQ9JiMzNDtmYWlsJiMzNDsKJiM0MzsJWyAmIzM0OyRjYXBfY291bnQmIzM0OyAgICAgICAtZXEgJiMzNDskUElOR19DT1VOVCYjMzQ7IF0gfHwgcmVzdWx0PSYjMzQ7ZmFpbCYjMzQ7CiYjNDM7CVsgJiMzNDskdG90YWxfcGFzc2VkJiMzNDsgICAgLWdlICYjMzQ7JFBJTkdfQ09VTlQmIzM0OyBdIHx8IHJlc3VsdD0mIzM0O2ZhaWwmIzM0OwomIzQzOwlbICYjMzQ7JHRvdGFsX2Rpc2NhcmRlZCYjMzQ7IC1nZSAmIzM0OyRQSU5HX0NPVU5UJiMzNDsgXSB8fCByZXN1bHQ9JiMzNDtmYWlsJiMzNDsKJiM0MzsKJiM0MzsJaWYgWyAmIzM0OyRyZXN1bHQmIzM0OyA9ICYjMzQ7cGFzcyYjMzQ7IF07IHRoZW4KJiM0MzsJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcyBcCiYjNDM7CQkJJiMzNDtib25kIHNoYXJlZCByZWNvdmVyOiBwaW5nIE9LLCBjYXA9JGNhcF9jb3VudCYjMzQ7IFwKJiM0MzsJCQkmIzM0O3Bhc3NlZD0kdG90YWxfcGFzc2VkIGRpc2NhcmRlZD0kdG90YWxfZGlzY2FyZGVkJiMzNDsKJiM0MzsJZWxzZQomIzQzOwkJa3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFwKJiM0MzsJCQkmIzM0O2JvbmQgc2hhcmVkIHJlY292ZXI6IHBpbmdfcmM9JHBpbmdfcmMgY2FwPSRjYXBfY291bnQmIzM0OyBcCiYjNDM7CQkJJiMzNDtwYXNzZWQ9JHRvdGFsX3Bhc3NlZCBkaXNjYXJkZWQ9JHRvdGFsX2Rpc2NhcmRlZCYjMzQ7IFwKJiM0MzsJCQkmIzM0OyhleHBlY3RlZCBwaW5nIE9LLCBjYXA9JFBJTkdfQ09VTlQsJiMzNDsgXAomIzQzOwkJCSYjMzQ7cGFzc2VkJmd0Oz0kUElOR19DT1VOVCwgZGlzY2FyZGVkJmd0Oz0kUElOR19DT1VOVCkmIzM0OwomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIFRFU1QgMzogSU5ESVZJRFVBTCBSRUNPVkVSIChib25kIHRvcG9sb2d5KQomIzQzOyMKJiM0MzsjIHZldGhfYTEgYW5kIHZldGhfYjEgdXNlIGluZGVwZW5kZW50IHJlY292ZXIgYWN0aW9ucyAoaWR4PTIwIGFuZCBpZHg9MjEpLgomIzQzOyMgRWFjaCBwb3J0IG1haW50YWlucyBpdHMgb3duIHNlcXVlbmNlIGhpc3Rvcnkgc28gYm90aCBjb3BpZXMgb2YgZXZlcnkgZnJhbWUKJiM0MzsjIGFyZSBwYXNzZWQgKG5vIGNyb3NzLXBvcnQgZGVkdXBsaWNhdGlvbikuICBXaXRoIGFjdGl2ZS1iYWNrdXAgYm9uZDEsIG9ubHkKJiM0MzsjIHRoZSBhY3RpdmUgc2xhdmUmIzM5O3MgKHZldGhfYTEpIHJlY292ZXJlZCBmcmFtZSByZWFjaGVzIGJvbmQxJiMzOTtzIElQIHN0YWNrLCBzbwomIzQzOyMgcGluZyBzdWNjZWVkcy4gIFRoZSBhYnNlbmNlIG9mIGRlZHVwbGljYXRpb24gaXMgdmVyaWZpZWQgdmlhIHBlci1zbGF2ZQomIzQzOyMgdGNwZHVtcCAoZWFjaCBzbGF2ZSBzaG91bGQgY2FwdHVyZSBQSU5HX0NPVU5UIElDTVAgZnJhbWVzKSBhbmQgdGMgc3RhdHMuCiYjNDM7IwomIzQzOyMgUGFzcyBjcml0ZXJpYToKJiM0MzsjICAgLSBwaW5nIHN1Y2NlZWRzCiYjNDM7IyAgIC0gdmV0aF9hMSBjYXB0dXJlcyBQSU5HX0NPVU5UIElDTVAgZnJhbWVzIChwYXNzZWQsIG5vdCBkaXNjYXJkZWQpCiYjNDM7IyAgIC0gdmV0aF9iMSBjYXB0dXJlcyBQSU5HX0NPVU5UIElDTVAgZnJhbWVzIChwYXNzZWQgaW5kZXBlbmRlbnRseSkKJiM0MzsjICAgLSB0YyBzdGF0czogdmV0aF9hMSBwYXNzZWQ9UElOR19DT1VOVCBkaXNjYXJkZWQ9MAomIzQzOyMgICAgICAgICAgICAgICB2ZXRoX2IxIHBhc3NlZD1QSU5HX0NPVU5UIGRpc2NhcmRlZD0wCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7dGVzdF9pbmRpdmlkdWFsX3JlY292ZXJfYm9uZCgpCiYjNDM7ewomIzQzOwlsb2NhbCBwY2FwX2EgcGNhcF9iIGNhcF9hIGNhcF9iIHBpbmdfcmM9MAomIzQzOwlsb2NhbCBkdW1wX2EgZHVtcF9iCiYjNDM7CWxvY2FsIHBhc3NlZF9hIGRpc2NhcmRlZF9hIHBhc3NlZF9iIGRpc2NhcmRlZF9iIHRhZ2xlc3NfYSB0YWdsZXNzX2IKJiM0MzsJbG9jYWwgcmVzdWx0PSYjMzQ7cGFzcyYjMzQ7CiYjNDM7CiYjNDM7CXNldHVwX3B1c2hfbWlycm9yCiYjNDM7CiYjNDM7CSMgdmV0aF9hMSBpbmdyZXNzOiBpbmRpdmlkdWFsIHJlY292ZXIgaWR4PTIwIChpbmRlcGVuZGVudCBzdGF0ZSkKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2ICYjMzQ7JFZFVEhfQTEmIzM0OyBjbHNhY3QKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRWRVRIX0ExJiMzNDsgaW5ncmVzcyBcCiYjNDM7CQlwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXAomIzQzOwkJYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRpdmlkdWFsIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgXAomIzQzOwkJCXJlc2V0LXRpbWUgMjAwMCB0YWctcG9wIGluZGV4ICRJRFhfSU5EVl9SQ1ZZX0EKJiM0MzsKJiM0MzsJIyB2ZXRoX2IxIGluZ3Jlc3M6IGluZGl2aWR1YWwgcmVjb3ZlciBpZHg9MjEgKHNlcGFyYXRlIGluZGVwZW5kZW50IHN0YXRlKQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgJiMzNDskVkVUSF9CMSYjMzQ7IGNsc2FjdAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJFRDIGZpbHRlciBhZGQgZGV2ICYjMzQ7JFZFVEhfQjEmIzM0OyBpbmdyZXNzIFwKJiM0MzsJCXByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcCiYjNDM7CQlhY3Rpb24gZnJlciByZWNvdmVyIGluZGl2aWR1YWwgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcCiYjNDM7CQkJcmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9JTkRWX1JDVllfQgomIzQzOwomIzQzOwkjIFBlci1zbGF2ZSBjYXB0dXJlIEE6IHZlcmlmeSB2ZXRoX2ExIHBhc3NlcyBmcmFtZXM7IGFsc28gdXNlIHRoaXMgcnVuCiYjNDM7CSMgZm9yIHRoZSBvdmVyYWxsIHBpbmdfcmMgY2hlY2sgKGRvX3BpbmcgdGFyZ2V0cyBib25kMC0mZ3Q7Ym9uZDEpLgomIzQzOwlwY2FwX2E9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfaW5kdl9hX1hYWFhYWC5wY2FwKQomIzQzOwljYXB0dXJlX3N0YXJ0X29uICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJiMzNDskVkVUSF9BMSYjMzQ7ICYjMzQ7JHBjYXBfYSYjMzQ7ICYjMzQ7aWNtcCYjMzQ7CiYjNDM7CWRvX3BpbmcgfHwgcGluZ19yYz0kPwomIzQzOwljYXB0dXJlX3N0b3AKJiM0MzsJY2FwX2E9JChjYXB0dXJlX2NvdW50X29uICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJiMzNDskcGNhcF9hJiMzNDspCiYjNDM7CXJtIC1mICYjMzQ7JHBjYXBfYSYjMzQ7CiYjNDM7CiYjNDM7CSMgUGVyLXNsYXZlIGNhcHR1cmUgQjogdmVyaWZ5IHZldGhfYjEgYWxzbyBwYXNzZXMgZnJhbWVzIChiYWxhbmNlLXJyCiYjNDM7CSMgZGlzdHJpYnV0ZXMgZWdyZXNzIGFjcm9zcyBib3RoIHNsYXZlcywgc28gYm90aCBwYXRocyBjYXJyeSB0cmFmZmljKS4KJiM0MzsJcGNhcF9iPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX2luZHZfYl9YWFhYWFgucGNhcCkKJiM0MzsJY2FwdHVyZV9zdGFydF9vbiAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICYjMzQ7JFZFVEhfQjEmIzM0OyAmIzM0OyRwY2FwX2ImIzM0OyAmIzM0O2ljbXAmIzM0OwomIzQzOwlkb19waW5nIHx8IHRydWUKJiM0MzsJY2FwdHVyZV9zdG9wCiYjNDM7CWNhcF9iPSQoY2FwdHVyZV9jb3VudF9vbiAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICYjMzQ7JHBjYXBfYiYjMzQ7KQomIzQzOwlybSAtZiAmIzM0OyRwY2FwX2ImIzM0OwomIzQzOwomIzQzOwlkdW1wX2E9JChpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgXAomIzQzOwkJJFRDIC1zIGZpbHRlciBzaG93IGRldiAmIzM0OyRWRVRIX0ExJiMzNDsgaW5ncmVzcyAyJmd0Oy9kZXYvbnVsbCkKJiM0MzsJZHVtcF9iPSQoaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7IFwKJiM0MzsJCSRUQyAtcyBmaWx0ZXIgc2hvdyBkZXYgJiMzNDskVkVUSF9CMSYjMzQ7IGluZ3Jlc3MgMiZndDsvZGV2L251bGwpCiYjNDM7CiYjNDM7CXRlYXJkb3duX3RjCiYjNDM7CiYjNDM7CXBhc3NlZF9hPSQodGNfc3RhdCAgICAmIzM0OyRkdW1wX2EmIzM0OyAmIzM0O3Bhc3NlZCYjMzQ7KQomIzQzOwlkaXNjYXJkZWRfYT0kKHRjX3N0YXQgJiMzNDskZHVtcF9hJiMzNDsgJiMzNDtkaXNjYXJkZWQmIzM0OykKJiM0MzsJdGFnbGVzc19hPSQodGNfc3RhdCAgICYjMzQ7JGR1bXBfYSYjMzQ7ICYjMzQ7dGFnbGVzcyYjMzQ7KQomIzQzOwlwYXNzZWRfYj0kKHRjX3N0YXQgICAgJiMzNDskZHVtcF9iJiMzNDsgJiMzNDtwYXNzZWQmIzM0OykKJiM0MzsJZGlzY2FyZGVkX2I9JCh0Y19zdGF0ICYjMzQ7JGR1bXBfYiYjMzQ7ICYjMzQ7ZGlzY2FyZGVkJiMzNDspCiYjNDM7CXRhZ2xlc3NfYj0kKHRjX3N0YXQgICAmIzM0OyRkdW1wX2ImIzM0OyAmIzM0O3RhZ2xlc3MmIzM0OykKJiM0MzsJZGlzY2FyZGVkX2E9JCgoZGlzY2FyZGVkX2EgLSB0YWdsZXNzX2EpKQomIzQzOwlkaXNjYXJkZWRfYj0kKChkaXNjYXJkZWRfYiAtIHRhZ2xlc3NfYikpCiYjNDM7CiYjNDM7CWVjaG8gJiMzNDsjIGJvbmQgaW5kaXZpZHVhbCByZWNvdmVyOiBwaW5nX3JjPSRwaW5nX3JjJiMzNDsgXAomIzQzOwkJJiMzNDthMTogY2FwPSRjYXBfYSBwYXNzZWQ9JHBhc3NlZF9hIGRpc2NhcmRlZD0kZGlzY2FyZGVkX2EmIzM0OyBcCiYjNDM7CQkmIzM0O2IxOiBjYXA9JGNhcF9iIHBhc3NlZD0kcGFzc2VkX2IgZGlzY2FyZGVkPSRkaXNjYXJkZWRfYiYjMzQ7CiYjNDM7CiYjNDM7CVsgJiMzNDskcGluZ19yYyYjMzQ7ICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD0mIzM0O2ZhaWwmIzM0OwomIzQzOwlbICYjMzQ7JGNhcF9hJiMzNDsgICAgIC1nZSAmIzM0OyRQSU5HX0NPVU5UJiMzNDsgXSB8fCByZXN1bHQ9JiMzNDtmYWlsJiMzNDsKJiM0MzsJWyAmIzM0OyRjYXBfYiYjMzQ7ICAgICAtZ2UgJiMzNDskUElOR19DT1VOVCYjMzQ7IF0gfHwgcmVzdWx0PSYjMzQ7ZmFpbCYjMzQ7CiYjNDM7CVsgJiMzNDskcGFzc2VkX2EmIzM0OyAgLWdlICYjMzQ7JFBJTkdfQ09VTlQmIzM0OyBdIHx8IHJlc3VsdD0mIzM0O2ZhaWwmIzM0OwomIzQzOwlbICYjMzQ7JHBhc3NlZF9iJiMzNDsgIC1nZSAmIzM0OyRQSU5HX0NPVU5UJiMzNDsgXSB8fCByZXN1bHQ9JiMzNDtmYWlsJiMzNDsKJiM0MzsJWyAmIzM0OyRkaXNjYXJkZWRfYSYjMzQ7IC1lcSAwIF0gICAgICAgICAgIHx8IHJlc3VsdD0mIzM0O2ZhaWwmIzM0OwomIzQzOwlbICYjMzQ7JGRpc2NhcmRlZF9iJiMzNDsgLWVxIDAgXSAgICAgICAgICAgfHwgcmVzdWx0PSYjMzQ7ZmFpbCYjMzQ7CiYjNDM7CiYjNDM7CWlmIFsgJiMzNDskcmVzdWx0JiMzNDsgPSAmIzM0O3Bhc3MmIzM0OyBdOyB0aGVuCiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MgXAomIzQzOwkJCSYjMzQ7Ym9uZCBpbmRpdmlkdWFsIHJlY292ZXI6IHBpbmcgT0smIzM0OyBcCiYjNDM7CQkJJiMzNDthMTogY2FwPSRjYXBfYSBwYXNzZWQ9JHBhc3NlZF9hLzAmIzM0OyBcCiYjNDM7CQkJJiMzNDtiMTogY2FwPSRjYXBfYiBwYXNzZWQ9JHBhc3NlZF9iLzAmIzM0OwomIzQzOwllbHNlCiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXAomIzQzOwkJCSYjMzQ7Ym9uZCBpbmRpdmlkdWFsIHJlY292ZXI6IHBpbmdfcmM9JHBpbmdfcmMmIzM0OyBcCiYjNDM7CQkJJiMzNDthMTogY2FwPSRjYXBfYSBwYXNzZWQ9JHBhc3NlZF9hIGRpc2NhcmRlZD0kZGlzY2FyZGVkX2EmIzM0OyBcCiYjNDM7CQkJJiMzNDtiMTogY2FwPSRjYXBfYiBwYXNzZWQ9JHBhc3NlZF9iIGRpc2NhcmRlZD0kZGlzY2FyZGVkX2ImIzM0OwomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIFRFU1QgNDogTk8gVEFHLVBPUCAoYm9uZCB0b3BvbG9neSkKJiM0MzsjCiYjNDM7IyBTaGFyZWQgcmVjb3ZlciBydW5zIHdpdGhvdXQgdGFnLXBvcDsgcGFzc2VkIGZyYW1lcyBzdGlsbCBjYXJyeSB0aGUgUi1UQUcKJiM0MzsjIHdoZW4gdGhleSByZWFjaCBib25kMS4KJiM0MzsjCiYjNDM7IyBQYXNzIGNyaXRlcmlhOgomIzQzOyMgICAtIHRjcGR1bXAgb24gYm9uZDEgd2l0aCAmIzM0O2V0aGVyIHByb3RvIDB4ZjFjMSYjMzQ7IGNhcHR1cmVzICZndDs9IDEgUi1UQUcgZnJhbWUKJiM0MzsjICAgLSB0Y3BkdW1wIG9uIGJvbmQxIHdpdGggJiMzNDtpY21wJiMzNDsgY2FwdHVyZXMgMCBmcmFtZXMgKG91dGVyIEV0aGVyVHlwZSBpcwomIzQzOyMgICAgIDB4RjFDMSwgbm90IDB4MDgwMCwgc28gcGxhaW4tSVAgSUNNUCBmaWx0ZXIgZG9lcyBub3QgbWF0Y2gpCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7dGVzdF9ub190YWdfcG9wX2JvbmQoKQomIzQzO3sKJiM0MzsJbG9jYWwgcGNhcF9ydGFnIHBjYXBfaWNtcCBydGFnX2NvdW50IGljbXBfY291bnQKJiM0MzsJbG9jYWwgcmVzdWx0PSYjMzQ7cGFzcyYjMzQ7CiYjNDM7CiYjNDM7CXNldHVwX3B1c2hfbWlycm9yCiYjNDM7CiYjNDM7CSMgdmV0aF9hMSBpbmdyZXNzOiBzaGFyZWQgcmVjb3ZlciBXSVRIT1VUIHRhZy1wb3AKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2ICYjMzQ7JFZFVEhfQTEmIzM0OyBjbHNhY3QKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyROU19MSVNURU5FUiYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRWRVRIX0ExJiMzNDsgaW5ncmVzcyBcCiYjNDM7CQlwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXAomIzQzOwkJYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFwKJiM0MzsJCQlyZXNldC10aW1lIDIwMDAgaW5kZXggJElEWF9OT19QT1AKJiM0MzsKJiM0MzsJIyB2ZXRoX2IxIGluZ3Jlc3M6IGJpbmQgdG8gdGhlIHNhbWUgc2hhcmVkIGFjdGlvbgomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgJiMzNDskVkVUSF9CMSYjMzQ7IGNsc2FjdAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX0xJU1RFTkVSJiMzNDsgJFRDIGZpbHRlciBhZGQgZGV2ICYjMzQ7JFZFVEhfQjEmIzM0OyBpbmdyZXNzIFwKJiM0MzsJCXByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcCiYjNDM7CQlhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4ICRJRFhfTk9fUE9QCiYjNDM7CiYjNDM7CSMgQ2FwdHVyZSAxOiBmcmFtZXMgd2l0aCBSLVRBRyBFdGhlclR5cGUgb24gYm9uZDEgKGV4cGVjdCAmZ3Q7PSAxKQomIzQzOwlwY2FwX3J0YWc9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfbm9wb3BfcnRhZ19YWFhYWFgucGNhcCkKJiM0MzsJY2FwdHVyZV9zdGFydCAmIzM0OyRwY2FwX3J0YWcmIzM0OyAmIzM0O2V0aGVyIHByb3RvIDB4ZjFjMSYjMzQ7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskTlNfVEFMS0VSJiMzNDsgXAomIzQzOwkJJFBJTkcgLWMgMyAtVyAxIC1pIDAuMiAtcSAmIzM0OyRJUF9EU1QmIzM0OyAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIHx8IHRydWUKJiM0MzsJY2FwdHVyZV9zdG9wCiYjNDM7CXJ0YWdfY291bnQ9JChjYXB0dXJlX2NvdW50ICYjMzQ7JHBjYXBfcnRhZyYjMzQ7KQomIzQzOwlybSAtZiAmIzM0OyRwY2FwX3J0YWcmIzM0OwomIzQzOwomIzQzOwkjIENhcHR1cmUgMjogcGxhaW4gSUNNUCBmcmFtZXMgb24gYm9uZDEgKGV4cGVjdCAwKQomIzQzOwlwY2FwX2ljbXA9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfbm9wb3BfaWNtcF9YWFhYWFgucGNhcCkKJiM0MzsJY2FwdHVyZV9zdGFydCAmIzM0OyRwY2FwX2ljbXAmIzM0OyAmIzM0O2ljbXAmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JE5TX1RBTEtFUiYjMzQ7IFwKJiM0MzsJCSRQSU5HIC1jIDMgLVcgMSAtaSAwLjIgLXEgJiMzNDskSVBfRFNUJiMzNDsgJmd0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MSB8fCB0cnVlCiYjNDM7CWNhcHR1cmVfc3RvcAomIzQzOwlpY21wX2NvdW50PSQoY2FwdHVyZV9jb3VudCAmIzM0OyRwY2FwX2ljbXAmIzM0OykKJiM0MzsJcm0gLWYgJiMzNDskcGNhcF9pY21wJiMzNDsKJiM0MzsKJiM0MzsJdGVhcmRvd25fdGMKJiM0MzsKJiM0MzsJZWNobyAmIzM0OyMgYm9uZCBubyB0YWctcG9wOiBydGFnPSRydGFnX2NvdW50IChleHBlY3RlZCAmZ3Q7PTEpIGljbXA9JGljbXBfY291bnQgKGV4cGVjdGVkIDApJiMzNDsKJiM0MzsKJiM0MzsJWyAmIzM0OyRydGFnX2NvdW50JiMzNDsgLWdlIDEgXSB8fCByZXN1bHQ9JiMzNDtmYWlsJiMzNDsKJiM0MzsJWyAmIzM0OyRpY21wX2NvdW50JiMzNDsgLWVxIDAgXSB8fCByZXN1bHQ9JiMzNDtmYWlsJiMzNDsKJiM0MzsKJiM0MzsJaWYgWyAmIzM0OyRyZXN1bHQmIzM0OyA9ICYjMzQ7cGFzcyYjMzQ7IF07IHRoZW4KJiM0MzsJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcyBcCiYjNDM7CQkJJiMzNDtib25kIG5vIHRhZy1wb3A6IFItVEFHIHByZXNlbnQgb24gYm9uZDEgJiMzNDsgXAomIzQzOwkJCSYjMzQ7KHJ0YWc9JHJ0YWdfY291bnQpLCBJQ01QIGFic2VudCAoaWNtcD0kaWNtcF9jb3VudCkmIzM0OwomIzQzOwllbHNlCiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXAomIzQzOwkJCSYjMzQ7Ym9uZCBubyB0YWctcG9wOiBydGFnPSRydGFnX2NvdW50IGljbXA9JGljbXBfY291bnQgJiMzNDsgXAomIzQzOwkJCSYjMzQ7KGV4cGVjdGVkIHJ0YWcmZ3Q7PTEgaWNtcD0wKSYjMzQ7CiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVEVTVCA1OiBTSU1QTEUgUE9JTlQtVE8tUE9JTlQgKG5vIGJvbmQpCiYjNDM7IwomIzQzOyMgU2VsZi1jb250YWluZWQgc2luZ2xlLXBhdGggdG9wb2xvZ3k6IHB1c2ggb24gcDJwX2EwIGVncmVzcywgaW5kaXZpZHVhbAomIzQzOyMgcmVjb3ZlciAod2l0aCB0YWctcG9wKSBvbiBwMnBfYTEgaW5ncmVzcy4gIElQIGlzIGFzc2lnbmVkIGRpcmVjdGx5IHRvIHRoZQomIzQzOyMgdmV0aCBpbnRlcmZhY2VzIChubyBib25kKS4KJiM0MzsjCiYjNDM7IyBQYXNzIGNyaXRlcmlhOgomIzQzOyMgICAtIHBpbmcgc3VjY2VlZHMgKHJjPTApCiYjNDM7IyAgIC0gdmV0aF9hMSByZWNvdmVyIHN0YXRzOiBwYXNzZWQgJmd0Oz0gUElOR19DT1VOVCwgZGlzY2FyZGVkID0gMAomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzO3Rlc3Rfc2ltcGxlX3BvaW50X3RvX3BvaW50KCkKJiM0Mzt7CiYjNDM7CWxvY2FsIHBpbmdfcmM9MAomIzQzOwlsb2NhbCBkdW1wX2ExIHBhc3NlZCBkaXNjYXJkZWQKJiM0MzsJbG9jYWwgcmVzdWx0PSYjMzQ7cGFzcyYjMzQ7CiYjNDM7CiYjNDM7CSMgQ3JlYXRlIHNlbGYtY29udGFpbmVkIHAycCBuYW1lc3BhY2VzCiYjNDM7CWlwIG5ldG5zIGFkZCAmIzM0OyRQMlBfTlNfU1JDJiMzNDsKJiM0MzsJaXAgbmV0bnMgYWRkICYjMzQ7JFAyUF9OU19EU1QmIzM0OwomIzQzOwomIzQzOwlpcCBsaW5rIGFkZCAmIzM0OyRQMlBfVkVUSF9BMCYjMzQ7IHR5cGUgdmV0aCBwZWVyIG5hbWUgJiMzNDskUDJQX1ZFVEhfQTEmIzM0OwomIzQzOwlpcCBsaW5rIHNldCAmIzM0OyRQMlBfVkVUSF9BMCYjMzQ7IG5ldG5zICYjMzQ7JFAyUF9OU19TUkMmIzM0OwomIzQzOwlpcCBsaW5rIHNldCAmIzM0OyRQMlBfVkVUSF9BMSYjMzQ7IG5ldG5zICYjMzQ7JFAyUF9OU19EU1QmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19TUkMmIzM0OyBpcCBsaW5rIHNldCBsbyB1cAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19TUkMmIzM0OyBpcCBsaW5rIHNldCAmIzM0OyRQMlBfVkVUSF9BMCYjMzQ7IHVwCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUDJQX05TX1NSQyYjMzQ7IGlwIGFkZHIgYWRkICYjMzQ7JHtJUF9QMlBfU1JDfS8yNCYjMzQ7IGRldiAmIzM0OyRQMlBfVkVUSF9BMCYjMzQ7CiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUDJQX05TX0RTVCYjMzQ7IGlwIGxpbmsgc2V0IGxvIHVwCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUDJQX05TX0RTVCYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFAyUF9WRVRIX0ExJiMzNDsgdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRQMlBfTlNfRFNUJiMzNDsgaXAgYWRkciBhZGQgJiMzNDske0lQX1AyUF9EU1R9LzI0JiMzNDsgZGV2ICYjMzQ7JFAyUF9WRVRIX0ExJiMzNDsKJiM0MzsKJiM0MzsJbG9jYWwgbWFjX2EwIG1hY19hMQomIzQzOwltYWNfYTA9JChpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19TUkMmIzM0OyBjYXQgL3N5cy9jbGFzcy9uZXQvJiMzNDskUDJQX1ZFVEhfQTAmIzM0Oy9hZGRyZXNzKQomIzQzOwltYWNfYTE9JChpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19EU1QmIzM0OyBjYXQgL3N5cy9jbGFzcy9uZXQvJiMzNDskUDJQX1ZFVEhfQTEmIzM0Oy9hZGRyZXNzKQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19TUkMmIzM0OyBpcCBuZWlnaCBhZGQgJiMzNDskSVBfUDJQX0RTVCYjMzQ7IGxsYWRkciAmIzM0OyRtYWNfYTEmIzM0OyBkZXYgJiMzNDskUDJQX1ZFVEhfQTAmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19EU1QmIzM0OyBpcCBuZWlnaCBhZGQgJiMzNDskSVBfUDJQX1NSQyYjMzQ7IGxsYWRkciAmIzM0OyRtYWNfYTAmIzM0OyBkZXYgJiMzNDskUDJQX1ZFVEhfQTEmIzM0OwomIzQzOwomIzQzOwkjIHZldGhfYTAgZWdyZXNzOiBwdXNoIFItVEFHCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUDJQX05TX1NSQyYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2ICYjMzQ7JFAyUF9WRVRIX0EwJiMzNDsgY2xzYWN0CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUDJQX05TX1NSQyYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRQMlBfVkVUSF9BMCYjMzQ7IGVncmVzcyBcCiYjNDM7CQlwcm90b2NvbCBpcCBmbG93ZXIgc2tpcF9odyBcCiYjNDM7CQlhY3Rpb24gZnJlciBwdXNoIGluZGV4ICRJRFhfUFVTSAomIzQzOwomIzQzOwkjIHZldGhfYTEgaW5ncmVzczogaW5kaXZpZHVhbCByZWNvdmVyIHdpdGggdGFnLXBvcAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19EU1QmIzM0OyAkVEMgcWRpc2MgYWRkIGRldiAmIzM0OyRQMlBfVkVUSF9BMSYjMzQ7IGNsc2FjdAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19EU1QmIzM0OyAkVEMgZmlsdGVyIGFkZCBkZXYgJiMzNDskUDJQX1ZFVEhfQTEmIzM0OyBpbmdyZXNzIFwKJiM0MzsJCXByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcCiYjNDM7CQlhY3Rpb24gZnJlciByZWNvdmVyIGluZGl2aWR1YWwgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcCiYjNDM7CQkJcmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9QMlBfUkNWWQomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19TUkMmIzM0OyBcCiYjNDM7CQkkUElORyAtYyAmIzM0OyRQSU5HX0NPVU5UJiMzNDsgLVcgJiMzNDskUElOR19USU1FT1VUJiMzNDsgLWkgMC4yIC1xIFwKJiM0MzsJCSYjMzQ7JElQX1AyUF9EU1QmIzM0OyAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIHx8IHBpbmdfcmM9JD8KJiM0MzsKJiM0MzsJZHVtcF9hMT0kKGlwIG5ldG5zIGV4ZWMgJiMzNDskUDJQX05TX0RTVCYjMzQ7IFwKJiM0MzsJCSRUQyAtcyBmaWx0ZXIgc2hvdyBkZXYgJiMzNDskUDJQX1ZFVEhfQTEmIzM0OyBpbmdyZXNzIDImZ3Q7L2Rldi9udWxsKQomIzQzOwomIzQzOwkjIFRlYXJkb3duIHAycCB0b3BvbG9neQomIzQzOwlmb3IgZGV2IGluICYjMzQ7JFAyUF9WRVRIX0EwJiMzNDs7IGRvCiYjNDM7CQlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19TUkMmIzM0OyAkVEMgcWRpc2MgZGVsIGRldiAmIzM0OyRkZXYmIzM0OyBjbHNhY3QgXAomIzQzOwkJCTImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsJZG9uZQomIzQzOwlmb3IgZGV2IGluICYjMzQ7JFAyUF9WRVRIX0ExJiMzNDs7IGRvCiYjNDM7CQlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19EU1QmIzM0OyAkVEMgcWRpc2MgZGVsIGRldiAmIzM0OyRkZXYmIzM0OyBjbHNhY3QgXAomIzQzOwkJCTImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsJZG9uZQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFAyUF9OU19TUkMmIzM0OyAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyJmd0Oy9kZXYvbnVsbCB8fCB0cnVlCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUDJQX05TX0RTVCYjMzQ7ICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0MzsJaXAgbmV0bnMgZGVsICYjMzQ7JFAyUF9OU19TUkMmIzM0OyAyJmd0Oy9kZXYvbnVsbCB8fCB0cnVlCiYjNDM7CWlwIG5ldG5zIGRlbCAmIzM0OyRQMlBfTlNfRFNUJiMzNDsgMiZndDsvZGV2L251bGwgfHwgdHJ1ZQomIzQzOwomIzQzOwlwYXNzZWQ9JCh0Y19zdGF0ICAgICYjMzQ7JGR1bXBfYTEmIzM0OyAmIzM0O3Bhc3NlZCYjMzQ7KQomIzQzOwlkaXNjYXJkZWQ9JCh0Y19zdGF0ICYjMzQ7JGR1bXBfYTEmIzM0OyAmIzM0O2Rpc2NhcmRlZCYjMzQ7KQomIzQzOwlsb2NhbCB0YWdsZXNzCiYjNDM7CXRhZ2xlc3M9JCh0Y19zdGF0ICAgJiMzNDskZHVtcF9hMSYjMzQ7ICYjMzQ7dGFnbGVzcyYjMzQ7KQomIzQzOwlkaXNjYXJkZWQ9JCgoZGlzY2FyZGVkIC0gdGFnbGVzcykpCiYjNDM7CiYjNDM7CWVjaG8gJiMzNDsjIHAycDogcGluZ19yYz0kcGluZ19yYyBwYXNzZWQ9JHBhc3NlZCBkaXNjYXJkZWQ9JGRpc2NhcmRlZCYjMzQ7CiYjNDM7CiYjNDM7CVsgJiMzNDskcGluZ19yYyYjMzQ7ICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD0mIzM0O2ZhaWwmIzM0OwomIzQzOwlbICYjMzQ7JHBhc3NlZCYjMzQ7ICAgIC1nZSAmIzM0OyRQSU5HX0NPVU5UJiMzNDsgXSB8fCByZXN1bHQ9JiMzNDtmYWlsJiMzNDsKJiM0MzsJWyAmIzM0OyRkaXNjYXJkZWQmIzM0OyAtZXEgMCBdICAgICAgICAgICAgfHwgcmVzdWx0PSYjMzQ7ZmFpbCYjMzQ7CiYjNDM7CiYjNDM7CWlmIFsgJiMzNDskcmVzdWx0JiMzNDsgPSAmIzM0O3Bhc3MmIzM0OyBdOyB0aGVuCiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MgXAomIzQzOwkJCSYjMzQ7c2ltcGxlIHAycDogcGluZyBPSywgcGFzc2VkPSRwYXNzZWQgZGlzY2FyZGVkPSRkaXNjYXJkZWQmIzM0OwomIzQzOwllbHNlCiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXAomIzQzOwkJCSYjMzQ7c2ltcGxlIHAycDogcGluZ19yYz0kcGluZ19yYyBwYXNzZWQ9JHBhc3NlZCBkaXNjYXJkZWQ9JGRpc2NhcmRlZCYjMzQ7CiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVEVTVCA2OiBSRUxBWSBFMkUgKHNlbGYtY29udGFpbmVkLCBubyBib25kKQomIzQzOyMKJiM0MzsjIFRhbGtlciBzZW5kcyBWTEFOLTEwMCBmcmFtZXMgaW50byBicmlkZ2UwIChzZXF1ZW5jZSBnZW5lcmF0b3IpLiAgQnJpZGdlMAomIzQzOyMgcHVzaGVzIGFuIFItVEFHIGFuZCByZXBsaWNhdGVzIHRvIHR3byByZWR1bmRhbnQgcGF0aHMuICBCcmlkZ2UxIChlbGltaW5hdG9yKQomIzQzOyMgcmVjb3ZlcnMgKHNoYXJlZCwgdGFnLXBvcCkgb24gYm90aCBwYXRocyBhbmQgZm9yd2FyZHMgdGhlIGRlZHVwbGljYXRlZCBmcmFtZQomIzQzOyMgdG8gdGhlIGxpc3RlbmVyLgomIzQzOyMKJiM0MzsjIFRvcG9sb2d5OgomIzQzOyMgICBuc190YWxrZXIgKHRhbGtlcl9ldGguMTAwKSAtLSB0YWxrZXJfZXRoL2JyMF91cGxpbmsKJiM0MzsjICAgICAgIC0tIGJyaWRnZTAgKGJyX3IwKSAtJiM0MzstIGJyMF9zd3AwL2JyMV9zd3AwIC0mIzQzOwomIzQzOyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgXC0gYnIwX3N3cDEvYnIxX3N3cDEgLSYjNDM7CiYjNDM7IyAgICAgICAtLSBicmlkZ2UxIChicl9yMSkgLS0gYnIxX2Rvd25saW5rL2xpc3RlbmVyX2V0aCAtLSBuc19saXN0ZW5lcgomIzQzOyMKJiM0MzsjIEZSRVIgcnVsZXM6CiYjNDM7IyAgIGJyaWRnZTAgLyBicjBfdXBsaW5rIGluZ3Jlc3MgIDogcHVzaCBpZHg9NTAsIHJlZGlyZWN0IGJyMF9zd3AwLCBtaXJyb3IgYnIwX3N3cDEKJiM0MzsjICAgYnJpZGdlMSAvIGJyMV9zd3AwIGluZ3Jlc3MgICAgOiByZWNvdmVyIChzaGFyZWQsIHRhZy1wb3ApIGlkeD02MCwgcmVkaXJlY3QgYnIxX2Rvd25saW5rCiYjNDM7IyAgIGJyaWRnZTEgLyBicjFfc3dwMSBpbmdyZXNzICAgIDogcmVjb3ZlciBpZHg9NjAgKGJpbmQgc2FtZSksIHJlZGlyZWN0IGJyMV9kb3dubGluawomIzQzOyMgICBicmlkZ2UxIC8gYnIxX2Rvd25saW5rIGluZ3Jlc3M6IHJlZGlyZWN0IGJyMV9zd3AwIChyZXBseSBwYXRoLCBieXBhc3MgRkRCKQomIzQzOyMKJiM0MzsjIFBhc3MgY3JpdGVyaWE6CiYjNDM7IyAgIC0gcGluZyBmcm9tIG5zX3RhbGtlciB0byBuc19saXN0ZW5lciBzdWNjZWVkcyAocmM9MCkKJiM0MzsjICAgLSB0Y3BkdW1wIG9uIGxpc3RlbmVyIGNhcHR1cmVzIGV4YWN0bHkgUElOR19DT1VOVCBJQ01QIGVjaG8tcmVxdWVzdCBmcmFtZXMKJiM0MzsjICAgLSBicjFfc3dwMCB0YyBzdGF0czogcGFzc2VkICZndDs9IFBJTkdfQ09VTlQsIGRpc2NhcmRlZCAmZ3Q7PSBQSU5HX0NPVU5UCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7dGVhcmRvd25fcmVsYXlfdGMoKQomIzQzO3sKJiM0MzsJZm9yIGRldiBpbiAmIzM0OyRSX0JSMF9VUExJTksmIzM0OzsgZG8KJiM0MzsJCWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UwJiMzNDsgJFRDIHFkaXNjIGRlbCBkZXYgJiMzNDskZGV2JiMzNDsgY2xzYWN0IFwKJiM0MzsJCQkyJmd0Oy9kZXYvbnVsbCB8fCB0cnVlCiYjNDM7CWRvbmUKJiM0MzsJZm9yIGRldiBpbiAmIzM0OyRSX0JSMV9TV1AwJiMzNDsgJiMzNDskUl9CUjFfU1dQMSYjMzQ7ICYjMzQ7JFJfQlIxX0RPV05MSU5LJiMzNDs7IGRvCiYjNDM7CQlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7ICRUQyBxZGlzYyBkZWwgZGV2ICYjMzQ7JGRldiYjMzQ7IGNsc2FjdCBcCiYjNDM7CQkJMiZndDsvZGV2L251bGwgfHwgdHJ1ZQomIzQzOwlkb25lCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UwJiMzNDsgJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXIgMiZndDsvZGV2L251bGwgfHwgdHJ1ZQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7ICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDImZ3Q7L2Rldi9udWxsIHx8IHRydWUKJiM0Mzt9CiYjNDM7CiYjNDM7dGVzdF9yZWxheV9lMmUoKQomIzQzO3sKJiM0MzsJbG9jYWwgcGluZ19yYz0wCiYjNDM7CWxvY2FsIGR1bXBfcjFzd3AwCiYjNDM7CWxvY2FsIHRvdGFsX3Bhc3NlZCB0b3RhbF9kaXNjYXJkZWQKJiM0MzsJbG9jYWwgcmVzdWx0PSYjMzQ7cGFzcyYjMzQ7CiYjNDM7CWxvY2FsIG5zCiYjNDM7CiYjNDM7CWZvciBucyBpbiAmIzM0OyRSX05TX1RBTEtFUiYjMzQ7ICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7ICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7ICYjMzQ7JFJfTlNfTElTVEVORVImIzM0OzsgZG8KJiM0MzsJCWlwIG5ldG5zIGFkZCAmIzM0OyRucyYjMzQ7IHx8IHsKJiM0MzsJCQllY2hvICYjMzQ7IyByZWxheSBlMmU6IGZhaWxlZCB0byBjcmVhdGUgbmV0bnMgJG5zJiMzNDsgJmd0OyZhbXA7MgomIzQzOwkJCWtzZnRfdGVzdF9yZXN1bHRfc2tpcCAmIzM0O3JlbGF5IGUyZTogbmV0bnMgc2V0dXAgZmFpbGVkJiMzNDsKJiM0MzsJCQlyZXR1cm4KJiM0MzsJCX0KJiM0MzsJZG9uZQomIzQzOwomIzQzOwlpcCBsaW5rIGFkZCAmIzM0OyRSX1RBTEtFUl9FVEgmIzM0OyAgIHR5cGUgdmV0aCBwZWVyIG5hbWUgJiMzNDskUl9CUjBfVVBMSU5LJiMzNDsKJiM0MzsJaXAgbGluayBhZGQgJiMzNDskUl9CUjBfU1dQMCYjMzQ7ICAgICB0eXBlIHZldGggcGVlciBuYW1lICYjMzQ7JFJfQlIxX1NXUDAmIzM0OwomIzQzOwlpcCBsaW5rIGFkZCAmIzM0OyRSX0JSMF9TV1AxJiMzNDsgICAgIHR5cGUgdmV0aCBwZWVyIG5hbWUgJiMzNDskUl9CUjFfU1dQMSYjMzQ7CiYjNDM7CWlwIGxpbmsgYWRkICYjMzQ7JFJfQlIxX0RPV05MSU5LJiMzNDsgdHlwZSB2ZXRoIHBlZXIgbmFtZSAmIzM0OyRSX0xJU1RFTkVSX0VUSCYjMzQ7CiYjNDM7CiYjNDM7CWlwIGxpbmsgc2V0ICYjMzQ7JFJfVEFMS0VSX0VUSCYjMzQ7ICAgbmV0bnMgJiMzNDskUl9OU19UQUxLRVImIzM0OwomIzQzOwlpcCBsaW5rIHNldCAmIzM0OyRSX0JSMF9VUExJTksmIzM0OyAgIG5ldG5zICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7CiYjNDM7CWlwIGxpbmsgc2V0ICYjMzQ7JFJfQlIwX1NXUDAmIzM0OyAgICAgbmV0bnMgJiMzNDskUl9OU19CUklER0UwJiMzNDsKJiM0MzsJaXAgbGluayBzZXQgJiMzNDskUl9CUjBfU1dQMSYjMzQ7ICAgICBuZXRucyAmIzM0OyRSX05TX0JSSURHRTAmIzM0OwomIzQzOwlpcCBsaW5rIHNldCAmIzM0OyRSX0JSMV9TV1AwJiMzNDsgICAgIG5ldG5zICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7CiYjNDM7CWlwIGxpbmsgc2V0ICYjMzQ7JFJfQlIxX1NXUDEmIzM0OyAgICAgbmV0bnMgJiMzNDskUl9OU19CUklER0UxJiMzNDsKJiM0MzsJaXAgbGluayBzZXQgJiMzNDskUl9CUjFfRE9XTkxJTksmIzM0OyBuZXRucyAmIzM0OyRSX05TX0JSSURHRTEmIzM0OwomIzQzOwlpcCBsaW5rIHNldCAmIzM0OyRSX0xJU1RFTkVSX0VUSCYjMzQ7IG5ldG5zICYjMzQ7JFJfTlNfTElTVEVORVImIzM0OwomIzQzOwomIzQzOwlsb2NhbCBuc19kZXYKJiM0MzsJZm9yIG5zX2RldiBpbiBcCiYjNDM7CQkmIzM0OyRSX05TX1RBTEtFUjokUl9UQUxLRVJfRVRIJiMzNDsgXAomIzQzOwkJJiMzNDskUl9OU19CUklER0UwOiRSX0JSMF9VUExJTksmIzM0OyAmIzM0OyRSX05TX0JSSURHRTA6JFJfQlIwX1NXUDAmIzM0OyBcCiYjNDM7CQkmIzM0OyRSX05TX0JSSURHRTA6JFJfQlIwX1NXUDEmIzM0OyBcCiYjNDM7CQkmIzM0OyRSX05TX0JSSURHRTE6JFJfQlIxX1NXUDAmIzM0OyAmIzM0OyRSX05TX0JSSURHRTE6JFJfQlIxX1NXUDEmIzM0OyBcCiYjNDM7CQkmIzM0OyRSX05TX0JSSURHRTE6JFJfQlIxX0RPV05MSU5LJiMzNDsgXAomIzQzOwkJJiMzNDskUl9OU19MSVNURU5FUjokUl9MSVNURU5FUl9FVEgmIzM0OzsgZG8KJiM0MzsJCWxvY2FsIF9ucz0mIzM0OyR7bnNfZGV2JSU6Kn0mIzM0OwomIzQzOwkJbG9jYWwgX2Rldj0mIzM0OyR7bnNfZGV2IyMqOn0mIzM0OwomIzQzOwkJaXAgbmV0bnMgZXhlYyAmIzM0OyRfbnMmIzM0OyBpcCBsaW5rIHNldCBsbyB1cAomIzQzOwkJaXAgbmV0bnMgZXhlYyAmIzM0OyRfbnMmIzM0OyBpcCBsaW5rIHNldCAmIzM0OyRfZGV2JiMzNDsgdXAKJiM0MzsJZG9uZQomIzQzOwomIzQzOwkjIGJyaWRnZTA6IHNlcXVlbmNlIGdlbmVyYXRvciwgVkxBTiBmaWx0ZXJpbmcKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTAmIzM0OyBpcCBsaW5rIGFkZCBuYW1lICYjMzQ7JFJfQlIwJiMzNDsgdHlwZSBicmlkZ2Ugdmxhbl9maWx0ZXJpbmcgMQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFJfQlIwJiMzNDsgdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTAmIzM0OyBpcCBsaW5rIHNldCAmIzM0OyRSX0JSMF9VUExJTksmIzM0OyBtYXN0ZXIgJiMzNDskUl9CUjAmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFJfQlIwX1NXUDAmIzM0OyBtYXN0ZXIgJiMzNDskUl9CUjAmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFJfQlIwX1NXUDEmIzM0OyBtYXN0ZXIgJiMzNDskUl9CUjAmIzM0OwomIzQzOwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7IGJyaWRnZSB2bGFuIGFkZCBkZXYgJiMzNDskUl9CUjBfVVBMSU5LJiMzNDsgdmlkICYjMzQ7JFJfVkxBTiYjMzQ7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UwJiMzNDsgYnJpZGdlIHZsYW4gYWRkIGRldiAmIzM0OyRSX0JSMF9TV1AwJiMzNDsgdmlkICYjMzQ7JFJfVkxBTiYjMzQ7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UwJiMzNDsgYnJpZGdlIHZsYW4gZGVsIGRldiAmIzM0OyRSX0JSMF9TV1AxJiMzNDsgdmlkIDEKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTAmIzM0OyBicmlkZ2UgdmxhbiBhZGQgZGV2ICYjMzQ7JFJfQlIwX1NXUDEmIzM0OyBcCiYjNDM7CQl2aWQgJiMzNDskUl9WTEFOJiMzNDsgcHZpZCB1bnRhZ2dlZAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7IGJyaWRnZSBsaW5rIHNldCBkZXYgJiMzNDskUl9CUjBfU1dQMCYjMzQ7IGxlYXJuaW5nIG9mZgomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7IGJyaWRnZSBsaW5rIHNldCBkZXYgJiMzNDskUl9CUjBfU1dQMSYjMzQ7IGxlYXJuaW5nIG9mZgomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMCYjMzQ7IGJyaWRnZSB2bGFuIHNldCBkZXYgJiMzNDskUl9CUjBfU1dQMCYjMzQ7IHZpZCAmIzM0OyRSX1ZMQU4mIzM0OyBub2Zsb29kCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UwJiMzNDsgYnJpZGdlIHZsYW4gc2V0IGRldiAmIzM0OyRSX0JSMF9TV1AxJiMzNDsgdmlkICYjMzQ7JFJfVkxBTiYjMzQ7IG5vZmxvb2QKJiM0MzsKJiM0MzsJIyBicmlkZ2UxOiBlbGltaW5hdG9yLCBWTEFOIGZpbHRlcmluZwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7IGlwIGxpbmsgYWRkIG5hbWUgJiMzNDskUl9CUjEmIzM0OyB0eXBlIGJyaWRnZSB2bGFuX2ZpbHRlcmluZyAxCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UxJiMzNDsgaXAgbGluayBzZXQgJiMzNDskUl9CUjEmIzM0OyB1cAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFJfQlIxX1NXUDAmIzM0OyBtYXN0ZXIgJiMzNDskUl9CUjEmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFJfQlIxX1NXUDEmIzM0OyBtYXN0ZXIgJiMzNDskUl9CUjEmIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JFJfQlIxX0RPV05MSU5LJiMzNDsgbWFzdGVyICYjMzQ7JFJfQlIxJiMzNDsKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTEmIzM0OyBicmlkZ2UgdmxhbiBhZGQgZGV2ICYjMzQ7JFJfQlIxX1NXUDAmIzM0OyB2aWQgJiMzNDskUl9WTEFOJiMzNDsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTEmIzM0OyBicmlkZ2UgdmxhbiBkZWwgZGV2ICYjMzQ7JFJfQlIxX1NXUDEmIzM0OyB2aWQgMQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7IGJyaWRnZSB2bGFuIGFkZCBkZXYgJiMzNDskUl9CUjFfU1dQMSYjMzQ7IFwKJiM0MzsJCXZpZCAmIzM0OyRSX1ZMQU4mIzM0OyBwdmlkIHVudGFnZ2VkCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UxJiMzNDsgYnJpZGdlIHZsYW4gYWRkIGRldiAmIzM0OyRSX0JSMV9ET1dOTElOSyYjMzQ7IHZpZCAmIzM0OyRSX1ZMQU4mIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7IGJyaWRnZSBsaW5rIHNldCBkZXYgJiMzNDskUl9CUjFfU1dQMCYjMzQ7IGxlYXJuaW5nIG9mZgomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7IGJyaWRnZSBsaW5rIHNldCBkZXYgJiMzNDskUl9CUjFfU1dQMSYjMzQ7IGxlYXJuaW5nIG9mZgomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7IGJyaWRnZSB2bGFuIHNldCBkZXYgJiMzNDskUl9CUjFfU1dQMCYjMzQ7IHZpZCAmIzM0OyRSX1ZMQU4mIzM0OyBub2Zsb29kCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UxJiMzNDsgYnJpZGdlIHZsYW4gc2V0IGRldiAmIzM0OyRSX0JSMV9TV1AxJiMzNDsgdmlkICYjMzQ7JFJfVkxBTiYjMzQ7IG5vZmxvb2QKJiM0MzsKJiM0MzsJIyBuc190YWxrZXI6IFZMQU4gc3ViLWludGVyZmFjZQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfVEFMS0VSJiMzNDsgaXAgbGluayBhZGQgbGluayAmIzM0OyRSX1RBTEtFUl9FVEgmIzM0OyBcCiYjNDM7CQluYW1lICYjMzQ7JHtSX1RBTEtFUl9FVEh9LiR7Ul9WTEFOfSYjMzQ7IHR5cGUgdmxhbiBpZCAmIzM0OyRSX1ZMQU4mIzM0OwomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfVEFMS0VSJiMzNDsgaXAgbGluayBzZXQgJiMzNDske1JfVEFMS0VSX0VUSH0uJHtSX1ZMQU59JiMzNDsgdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX1RBTEtFUiYjMzQ7IGlwIGFkZHIgYWRkICYjMzQ7JHtSX0lQX1RBTEtFUn0vMjQmIzM0OyBcCiYjNDM7CQlkZXYgJiMzNDske1JfVEFMS0VSX0VUSH0uJHtSX1ZMQU59JiMzNDsKJiM0MzsKJiM0MzsJIyBuc19saXN0ZW5lcjogVkxBTiBzdWItaW50ZXJmYWNlCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19MSVNURU5FUiYjMzQ7IGlwIGxpbmsgYWRkIGxpbmsgJiMzNDskUl9MSVNURU5FUl9FVEgmIzM0OyBcCiYjNDM7CQluYW1lICYjMzQ7JHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59JiMzNDsgdHlwZSB2bGFuIGlkICYjMzQ7JFJfVkxBTiYjMzQ7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19MSVNURU5FUiYjMzQ7IGlwIGxpbmsgc2V0ICYjMzQ7JHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59JiMzNDsgdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0xJU1RFTkVSJiMzNDsgaXAgYWRkciBhZGQgJiMzNDske1JfSVBfTElTVEVORVJ9LzI0JiMzNDsgXAomIzQzOwkJZGV2ICYjMzQ7JHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59JiMzNDsKJiM0MzsKJiM0MzsJIyBTdGF0aWMgQVJQIChWTEFOIDEwMCBmbG9vZGluZyBpcyBkaXNhYmxlZCkKJiM0MzsJbG9jYWwgbWFjX3RhbGtlciBtYWNfbGlzdGVuZXIKJiM0MzsJbWFjX3RhbGtlcj0kKGlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19UQUxLRVImIzM0OyBcCiYjNDM7CQljYXQgL3N5cy9jbGFzcy9uZXQvJiMzNDske1JfVEFMS0VSX0VUSH0uJHtSX1ZMQU59JiMzNDsvYWRkcmVzcykKJiM0MzsJbWFjX2xpc3RlbmVyPSQoaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0xJU1RFTkVSJiMzNDsgXAomIzQzOwkJY2F0IC9zeXMvY2xhc3MvbmV0LyYjMzQ7JHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59JiMzNDsvYWRkcmVzcykKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX1RBTEtFUiYjMzQ7ICAgaXAgbmVpZ2ggYWRkICYjMzQ7JFJfSVBfTElTVEVORVImIzM0OyBcCiYjNDM7CQlsbGFkZHIgJiMzNDskbWFjX2xpc3RlbmVyJiMzNDsgZGV2ICYjMzQ7JHtSX1RBTEtFUl9FVEh9LiR7Ul9WTEFOfSYjMzQ7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19MSVNURU5FUiYjMzQ7IGlwIG5laWdoIGFkZCAmIzM0OyRSX0lQX1RBTEtFUiYjMzQ7IFwKJiM0MzsJCWxsYWRkciAmIzM0OyRtYWNfdGFsa2VyJiMzNDsgICBkZXYgJiMzNDske1JfTElTVEVORVJfRVRIfS4ke1JfVkxBTn0mIzM0OwomIzQzOwomIzQzOwkjIGJyaWRnZTAgLyBicjBfdXBsaW5rIGluZ3Jlc3M6IHB1c2ggUi1UQUcgdGhlbiByZXBsaWNhdGUgdG8gYm90aCByZWR1bmRhbnQgcGF0aHMuCiYjNDM7CSMgbWlycm9yIG11c3QgY29tZSBiZWZvcmUgcmVkaXJlY3QgYmVjYXVzZSByZWRpcmVjdCBpcyBhIHRlcm1pbmF0aW5nIGFjdGlvbi4KJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTAmIzM0OyAkVEMgcWRpc2MgYWRkIGRldiAmIzM0OyRSX0JSMF9VUExJTksmIzM0OyBjbHNhY3QKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTAmIzM0OyAkVEMgZmlsdGVyIGFkZCBkZXYgJiMzNDskUl9CUjBfVVBMSU5LJiMzNDsgaW5ncmVzcyBcCiYjNDM7CQlwcm90b2NvbCA4MDIuMVEgZmxvd2VyIHNraXBfaHcgdmxhbl9pZCAmIzM0OyRSX1ZMQU4mIzM0OyBcCiYjNDM7CQlhY3Rpb24gZnJlciBwdXNoIGluZGV4ICRJRFhfUkVMQVlfUFVTSCBcCiYjNDM7CQlhY3Rpb24gbWlycmVkIGVncmVzcyBtaXJyb3IgIGRldiAmIzM0OyRSX0JSMF9TV1AxJiMzNDsgXAomIzQzOwkJYWN0aW9uIG1pcnJlZCBlZ3Jlc3MgcmVkaXJlY3QgZGV2ICYjMzQ7JFJfQlIwX1NXUDAmIzM0OwomIzQzOwomIzQzOwkjIGJyaWRnZTEgLyBicjFfc3dwMCBpbmdyZXNzOiBjcmVhdGUgc2hhcmVkIHJlY292ZXIgYWN0aW9uICh0YWctcG9wKQomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7ICRUQyBxZGlzYyBhZGQgZGV2ICYjMzQ7JFJfQlIxX1NXUDAmIzM0OyBjbHNhY3QKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTEmIzM0OyAkVEMgZmlsdGVyIGFkZCBkZXYgJiMzNDskUl9CUjFfU1dQMCYjMzQ7IGluZ3Jlc3MgXAomIzQzOwkJcHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFwKJiM0MzsJCWFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcCiYjNDM7CQkJcmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9SRUxBWV9SQ1ZZIFwKJiM0MzsJCWFjdGlvbiBtaXJyZWQgZWdyZXNzIHJlZGlyZWN0IGRldiAmIzM0OyRSX0JSMV9ET1dOTElOSyYjMzQ7CiYjNDM7CiYjNDM7CSMgYnJpZGdlMSAvIGJyMV9zd3AxIGluZ3Jlc3M6IGJpbmQgdG8gdGhlIHNhbWUgc2hhcmVkIHJlY292ZXIgYWN0aW9uCiYjNDM7CWlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UxJiMzNDsgJFRDIHFkaXNjIGFkZCBkZXYgJiMzNDskUl9CUjFfU1dQMSYjMzQ7IGNsc2FjdAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRSX0JSMV9TV1AxJiMzNDsgaW5ncmVzcyBcCiYjNDM7CQlwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXAomIzQzOwkJYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAkSURYX1JFTEFZX1JDVlkgXAomIzQzOwkJYWN0aW9uIG1pcnJlZCBlZ3Jlc3MgcmVkaXJlY3QgZGV2ICYjMzQ7JFJfQlIxX0RPV05MSU5LJiMzNDsKJiM0MzsKJiM0MzsJIyBicmlkZ2UxIC8gYnIxX2Rvd25saW5rIGluZ3Jlc3M6IHJlZGlyZWN0IFZMQU4gMTAwIHJlcGxpZXMgZGlyZWN0bHkgdG8gYnIxX3N3cDAKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX0JSSURHRTEmIzM0OyAkVEMgcWRpc2MgYWRkIGRldiAmIzM0OyRSX0JSMV9ET1dOTElOSyYjMzQ7IGNsc2FjdAomIzQzOwlpcCBuZXRucyBleGVjICYjMzQ7JFJfTlNfQlJJREdFMSYjMzQ7ICRUQyBmaWx0ZXIgYWRkIGRldiAmIzM0OyRSX0JSMV9ET1dOTElOSyYjMzQ7IGluZ3Jlc3MgXAomIzQzOwkJcHJvdG9jb2wgODAyLjFRIGZsb3dlciBza2lwX2h3IHZsYW5faWQgJiMzNDskUl9WTEFOJiMzNDsgXAomIzQzOwkJYWN0aW9uIG1pcnJlZCBlZ3Jlc3MgcmVkaXJlY3QgZGV2ICYjMzQ7JFJfQlIxX1NXUDAmIzM0OwomIzQzOwomIzQzOwkjIENhcHR1cmUgSUNNUCBlY2hvLXJlcXVlc3RzIG9uIGxpc3RlbmVyX2V0aC5WTEFOIHRvIHZlcmlmeSBleGFjdGx5CiYjNDM7CSMgUElOR19DT1VOVCBkZWR1cGxpY2F0ZWQgZnJhbWVzIHJlYWNoIHRoZSBsaXN0ZW5lciBhZnRlciByZWNvdmVyeS4KJiM0MzsJbG9jYWwgcGNhcCBjYXBfY291bnQKJiM0MzsJcGNhcD0kKG1rdGVtcCAvdG1wL2ZyZXJfcmVsYXlfWFhYWFhYLnBjYXApCiYjNDM7CWNhcHR1cmVfc3RhcnRfb24gJiMzNDskUl9OU19MSVNURU5FUiYjMzQ7ICYjMzQ7JHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59JiMzNDsgXAomIzQzOwkJJiMzNDskcGNhcCYjMzQ7ICYjMzQ7aWNtcFtpY21wdHlwZV0gPT0gaWNtcC1lY2hvJiMzNDsKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyAmIzM0OyRSX05TX1RBTEtFUiYjMzQ7IFwKJiM0MzsJCSRQSU5HIC1jICYjMzQ7JFBJTkdfQ09VTlQmIzM0OyAtVyAmIzM0OyRQSU5HX1RJTUVPVVQmIzM0OyAtaSAwLjIgLXEgXAomIzQzOwkJJiMzNDskUl9JUF9MSVNURU5FUiYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzEgfHwgcGluZ19yYz0kPwomIzQzOwomIzQzOwljYXB0dXJlX3N0b3AKJiM0MzsJY2FwX2NvdW50PSQoY2FwdHVyZV9jb3VudF9vbiAmIzM0OyRSX05TX0xJU1RFTkVSJiMzNDsgJiMzNDskcGNhcCYjMzQ7KQomIzQzOwlybSAtZiAmIzM0OyRwY2FwJiMzNDsKJiM0MzsKJiM0MzsJZHVtcF9icjFfc3dwMD0kKGlwIG5ldG5zIGV4ZWMgJiMzNDskUl9OU19CUklER0UxJiMzNDsgXAomIzQzOwkJJFRDIC1zIGZpbHRlciBzaG93IGRldiAmIzM0OyRSX0JSMV9TV1AwJiMzNDsgaW5ncmVzcyAyJmd0Oy9kZXYvbnVsbCkKJiM0MzsKJiM0MzsJdGVhcmRvd25fcmVsYXlfdGMKJiM0MzsJZm9yIG5zIGluICYjMzQ7JFJfTlNfVEFMS0VSJiMzNDsgJiMzNDskUl9OU19CUklER0UwJiMzNDsgJiMzNDskUl9OU19CUklER0UxJiMzNDsgJiMzNDskUl9OU19MSVNURU5FUiYjMzQ7OyBkbwomIzQzOwkJaXAgbmV0bnMgZGVsICYjMzQ7JG5zJiMzNDsgMiZndDsvZGV2L251bGwgfHwgdHJ1ZQomIzQzOwlkb25lCiYjNDM7CiYjNDM7CXRvdGFsX3Bhc3NlZD0kKHRjX3N0YXQgICAgJiMzNDskZHVtcF9icjFfc3dwMCYjMzQ7ICYjMzQ7cGFzc2VkJiMzNDspCiYjNDM7CXRvdGFsX2Rpc2NhcmRlZD0kKHRjX3N0YXQgJiMzNDskZHVtcF9icjFfc3dwMCYjMzQ7ICYjMzQ7ZGlzY2FyZGVkJiMzNDspCiYjNDM7CWxvY2FsIHRhZ2xlc3MKJiM0MzsJdGFnbGVzcz0kKHRjX3N0YXQgICAgICAgICAmIzM0OyRkdW1wX2JyMV9zd3AwJiMzNDsgJiMzNDt0YWdsZXNzJiMzNDspCiYjNDM7CXRvdGFsX2Rpc2NhcmRlZD0kKCh0b3RhbF9kaXNjYXJkZWQgLSB0YWdsZXNzKSkKJiM0MzsKJiM0MzsJZWNobyAmIzM0OyMgcmVsYXkgZTJlOiBwaW5nX3JjPSRwaW5nX3JjIGNhcD0kY2FwX2NvdW50JiMzNDsgXAomIzQzOwkJJiMzNDtwYXNzZWQ9JHRvdGFsX3Bhc3NlZCBkaXNjYXJkZWQ9JHRvdGFsX2Rpc2NhcmRlZCYjMzQ7CiYjNDM7CiYjNDM7CVsgJiMzNDskcGluZ19yYyYjMzQ7ICAgICAgICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD0mIzM0O2ZhaWwmIzM0OwomIzQzOwlbICYjMzQ7JGNhcF9jb3VudCYjMzQ7ICAgICAgIC1lcSAmIzM0OyRQSU5HX0NPVU5UJiMzNDsgXSB8fCByZXN1bHQ9JiMzNDtmYWlsJiMzNDsKJiM0MzsJWyAmIzM0OyR0b3RhbF9wYXNzZWQmIzM0OyAgICAtZ2UgJiMzNDskUElOR19DT1VOVCYjMzQ7IF0gfHwgcmVzdWx0PSYjMzQ7ZmFpbCYjMzQ7CiYjNDM7CVsgJiMzNDskdG90YWxfZGlzY2FyZGVkJiMzNDsgLWdlICYjMzQ7JFBJTkdfQ09VTlQmIzM0OyBdIHx8IHJlc3VsdD0mIzM0O2ZhaWwmIzM0OwomIzQzOwomIzQzOwlpZiBbICYjMzQ7JHJlc3VsdCYjMzQ7ID0gJiMzNDtwYXNzJiMzNDsgXTsgdGhlbgomIzQzOwkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFwKJiM0MzsJCQkmIzM0O3JlbGF5IGUyZTogcGluZyBPSywgY2FwPSRjYXBfY291bnQgJiMzNDsgXAomIzQzOwkJCSYjMzQ7cGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWQmIzM0OwomIzQzOwllbHNlCiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXAomIzQzOwkJCSYjMzQ7cmVsYXkgZTJlOiBwaW5nX3JjPSRwaW5nX3JjIGNhcD0kY2FwX2NvdW50ICYjMzQ7IFwKJiM0MzsJCQkmIzM0O3Bhc3NlZD0kdG90YWxfcGFzc2VkIGRpc2NhcmRlZD0kdG90YWxfZGlzY2FyZGVkJiMzNDsgXAomIzQzOwkJCSYjMzQ7KGV4cGVjdGVkIHBpbmcgT0ssIGNhcD0kUElOR19DT1VOVCwmIzM0OyBcCiYjNDM7CQkJJiMzNDtwYXNzZWQmZ3Q7PSRQSU5HX0NPVU5ULCBkaXNjYXJkZWQmZ3Q7PSRQSU5HX0NPVU5UKSYjMzQ7CiYjNDM7CWZpCiYjNDM7fQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgTWFpbgomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzO21haW4oKQomIzQzO3sKJiM0MzsJa3NmdF9wcmludF9oZWFkZXIKJiM0MzsJY2hlY2tfcHJlcmVxdWlzaXRlcwomIzQzOwlsb2FkX21vZHVsZQomIzQzOwlzZXR1cF90b3BvbG9neQomIzQzOwomIzQzOwlpZiAhIGNoZWNrX2ZyZXJfYWN0aW9uOyB0aGVuCiYjNDM7CQlrc2Z0X3NldF9wbGFuICYjMzQ7JE5VTV9URVNUUyYjMzQ7CiYjNDM7CQlmb3IgaSBpbiAkKHNlcSAxICYjMzQ7JE5VTV9URVNUUyYjMzQ7KTsgZG8KJiM0MzsJCQlrc2Z0X3Rlc3RfcmVzdWx0X3NraXAgXAomIzQzOwkJCQkmIzM0O2ZyZXIgYWN0aW9uIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBrZXJuZWwgKHRlc3QgJGkpJiMzNDsKJiM0MzsJCWRvbmUKJiM0MzsJCWtzZnRfcHJpbnRfY250cwomIzQzOwkJZXhpdCAmIzM0OyRLU0ZUX1NLSVAmIzM0OwomIzQzOwlmaQomIzQzOwomIzQzOwlrc2Z0X3NldF9wbGFuICYjMzQ7JE5VTV9URVNUUyYjMzQ7CiYjNDM7CiYjNDM7CXRlc3RfcHVzaF92ZXJpZnlfYm9uZCAgICAgICAgIyBURVNUIDE6IHB1c2ggb24gYTAvYjAsIG5vIHJlY292ZXIsIFItVEFHIG9uIGJvdGggcGF0aHMKJiM0MzsJdGVzdF9zaGFyZWRfcmVjb3Zlcl9ib25kICAgICAjIFRFU1QgMjogc2hhcmVkIHJlY292ZXIsIGRlZHVwLCBwaW5nIHN1Y2NlZWRzCiYjNDM7CXRlc3RfaW5kaXZpZHVhbF9yZWNvdmVyX2JvbmQgIyBURVNUIDM6IGluZGl2aWR1YWwgcmVjb3Zlciwgbm8gZGVkdXAsIGRvdWJsZSBmcmFtZXMKJiM0MzsJdGVzdF9ub190YWdfcG9wX2JvbmQgICAgICAgICAjIFRFU1QgNDogc2hhcmVkIHJlY292ZXIgd2l0aG91dCB0YWctcG9wLCBSLVRBRyBwcmVzZXJ2ZWQKJiM0MzsJdGVzdF9zaW1wbGVfcG9pbnRfdG9fcG9pbnQgICAjIFRFU1QgNTogc2luZ2xlLXBhdGggcDJwLCBubyBib25kCiYjNDM7CXRlc3RfcmVsYXlfZTJlICAgICAgICAgICAgICAgIyBURVNUIDY6IHJlbGF5IGJyaWRnZSB0b3BvbG9neQomIzQzOwomIzQzOwlrc2Z0X3ByaW50X2NudHMKJiM0MzsKJiM0MzsJWyAmIzM0OyRfa3NmdF9mYWlsJiMzNDsgLWVxIDAgXSAmYW1wOyZhbXA7IGtzZnRfZXhpdF9wYXNzIHx8IGtzZnRfZXhpdF9mYWlsCiYjNDM7fQomIzQzOwomIzQzO21haW4gJiMzNDskQCYjMzQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvZnJlci5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2ZyZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uZDViZTZhZTE1NmY3OTQKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvZnJlci5qc29uCkBAIC0wLDAgJiM0MzsxLDc4NSBAQAomIzQzO1sKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAwMSYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtDcmVhdGUgZnJlciBwdXNoIGFjdGlvbiB3aXRoIGRlZmF1bHQgcGFyYW1ldGVycyYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0KJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcHVzaCB0YWctdHlwZSBydGFnIGluZGV4IDEmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAwMiYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtDcmVhdGUgZnJlciBwdXNoIGFjdGlvbiB3aXRoIGV4cGxpY2l0IHRhZy10eXBlIHJ0YWcmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdCiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggdGFnLXR5cGUgcnRhZyBpbmRleCAyJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAyJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcHVzaCB0YWctdHlwZSBydGFnIGluZGV4IDImIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAwMyYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIGRlZmF1bHQgcGFyYW1ldGVycyYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0KJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAxMCYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTAmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTAgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCBbMC05XSYjNDM7IHJlc2V0LXRpbWUgWzAtOV0mIzQzOyYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDA0JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0NyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggdmVjdG9yIGFsZ29yaXRobSBleHBsaWNpdCYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0KJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGluZGV4IDExJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxMSBhbGcgdmVjdG9yJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0sCiYjNDM7ICB7CiYjNDM7ICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmcmVyXzAwMDUmIzM0OywKJiM0MzsgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBtYXRjaCBhbGdvcml0aG0mIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdCiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIG1hdGNoIGluZGV4IDEyJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMiYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxMiBhbGcgbWF0Y2gmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAwNiYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIGhpc3RvcnktbGVuZ3RoIDE2JiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXQomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgaW5kZXggMTMmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEzJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEzIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAwNyYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHJlc2V0LXRpbWUgMjAwMCYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0KJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIHJlc2V0LXRpbWUgMjAwMCBpbmRleCAxNCYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTQmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTQgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCBbMC05XSYjNDM7IHJlc2V0LXRpbWUgMjAwMCYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDA4JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0NyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggdGFnLXBvcCBmbGFnJiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXQomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIHRhZy1wb3AgaW5kZXggMTUmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDE1JiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDE1Lip0YWctcG9wJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0sCiYjNDM7ICB7CiYjNDM7ICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmcmVyXzAwMDkmIzM0OywKJiM0MzsgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBpbmRpdmlkdWFsIGZsYWcmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdCiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBpbmRleCAxNiYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTYmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTYuKmluZGl2aWR1YWwmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAxMCYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHRha2Utbm8tc2VxIGZsYWcmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdCiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgdGFrZS1uby1zZXEgaW5kZXggMTcmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDE3JiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDE3Lip0YWtlLW5vLXNlcSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDExJiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0NyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggYWxsIHBhcmFtZXRlcnMgY29tYmluZWQmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdCiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiByZXNldC10aW1lIDEwMDAgdGFnLXBvcCBpbmRpdmlkdWFsIGluZGV4IDIwJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAyMCYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAyMCBpbmRpdmlkdWFsIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwIHRhZy1wb3AmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAxMiYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIG1hdGNoIGFsZyBhbmQgYWxsIGZsYWdzJiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXQomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyBtYXRjaCB0YWtlLW5vLXNlcSB0YWctcG9wIGluZGl2aWR1YWwgaW5kZXggMjEmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDIxJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDIxIGluZGl2aWR1YWwgYWxnIG1hdGNoIGhpc3RvcnktbGVuZ3RoIFswLTldJiM0MzsgcmVzZXQtdGltZSBbMC05XSYjNDM7IHRhZy1wb3AgdGFrZS1uby1zZXEmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAxMyYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtTaG93IGZyZXIgcHVzaCBhY3Rpb24gU2VxR2VuIHN0YXRpc3RpY3MgKHplcm8gYWZ0ZXIgY3JlYXRlKSYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0sCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtTZXFHZW4gcGFja2V0czogMCYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDE0JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O1Nob3cgZnJlciByZWNvdmVyIGFjdGlvbiBTdGF0aXN0aWNzIGxpbmUgKHplcm8gYWZ0ZXIgY3JlYXRlKSYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0sCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IHJlc2V0LXRpbWUgMTAwMCB0YWctcG9wIGluZGV4IDEwJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIC1zIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMCYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O1N0YXRpc3RpY3M6IHBhc3NlZD0wIGRpc2NhcmRlZD0wIHRhZ2xlc3M9MCBvdXQtb2Ytb3JkZXI9MCByb2d1ZT0wIGxvc3Q9MCByZXNldHM9MCYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDE1JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O1Nob3cgZnJlciByZWNvdmVyIGFjdGlvbiBTdGF0aXN0aWNzIGZpZWxkcyBwcmVzZW50JiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXSwKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIC1zIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMCYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O1N0YXRpc3RpY3M6IHBhc3NlZD1bMC05XSYjNDM7IGRpc2NhcmRlZD1bMC05XSYjNDM7IHRhZ2xlc3M9WzAtOV0mIzQzOyBvdXQtb2Ytb3JkZXI9WzAtOV0mIzQzOyByb2d1ZT1bMC05XSYjNDM7IGxvc3Q9WzAtOV0mIzQzOyByZXNldHM9WzAtOV0mIzQzOyYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDE2JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O1JlcGxhY2UgZnJlciBwdXNoIGFjdGlvbiAoc2FtZSBpbmRleCkmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdLAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMSYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgcmVwbGFjZSBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDEmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDE3JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O1JlcGxhY2UgZnJlciByZWNvdmVyIGFjdGlvbiBjaGFuZ2luZyBhbGdvcml0aG0gZnJvbSB2ZWN0b3IgdG8gbWF0Y2gmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdLAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBpbmRleCAxMCYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgcmVwbGFjZSBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyBtYXRjaCBpbmRleCAxMCYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTAmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTAgYWxnIG1hdGNoJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0sCiYjNDM7ICB7CiYjNDM7ICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmcmVyXzAwMTgmIzM0OywKJiM0MzsgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7RGVsZXRlIGZyZXIgcHVzaCBhY3Rpb24gYnkgaW5kZXgmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdLAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMSYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgZGVsIGFjdGlvbiBmcmVyIGluZGV4IDEmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7ZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDE5JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0ZsdXNoIGFsbCBmcmVyIGFjdGlvbnMmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdLAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMSYjMzQ7LAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggMTAmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDExJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXImIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXIgMiZndDsvZGV2L251bGwgfHwgdHJ1ZSYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0sCiYjNDM7ICB7CiYjNDM7ICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmcmVyXzAwMjAmIzM0OywKJiM0MzsgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7QWRkIGR1cGxpY2F0ZSBmcmVyIGFjdGlvbiBpbmRleCBmYWlscyB3aXRob3V0IHJlcGxhY2UgZmxhZyYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0sCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDsyNTUmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDIxJiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0NyZWF0ZSBmcmVyIHB1c2ggYWN0aW9uIHdpdGggY29udGludWUgY29udHJvbCBhY3Rpb24mIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdCiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMSBjb250aW51ZSYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHB1c2ggdGFnLXR5cGUgcnRhZyBpbmRleCAxLipjb250cm9sIGNvbnRpbnVlJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0sCiYjNDM7ICB7CiYjNDM7ICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmcmVyXzAwMjImIzM0OywKJiM0MzsgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBwaXBlIGNvbnRyb2wgYWN0aW9uJiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXQomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwIHBpcGUmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEwLipjb250cm9sIHBpcGUmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAyMyYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiBoaXN0b3J5LWxlbmd0aCBtaW5pbXVtIGJvdW5kYXJ5ICgxKSYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0KJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDEgaW5kZXggMzAmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDMwJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7YWN0aW9uIG9yZGVyIFswLTldJiM0Mzs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDMwIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDI0JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0NyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIGhpc3RvcnktbGVuZ3RoIG1heGltdW0gYm91bmRhcnkgKDMyKSYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0KJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDMyIGluZGV4IDMxJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAzMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAzMSBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDMyJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0sCiYjNDM7ICB7CiYjNDM7ICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmcmVyXzAwMjUmIzM0OywKJiM0MzsgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7Q3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCByZXNldC10aW1lIDAgKHRpbWVyIGRpc2FibGVkKSYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0KJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIHJlc2V0LXRpbWUgMCBpbmRleCAzMiYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMzImIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDthY3Rpb24gb3JkZXIgWzAtOV0mIzQzOzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMzIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCBbMC05XSYjNDM7IHJlc2V0LXRpbWUgMCYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDI2JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0xpc3QgYWxsIGZyZXIgYWN0aW9ucyBzaG93cyBjb3JyZWN0IGNvdW50JiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXSwKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDEmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaW5kZXggMTAmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyBtYXRjaCB0YWctcG9wIGluZGV4IDExJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyJiMzNDssCiYjNDM7ICAgICYjMzQ7ZXhwRXhpdENvZGUmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O2FjdGlvbiBvcmRlciBbMC05XSYjNDM7OiBmcmVyJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzMmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0sCiYjNDM7ICB7CiYjNDM7ICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmcmVyXzAwMjcmIzM0OywKJiM0MzsgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7QmluZCBmcmVyIHB1c2ggYWN0aW9uIHRvIGVncmVzcyBjbHNhY3QgZmlsdGVyJiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXSwKJiM0MzsgICAgICAmIzM0O2lwIGxpbmsgZGVsIGZyZXJfZHVtbXkgMiZndDsvZGV2L251bGwgfHwgdHJ1ZSYjMzQ7LAomIzQzOyAgICAgICYjMzQ7aXAgbGluayBhZGQgZnJlcl9kdW1teSB0eXBlIGR1bW15JiMzNDssCiYjNDM7ICAgICAgJiMzNDtpcCBsaW5rIHNldCBmcmVyX2R1bW15IHVwJiMzNDssCiYjNDM7ICAgICAgJiMzNDskVEMgcWRpc2MgYWRkIGRldiBmcmVyX2R1bW15IGNsc2FjdCYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2IGZyZXJfZHVtbXkgZWdyZXNzIHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBmaWx0ZXIgc2hvdyBkZXYgZnJlcl9kdW1teSBlZ3Jlc3MmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtmcmVyIHB1c2ggdGFnLXR5cGUgcnRhZyBpbmRleCAxJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiBmcmVyX2R1bW15IGNsc2FjdCYjMzQ7LAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OywKJiM0MzsgICAgICAmIzM0O2lwIGxpbmsgZGVsIGZyZXJfZHVtbXkmIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDI4JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0JpbmQgZnJlciByZWNvdmVyIGFjdGlvbiB0byBpbmdyZXNzIGNsc2FjdCBmaWx0ZXImIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdLAomIzQzOyAgICAgICYjMzQ7aXAgbGluayBkZWwgZnJlcl9kdW1teSAyJmd0Oy9kZXYvbnVsbCB8fCB0cnVlJiMzNDssCiYjNDM7ICAgICAgJiMzNDtpcCBsaW5rIGFkZCBmcmVyX2R1bW15IHR5cGUgZHVtbXkmIzM0OywKJiM0MzsgICAgICAmIzM0O2lwIGxpbmsgc2V0IGZyZXJfZHVtbXkgdXAmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2IGZyZXJfZHVtbXkgY2xzYWN0JiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgZmlsdGVyIGFkZCBkZXYgZnJlcl9kdW1teSBpbmdyZXNzIHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwIHRhZy1wb3AgaW5kZXggMTAmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgZmlsdGVyIHNob3cgZGV2IGZyZXJfZHVtbXkgaW5ncmVzcyYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O2ZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEwIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiBmcmVyX2R1bW15IGNsc2FjdCYjMzQ7LAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OywKJiM0MzsgICAgICAmIzM0O2lwIGxpbmsgZGVsIGZyZXJfZHVtbXkmIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDI5JiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O1NoYXJlIGZyZXIgcmVjb3ZlciBhY3Rpb24gYWNyb3NzIHR3byBpbmdyZXNzIGZpbHRlcnMgKHJlZmNvdW50IGNoZWNrKSYjMzQ7LAomIzQzOyAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAmIzM0O2FjdGlvbnMmIzM0OywKJiM0MzsgICAgICAmIzM0O2ZyZXImIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICBbCiYjNDM7ICAgICAgICAmIzM0O21vZHByb2JlIGFjdF9mcmVyJiMzNDssCiYjNDM7ICAgICAgICAwLAomIzQzOyAgICAgICAgMQomIzQzOyAgICAgIF0sCiYjNDM7ICAgICAgJiMzNDtpcCBsaW5rIGRlbCBmcmVyX2EgMiZndDsvZGV2L251bGwgfHwgdHJ1ZSYjMzQ7LAomIzQzOyAgICAgICYjMzQ7aXAgbGluayBkZWwgZnJlcl9iIDImZ3Q7L2Rldi9udWxsIHx8IHRydWUmIzM0OywKJiM0MzsgICAgICAmIzM0O2lwIGxpbmsgYWRkIGZyZXJfYSB0eXBlIGR1bW15JiMzNDssCiYjNDM7ICAgICAgJiMzNDtpcCBsaW5rIGFkZCBmcmVyX2IgdHlwZSBkdW1teSYjMzQ7LAomIzQzOyAgICAgICYjMzQ7aXAgbGluayBzZXQgZnJlcl9hIHVwJiMzNDssCiYjNDM7ICAgICAgJiMzNDtpcCBsaW5rIHNldCBmcmVyX2IgdXAmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2IGZyZXJfYSBjbHNhY3QmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2IGZyZXJfYiBjbHNhY3QmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiBmcmVyX2EgaW5ncmVzcyBwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IHRhZy1wb3AgaW5kZXggMTAmIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBmaWx0ZXIgYWRkIGRldiBmcmVyX2IgaW5ncmVzcyBwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAxMCYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyAtcyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTAmIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtyZWYgWzItOV1bMC05XSomIzM0OywKJiM0MzsgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2IGZyZXJfYSBjbHNhY3QmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2IGZyZXJfYiBjbHNhY3QmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDssCiYjNDM7ICAgICAgJiMzNDtpcCBsaW5rIGRlbCBmcmVyX2EmIzM0OywKJiM0MzsgICAgICAmIzM0O2lwIGxpbmsgZGVsIGZyZXJfYiYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0sCiYjNDM7ICB7CiYjNDM7ICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmcmVyXzAwMzAmIzM0OywKJiM0MzsgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7ZnJlciBwdXNoIGFjdGlvbiByZWZjb3VudCBpbmNyZW1lbnRzIHdoZW4gYm91bmQgdG8gZmlsdGVyJiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXSwKJiM0MzsgICAgICAmIzM0O2lwIGxpbmsgZGVsIGZyZXJfZHVtbXkgMiZndDsvZGV2L251bGwgfHwgdHJ1ZSYjMzQ7LAomIzQzOyAgICAgICYjMzQ7aXAgbGluayBhZGQgZnJlcl9kdW1teSB0eXBlIGR1bW15JiMzNDssCiYjNDM7ICAgICAgJiMzNDtpcCBsaW5rIHNldCBmcmVyX2R1bW15IHVwJiMzNDssCiYjNDM7ICAgICAgJiMzNDskVEMgcWRpc2MgYWRkIGRldiBmcmVyX2R1bW15IGNsc2FjdCYjMzQ7LAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMSYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIGZpbHRlciBhZGQgZGV2IGZyZXJfZHVtbXkgZWdyZXNzIHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyAtcyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O3JlZiBbMi05XVswLTldKiYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgZnJlcl9kdW1teSBjbHNhY3QmIzM0OywKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyJiMzNDssCiYjNDM7ICAgICAgJiMzNDtpcCBsaW5rIGRlbCBmcmVyX2R1bW15JiMzNDsKJiM0MzsgICAgXQomIzQzOyAgfSwKJiM0MzsgIHsKJiM0MzsgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2ZyZXJfMDAzMSYjMzQ7LAomIzQzOyAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtmcmVyIHB1c2ggb3V0cHV0IHNob3dzIG5vdF9pbl9odyBmbGFnJiMzNDssCiYjNDM7ICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICYjMzQ7YWN0aW9ucyYjMzQ7LAomIzQzOyAgICAgICYjMzQ7ZnJlciYjMzQ7CiYjNDM7ICAgIF0sCiYjNDM7ICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgIFsKJiM0MzsgICAgICAgICYjMzQ7bW9kcHJvYmUgYWN0X2ZyZXImIzM0OywKJiM0MzsgICAgICAgIDAsCiYjNDM7ICAgICAgICAxCiYjNDM7ICAgICAgXSwKJiM0MzsgICAgICAmIzM0OyRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDEmIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAmIzM0O3ZlcmlmeUNtZCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMSYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O25vdF9pbl9odyYjMzQ7LAomIzQzOyAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDsxJiMzNDssCiYjNDM7ICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXImIzM0OwomIzQzOyAgICBdCiYjNDM7ICB9LAomIzQzOyAgewomIzQzOyAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7ZnJlcl8wMDMyJiMzNDssCiYjNDM7ICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O2ZyZXIgcmVjb3ZlciBvdXRwdXQgc2hvd3Mgbm90X2luX2h3IGZsYWcmIzM0OywKJiM0MzsgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDthY3Rpb25zJiMzNDssCiYjNDM7ICAgICAgJiMzNDtmcmVyJiMzNDsKJiM0MzsgICAgXSwKJiM0MzsgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgWwomIzQzOyAgICAgICAgJiMzNDttb2Rwcm9iZSBhY3RfZnJlciYjMzQ7LAomIzQzOyAgICAgICAgMCwKJiM0MzsgICAgICAgIDEKJiM0MzsgICAgICBdLAomIzQzOyAgICAgICYjMzQ7JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggMTAmIzM0OwomIzQzOyAgICBdLAomIzQzOyAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTAmIzM0OywKJiM0MzsgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwJiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7bm90X2luX2h3JiMzNDssCiYjNDM7ICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgJiMzNDskVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciYjMzQ7CiYjNDM7ICAgIF0KJiM0MzsgIH0KJiM0MztdCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NzQ5CgkJCQkJCQlvdXRwdXQ6IDIxMAoJCQkJCQkJdGhvdWdodHM6IDk3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZSRVIgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IGB0Y2AgYWN0aW9uIGNhbGxlZCBgZnJlcmAsIGltcGxlbWVudGluZyB0aGUgSUVFRSA4MDIuMUNCIEZyYW1lIFJlcGxpY2F0aW9uIGFuZCBFbGltaW5hdGlvbiBmb3IgUmVsaWFiaWxpdHkgKEZSRVIpIGZ1bmN0aW9uYWxpdHkuICBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O1RoaXMgaXMgYSBzdWJzdGFudGlhbCBmdW5jdGlvbmFsIGNoYW5nZTsgaXQmIzM5O3MgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiYjMzQ7IEkgbWVhbiwgaXQgdG91Y2hlcyBhIGdvb2QgbnVtYmVyIG9mIGZpbGVzOiAgYSBmZXcgaW5jbHVkZSBoZWFkZXJzLCBzb21lIEtjb25maWcvTWFrZWZpbGUgdXBkYXRlcywgdGhlIGNvcmUgYWN0aW9uIGltcGxlbWVudGF0aW9uIGluIGBhY3RfZnJlci5jYCwgYW5kIGV2ZW4gc29tZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLiBUaGF0JiMzOTtzIGEgY2xlYXIgc2lnbmFsIHRoYXQgd2UmIzM5O3ZlIGdvdCBzb21lIG5ldywgcG90ZW50aWFsbHkgY29tcGxleCwgY29kZSB0aGF0IG5lZWRzIHRob3JvdWdoIHZhbGlkYXRpb24uCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBmdXp6aW5nIHRhcmdldHMuIFRoZSBoZWFydCBvZiB0aGUgbmV3IGFjdGlvbiBpcyBpbiBgbmV0L3NjaGVkL2FjdF9mcmVyLmNgLiAgSSYjMzk7dmUgcmV2aWV3ZWQgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIHN1YmplY3QgdG8gZnV6emluZy4gQWZ0ZXIgcmV2aWV3LCBJIHdvdWxkIGZvY3VzIG9uOgoKKiAgIGB0Y2ZfZnJlcl9pbml0YDogVGhpcyBpcyBjcml0aWNhbCBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFjdGlvbi4KKiAgIGB0Y2ZfZnJlcl9hY3RgOiBUaGlzIGlzIHRoZSBhY3Rpb24mIzM5O3MgY29yZSBleGVjdXRpb24gcGF0aCwgcHJvY2Vzc2luZyBwYWNrZXRzLgoqICAgYHRjZl9mcmVyX2R1bXBgOiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGR1bXBpbmcgb2YgdGhlIGFjdGlvbiYjMzk7cyBzdGF0ZSwgdml0YWwgZm9yIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMuCiogICBgdGNmX2ZyZXJfY2xlYW51cGA6IFRoaXMgaGFuZGxlcyB0aGUgZnJlZWluZyBhbmQgYW55IG5lY2Vzc2FyeSBjbGVhbnVwLgoqICAgYGZyZXJfcnRhZ19wdXNoYDogUGFja2V0IG1hbmlwdWxhdGlvbiwgcHVzaGluZyB0aGUgUi1UQUcgKFJlcGxpY2F0aW9uIFRhZykuCiogICBgZnJlcl9ydGFnX3BvcGA6IFBhY2tldCBtYW5pcHVsYXRpb24sIHBvcHBpbmcgdGhlIFItVEFHLgoqICAgYGZyZXJfcnRhZ19kZWNvZGVgOiBSLVRBRyBkZWNvZGluZywgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHBhY2tldCBkYXRhLgoqICAgYGZyZXJfdmVjdG9yX2FsZ2A6IFItVEFHIHZlY3RvciBjb21wYXJpc29uLgoqICAgYGZyZXJfbWF0Y2hfYWxnYDogUi1UQUcgbWF0Y2ggYWxnb3JpdGhtLCBwYWNrZXQgbWF0Y2guCgpJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRob3NlIHRvIGNvbmZpZ3VyZSB0aGUgZnV6emluZyBlZmZvcnRzIGNvcnJlY3RseS4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBjaGFuZ2VzIGJlY2F1c2UgdGhpcyB3aWxsIGluZmx1ZW5jZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gIEkgY2FuIHNlZSB0aGF0IGBORVRfQUNUX0ZSRVJgIGhhcyBiZWVuIGFkZGVkLCBhbmQgaXQgZGVwZW5kcyBvbiBgTkVUX0NMU19BQ1RgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgaGFzIGBORVRfQUNUX0ZSRVJgIGVuYWJsZWQuCgpTbywgSSB0aGluayBJJiMzOTttIGdvaW5nIHRvIHJ1biB0aGUgYHNldC1yZXN1bHRzYCB0b29sIG5vdy4gIEkmIzM5O2xsIHNldCB0aGUgZm9sbG93aW5nOgoKKiAgIGBFbmFibGVDb25maWdzYDogYE5FVF9BQ1RfRlJFUmAKKiAgIGBGb2N1c1N5bWJvbHNgOiBgdGNmX2ZyZXJfaW5pdGAsIGB0Y2ZfZnJlcl9hY3RgLCBgdGNmX2ZyZXJfZHVtcGAsIGB0Y2ZfZnJlcl9jbGVhbnVwYCwgYGZyZXJfcnRhZ19wdXNoYCwgYGZyZXJfcnRhZ19wb3BgLCBgZnJlcl9ydGFnX2RlY29kZWAsIGBmcmVyX3ZlY3Rvcl9hbGdgLCBgZnJlcl9tYXRjaF9hbGdgCiogICBgV29ydGhGdXp6aW5nYDogYHRydWVgCiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBgYWN0X2ZyZXJgIGZvciBJRUVFIDgwMi4xQ0IgRlJFUiwgd2hpY2ggaW5jbHVkZXMgcGFja2V0IG1hbmlwdWxhdGlvbiAocHVzaC9wb3Agb2YgUi1UQUcpIGFuZCBzZXF1ZW5jZSByZWNvdmVyeSBhbGdvcml0aG1zLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgdG8gZnV6eiB0aGUgUi1UYWcgbG9naWMuICBPaCBhbmQsIHNob3VsZCBJIGFkZCBhbnkgbW9yZSBmdW5jdGlvbiBjYWxscz8gV2FpdCwgeWVzISBgZnJlcl9yY3Z5X2hydGltZXJfZm5gIGFuZCBgZnJlcl9yY3Z5X3Jlc2V0X3dvcmtfZm5gLCB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBjb3JlIGxvZ2ljLiBIb3dldmVyLCBJIHdhbnQgdG8ga2VlcCB0aGUgbGlzdCBjb25jaXNlLgoKQW5kIHRoYXQgc2hvdWxkIGRvIGl0LiAgTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0FDVF9GUkVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2ZyZXJfaW5pdCYjMzQ7LAogICAgJiMzNDt0Y2ZfZnJlcl9hY3QmIzM0OywKICAgICYjMzQ7dGNmX2ZyZXJfZHVtcCYjMzQ7LAogICAgJiMzNDt0Y2ZfZnJlcl9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2ZyZXJfcnRhZ19wdXNoJiMzNDssCiAgICAmIzM0O2ZyZXJfcnRhZ19wb3AmIzM0OywKICAgICYjMzQ7ZnJlcl9ydGFnX2RlY29kZSYjMzQ7LAogICAgJiMzNDtmcmVyX3ZlY3Rvcl9hbGcmIzM0OywKICAgICYjMzQ7ZnJlcl9tYXRjaF9hbGcmIzM0OywKICAgICYjMzQ7ZnJlcl9yY3Z5X2hydGltZXJfZm4mIzM0OywKICAgICYjMzQ7ZnJlcl9yY3Z5X3Jlc2V0X3dvcmtfZm4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGBhY3RfZnJlcmAgZm9yIElFRUUgODAyLjFDQiBGUkVSLiBJdCBpbmNsdWRlcyBwYWNrZXQgbWFuaXB1bGF0aW9uIChwdXNoL3BvcCBvZiBSLVRBRykgYW5kIHNlcXVlbmNlIHJlY292ZXJ5IGFsZ29yaXRobXMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfQUNUX0ZSRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfZnJlcl9pbml0JiMzNDssCiAgICAmIzM0O3RjZl9mcmVyX2FjdCYjMzQ7LAogICAgJiMzNDt0Y2ZfZnJlcl9kdW1wJiMzNDssCiAgICAmIzM0O3RjZl9mcmVyX2NsZWFudXAmIzM0OywKICAgICYjMzQ7ZnJlcl9ydGFnX3B1c2gmIzM0OywKICAgICYjMzQ7ZnJlcl9ydGFnX3BvcCYjMzQ7LAogICAgJiMzNDtmcmVyX3J0YWdfZGVjb2RlJiMzNDssCiAgICAmIzM0O2ZyZXJfdmVjdG9yX2FsZyYjMzQ7LAogICAgJiMzNDtmcmVyX21hdGNoX2FsZyYjMzQ7LAogICAgJiMzNDtmcmVyX3JjdnlfaHJ0aW1lcl9mbiYjMzQ7LAogICAgJiMzNDtmcmVyX3JjdnlfcmVzZXRfd29ya19mbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRyYWZmaWMgY29udHJvbCBhY3Rpb24gYGFjdF9mcmVyYCBmb3IgSUVFRSA4MDIuMUNCIEZSRVIuIEl0IGluY2x1ZGVzIHBhY2tldCBtYW5pcHVsYXRpb24gKHB1c2gvcG9wIG9mIFItVEFHKSBhbmQgc2VxdWVuY2UgcmVjb3ZlcnkgYWxnb3JpdGhtcy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwOTo0MDo1Ny4yMTY1NjUyODFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg1NzgzMjg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQUNUX0ZSRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfZnJlcl9pbml0XCIsXG4gICAgXCJ0Y2ZfZnJlcl9hY3RcIixcbiAgICBcInRjZl9mcmVyX2R1bXBcIixcbiAgICBcInRjZl9mcmVyX2NsZWFudXBcIixcbiAgICBcImZyZXJfcnRhZ19wdXNoXCIsXG4gICAgXCJmcmVyX3J0YWdfcG9wXCIsXG4gICAgXCJmcmVyX3J0YWdfZGVjb2RlXCIsXG4gICAgXCJmcmVyX3ZlY3Rvcl9hbGdcIixcbiAgICBcImZyZXJfbWF0Y2hfYWxnXCIsXG4gICAgXCJmcmVyX3JjdnlfaHJ0aW1lcl9mblwiLFxuICAgIFwiZnJlcl9yY3Z5X3Jlc2V0X3dvcmtfZm5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRyYWZmaWMgY29udHJvbCBhY3Rpb24gYGFjdF9mcmVyYCBmb3IgSUVFRSA4MDIuMUNCIEZSRVIuIEl0IGluY2x1ZGVzIHBhY2tldCBtYW5pcHVsYXRpb24gKHB1c2gvcG9wIG9mIFItVEFHKSBhbmQgc2VxdWVuY2UgcmVjb3ZlcnkgYWxnb3JpdGhtcy4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA5OjQwOjU3LjIxNjU3MTI4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0OTcyNDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDlkOWY2MjA3OTBmYzI5ZWVjYTAwZjU5YmE5YjZjYWQ1ZTBhZDYyY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAwOTo0MDo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaCBiL2luY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oXFxuaW5kZXggNzBhMDJlZTE0MzA4MDcuLjhkOTdhNWYyOTNlNmQ5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvZmxvd19vZmZsb2FkLmhcXG5AQCAtMTg0LDYgKzE4NCw3IEBAIGVudW0gZmxvd19hY3Rpb25faWQge1xcbiBcXHRGTE9XX0FDVElPTl9WTEFOX1BVU0hfRVRILFxcbiBcXHRGTE9XX0FDVElPTl9WTEFOX1BPUF9FVEgsXFxuIFxcdEZMT1dfQUNUSU9OX0NPTlRJTlVFLFxcbitcXHRGTE9XX0FDVElPTl9GUkVSLFxcbiBcXHROVU1fRkxPV19BQ1RJT05TLFxcbiB9O1xcbiBcXG5AQCAtMzI5LDYgKzMzMCwxNiBAQCBzdHJ1Y3QgZmxvd19hY3Rpb25fZW50cnkge1xcbiBcXHRcXHRzdHJ1Y3Qge1xcdFxcdFxcdFxcdC8qIEZMT1dfQUNUSU9OX1BQUE9FX1BVU0ggKi9cXG4gXFx0XFx0XFx0dTE2XFx0XFx0c2lkO1xcbiBcXHRcXHR9IHBwcG9lO1xcbitcXHRcXHRzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxPV19BQ1RJT05fRlJFUiAqL1xcbitcXHRcXHRcXHR1OFxcdFxcdGZ1bmM7XFxuK1xcdFxcdFxcdHU4XFx0XFx0dGFnX3R5cGU7XFxuK1xcdFxcdFxcdGJvb2xcXHRcXHRpbmRpdmlkdWFsO1xcbitcXHRcXHRcXHR1OFxcdFxcdHJjdnlfYWxnO1xcbitcXHRcXHRcXHR1OFxcdFxcdHJjdnlfaGlzdG9yeV9sZW47XFxuK1xcdFxcdFxcdHUzMlxcdFxcdHJjdnlfcmVzZXRfbXNlYztcXG4rXFx0XFx0XFx0Ym9vbFxcdFxcdHRhZ19wb3A7XFxuK1xcdFxcdFxcdGJvb2xcXHRcXHR0YWtlX25vX3NlcTtcXG4rXFx0XFx0fSBmcmVyO1xcbiBcXHR9O1xcbiBcXHRzdHJ1Y3QgZmxvd19hY3Rpb25fY29va2llICp1c2VyX2Nvb2tpZTsgLyogdXNlciBkZWZpbmVkIGFjdGlvbiBjb29raWUgKi9cXG4gfTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2ZyZXIuaCBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19mcmVyLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41ZjZmOGNhNzA4MTNhMFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9pbmNsdWRlL25ldC90Y19hY3QvdGNfZnJlci5oXFxuQEAgLTAsMCArMSw3MSBAQFxcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqL1xcbisvKiBDb3B5cmlnaHQgMjAyNiBOWFAgKi9cXG4rXFxuKyNpZm5kZWYgX19ORVRfVENfRlJFUl9IXFxuKyNkZWZpbmUgX19ORVRfVENfRlJFUl9IXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2FjdF9hcGkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RjX2FjdC90Y19mcmVyLmhcXHUwMDNlXFxuK1xcbisvKipcXG4rICogc3RydWN0IGZyZXJfc2VxZ2VuIC0gc2VxdWVuY2UgbnVtYmVyIGdlbmVyYXRvciBzdGF0ZSAoZW1iZWRkZWQgaW4gdGNmX2ZyZXIpXFxuKyAqL1xcbitzdHJ1Y3QgZnJlcl9zZXFnZW4ge1xcbitcXHR1MzJcXHRcXHRnZW5fc2VxX251bTtcXG4rXFx0dTY0XFx0XFx0c2VxX3NwYWNlO1xcdC8qIDEgXFx1MDAzY1xcdTAwM2MgMTYgKi9cXG4rXFx0c3BpbmxvY2tfdFxcdGxvY2s7XFx0XFx0LyogcHJvdGVjdHMgZnJlcl9zZXFnZW4gc3RhdGUgKi9cXG4rXFx0dTY0XFx0XFx0c3RhdHNfcGt0cztcXHQvKiBmcmVyQ3BzU2VxR2VuUGFja2V0cyAqL1xcbit9O1xcbitcXG4rLyoqXFxuKyAqIHN0cnVjdCBmcmVyX3JjdnkgLSBzZXF1ZW5jZSByZWNvdmVyeSBzdGF0ZSAoZW1iZWRkZWQgaW4gdGNmX2ZyZXIpXFxuKyAqXFxuKyAqL1xcbitzdHJ1Y3QgZnJlcl9yY3Z5IHtcXG4rXFx0dThcXHRcXHRhbGc7XFxuK1xcdHU4XFx0XFx0aGlzdG9yeV9sZW47XFx0LyogMS0zMiAqL1xcbitcXHR1MzJcXHRcXHRyZXNldF9tc2VjO1xcbitcXHR1NjRcXHRcXHRzZXFfc3BhY2U7XFxuK1xcdHUzMlxcdFxcdHJjdnlfc2VxX251bTtcXG4rXFx0dTMyXFx0XFx0c2VxX2hpc3Rvcnk7XFxuK1xcdGJvb2xcXHRcXHR0YWtlX2FueTtcXG4rXFx0Ym9vbFxcdFxcdHRha2Vfbm9fc2VxO1xcbitcXHRzdHJ1Y3QgaHJ0aW1lclxcdGhydGltZXI7XFxuK1xcdHNwaW5sb2NrX3RcXHRsb2NrO1xcdFxcdC8qIHByb3RlY3RzIGZyZXJfcmN2eSBzdGF0ZSAqL1xcbitcXHQvKiBzdGF0aXN0aWNzICovXFxuK1xcdHU2NFxcdFxcdHN0YXRzX3RhZ2xlc3NfcGt0cztcXG4rXFx0dTY0XFx0XFx0c3RhdHNfb3V0X29mX29yZGVyX3BrdHM7XFxuK1xcdHU2NFxcdFxcdHN0YXRzX3JvZ3VlX3BrdHM7XFxuK1xcdHU2NFxcdFxcdHN0YXRzX2xvc3RfcGt0cztcXG4rXFx0dTY0XFx0XFx0c3RhdHNfcmVzZXRzO1xcbitcXHR1NjRcXHRcXHRzdGF0c19wYXNzZWRfcGt0cztcXG4rXFx0dTY0XFx0XFx0c3RhdHNfZGlzY2FyZGVkX3BrdHM7XFxuK307XFxuK1xcbisvKipcXG4rICogc3RydWN0IHRjZl9mcmVyIC0gcGVyIHRjX2FjdGlvbiBGUkVSIHByaXZhdGUgZGF0YVxcbisgKi9cXG4rc3RydWN0IHRjZl9mcmVyIHtcXG4rXFx0c3RydWN0IHRjX2FjdGlvblxcdGNvbW1vbjtcXG4rXFx0dThcXHRcXHRcXHRmdW5jO1xcbitcXHR1OFxcdFxcdFxcdHRhZ190eXBlO1xcbitcXHRib29sXFx0XFx0XFx0dGFnX3BvcDtcXG4rXFx0Ym9vbFxcdFxcdFxcdGluZGl2aWR1YWw7XFx0LyogSW5kaXZpZHVhbCBSZWNvdmVyeSBmbGFnICovXFxuK1xcdC8qIHB1c2ggcGF0aCAqL1xcbitcXHRzdHJ1Y3QgZnJlcl9zZXFnZW5cXHRzZXFnZW47XFxuK1xcdC8qIHJlY292ZXIgcGF0aCAqL1xcbitcXHRzdHJ1Y3QgZnJlcl9yY3Z5XFx0cmN2eTtcXG4rfTtcXG4rXFxuKyNkZWZpbmUgdG9fZnJlcihhKSAoKHN0cnVjdCB0Y2ZfZnJlciAqKShhKSlcXG4rXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBpc190Y2ZfZnJlcihjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphKVxcbit7XFxuKyNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcXG4rXFx0aWYgKGEtXFx1MDAzZW9wcyBcXHUwMDI2XFx1MDAyNiBhLVxcdTAwM2VvcHMtXFx1MDAzZWlkID09IFRDQV9JRF9GUkVSKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rI2VuZGlmXFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4rI2VuZGlmIC8qIF9fTkVUX1RDX0ZSRVJfSCAqL1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oXFxuaW5kZXggZmI1ZWZjOGUwNmNjMTQuLjJkOTA5MDc4Y2RlMThkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmhcXG5AQCAtMTIyLDYgKzEyMiw3IEBAXFxuICNkZWZpbmUgRVRIX1BfRFNBXzgwMjFRXFx0MHhEQURCXFx0XFx0LyogRmFrZSBWTEFOIEhlYWRlciBmb3IgRFNBIFsgTk9UIEFOIE9GRklDSUFMTFkgUkVHSVNURVJFRCBJRCBdICovXFxuICNkZWZpbmUgRVRIX1BfRFNBX0E1UFNXXFx0MHhFMDAxXFx0XFx0LyogQTVQU1cgVGFnIFZhbHVlIFsgTk9UIEFOIE9GRklDSUFMTFkgUkVHSVNURVJFRCBJRCBdICovXFxuICNkZWZpbmUgRVRIX1BfSUZFXFx0MHhFRDNFXFx0XFx0LyogRm9yQ0VTIGludGVyLUZFIExGQiB0eXBlICovXFxuKyNkZWZpbmUgRVRIX1BfUlRBR1xcdDB4RjFDMVxcdFxcdC8qIFJlZHVuZGFuY3kgVGFnIChJRUVFIDgwMi4xQ0IpICovXFxuICNkZWZpbmUgRVRIX1BfQUZfSVVDViAgIDB4RkJGQlxcdFxcdC8qIElCTSBhZl9pdWN2IFsgTk9UIEFOIE9GRklDSUFMTFkgUkVHSVNURVJFRCBJRCBdICovXFxuICNkZWZpbmUgRVRIX1BfTlhQX05FVEMgIDB4RkQzQVxcdFxcdC8qIE5YUCBORVRDIERTQSBbIE5PVCBBTiBPRkZJQ0lBTExZIFJFR0lTVEVSRUQgSUQgXSAqL1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhcXG5pbmRleCAyOGQ5NGIxMWQxYWExNi4uOWI4N2YwNDU1MTEwZDMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhcXG5AQCAtMTM5LDYgKzEzOSw3IEBAIGVudW0gdGNhX2lkIHtcXG4gXFx0VENBX0lEX01QTFMsXFxuIFxcdFRDQV9JRF9DVCxcXG4gXFx0VENBX0lEX0dBVEUsXFxuK1xcdFRDQV9JRF9GUkVSLFxcbiBcXHQvKiBvdGhlciBhY3Rpb25zIGdvIGhlcmUgKi9cXG4gXFx0X19UQ0FfSURfTUFYID0gMjU1XFxuIH07XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZnJlci5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19mcmVyLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yNDFlOTA4MjdlMjYyOFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvdGNfYWN0L3RjX2ZyZXIuaFxcbkBAIC0wLDAgKzEsODkgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovXFxuKy8qIENvcHlyaWdodCAyMDI2IE5YUCAqL1xcbitcXG4rI2lmbmRlZiBfX0xJTlVYX1RDX0ZSRVJfSFxcbisjZGVmaW5lIF9fTElOVVhfVENfRlJFUl9IXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGt0X2Nscy5oXFx1MDAzZVxcbitcXG4rLyogQmFzZSBwYXJhbWV0ZXJzIHBhc3NlZCBpbiBUQ0FfRlJFUl9QQVJNUyAqL1xcbitzdHJ1Y3QgdGNfZnJlciB7XFxuK1xcdHRjX2dlbjtcXG4rfTtcXG4rXFxuKy8qKlxcbisgKiBlbnVtIFRDQV9GUkVSXyogLSBuZXRsaW5rIGF0dHJpYnV0ZXMgZm9yIHRoZSBGUkVSIHRjIGFjdGlvblxcbisgKlxcbisgKiBAVENBX0ZSRVJfRlVOQzogICAgICAgICAgICAgRnVuY3Rpb25hbCBzdWItY29tbWFuZCAodGNfZnJlcl9mdW5jKS5cXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeS5cXG4rICogQFRDQV9GUkVSX1RBR19UWVBFOiAgICAgICAgIFJlZHVuZGFuY3kgdGFnIHR5cGUgKHRjX2ZyZXJfdGFnX3R5cGUpLlxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5LlxcbisgKlxcbisgKiBQdXNoLXNwZWNpZmljIGF0dHJpYnV0ZXMgKFRDQV9GUkVSX0ZVTkNfUFVTSCk6XFxuKyAqIFJlY292ZXItc3BlY2lmaWMgYXR0cmlidXRlcyAoVENBX0ZSRVJfRlVOQ19SRUNPVkVSKTpcXG4rICogQFRDQV9GUkVSX1JDVllfSU5ESVZJRFVBTDogIEZsYWcuIEZvcmNlIEluZGl2aWR1YWwgUmVjb3ZlcnkuXFxuKyAqIEBUQ0FfRlJFUl9SQ1ZZX0FMRzogICAgICAgICB1OC4gUmVjb3ZlcnkgYWxnb3JpdGhtICh0Y19mcmVyX3JjdnlfYWxnKS5cXG4rICogQFRDQV9GUkVSX1JDVllfSElTVE9SWV9MRU46IHU4LiBTZXF1ZW5jZUhpc3Rvcnkgd2luZG93IHNpemUgKDEtMzIpLlxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwcyB0byBmcmVyU2VxUmN2eUhpc3RvcnlMZW5ndGguXFxuKyAqIEBUQ0FfRlJFUl9SQ1ZZX1JFU0VUX01TRUM6ICB1MzIuIFJlc2V0IHRpbWVyIGluIG1pbGxpc2Vjb25kcy5cXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgZGlzYWJsZXMgdGhlIHRpbWVyLlxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwcyB0byBmcmVyU2VxUmN2eVJlc2V0TVNlYy5cXG4rICogQFRDQV9GUkVSX1JDVllfVEFLRV9OT19TRVE6IEZsYWcuIEFjY2VwdCBmcmFtZXMgd2l0aG91dCBhIHJlZHVuZGFuY3lcXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyBhbmQgcGFzcyB0aGVtIHVuY29uZGl0aW9uYWxseS5cXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcHMgdG8gZnJlclNlcVJjdnlUYWtlTm9TZXEuXFxuKyAqIEBUQ0FfRlJFUl9SQ1ZZX1RBR19QT1A6ICAgICBGbGFnLiBSZW1vdmUgdGhlIHJlZHVuZGFuY3kgdGFnIGZyb21cXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcyB0aGF0IHBhc3MgdGhlIHJlY292ZXJ5IGZ1bmN0aW9uLlxcbisgKlxcbisgKiBSZWFkLW9ubHkgc3RhdGlzdGljcyAoZmlsbGVkIG9uIGR1bXAsIElFRUUgODAyLjFDQiBUYWJsZSAxMC0xKTpcXG4rICogQFRDQV9GUkVSX1NUQVRTX1RBR0xFU1NfUEtUUzogICAgICAgZnJlckNwc1NlcVJjdnlUYWdsZXNzUGFja2V0c1xcbisgKiBAVENBX0ZSRVJfU1RBVFNfT1VUX09GX09SREVSX1BLVFM6ICBmcmVyQ3BzU2VxUmN2eU91dE9mT3JkZXJQYWNrZXRzXFxuKyAqIEBUQ0FfRlJFUl9TVEFUU19ST0dVRV9QS1RTOiAgICAgICAgIGZyZXJDcHNTZXFSY3Z5Um9ndWVQYWNrZXRzXFxuKyAqIEBUQ0FfRlJFUl9TVEFUU19MT1NUX1BLVFM6ICAgICAgICAgIGZyZXJDcHNTZXFSY3Z5TG9zdFBhY2tldHNcXG4rICogQFRDQV9GUkVSX1NUQVRTX1JFU0VUUzogICAgICAgICAgICAgZnJlckNwc1NlcVJjdnlSZXNldHNcXG4rICogQFRDQV9GUkVSX1NUQVRTX1BBU1NFRF9QS1RTOiAgICAgICAgZnJlckNwc1NlcVJjdnlQYXNzZWRQYWNrZXRzXFxuKyAqIEBUQ0FfRlJFUl9TVEFUU19ESVNDQVJERURfUEtUUzogICAgIGZyZXJDcHNTZXFSY3Z5RGlzY2FyZGVkUGFja2V0c1xcbisgKiBAVENBX0ZSRVJfU1RBVFNfU0VRR0VOX1BLVFM6ICAgICAgICBmcmVyQ3BzU2VxR2VuUGFja2V0c1xcbisgKi9cXG4rZW51bSB7XFxuK1xcdFRDQV9GUkVSX1VOU1BFQyxcXG4rXFx0VENBX0ZSRVJfVE0sICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgdGNmX3QgKi9cXG4rXFx0VENBX0ZSRVJfUEFSTVMsICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgdGNfZnJlciAqL1xcbitcXHRUQ0FfRlJFUl9QQUQsXFxuK1xcdFRDQV9GUkVSX0ZVTkMsICAgICAgICAgICAgICAgICAgICAgLyogdTg6IHRjX2ZyZXJfZnVuYyAqL1xcbitcXHRUQ0FfRlJFUl9UQUdfVFlQRSwgICAgICAgICAgICAgICAgIC8qIHU4OiB0Y19mcmVyX3RhZ190eXBlICovXFxuK1xcdFRDQV9GUkVSX1JDVllfSU5ESVZJRFVBTCwgICAgICAgICAgLyogTkxBX0ZMQUcgKi9cXG4rXFx0VENBX0ZSRVJfUkNWWV9BTEcsICAgICAgICAgICAgICAgICAvKiB1ODogdGNfZnJlcl9yY3Z5X2FsZyAqL1xcbitcXHRUQ0FfRlJFUl9SQ1ZZX0hJU1RPUllfTEVOLCAgICAgICAgIC8qIHU4OiAxLTMyICovXFxuK1xcdFRDQV9GUkVSX1JDVllfUkVTRVRfTVNFQywgICAgICAgICAgLyogdTMyICovXFxuK1xcdFRDQV9GUkVSX1JDVllfVEFLRV9OT19TRVEsICAgICAgICAgLyogTkxBX0ZMQUcgKi9cXG4rXFx0VENBX0ZSRVJfUkNWWV9UQUdfUE9QLCAgICAgICAgICAgICAvKiBOTEFfRkxBRyAqL1xcbitcXHRUQ0FfRlJFUl9TVEFUU19UQUdMRVNTX1BLVFMsICAgICAgIC8qIHU2NCAqL1xcbitcXHRUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUywgIC8qIHU2NCAqL1xcbitcXHRUQ0FfRlJFUl9TVEFUU19ST0dVRV9QS1RTLCAgICAgICAgIC8qIHU2NCAqL1xcbitcXHRUQ0FfRlJFUl9TVEFUU19MT1NUX1BLVFMsICAgICAgICAgIC8qIHU2NCAqL1xcbitcXHRUQ0FfRlJFUl9TVEFUU19SRVNFVFMsICAgICAgICAgICAgIC8qIHU2NCAqL1xcbitcXHRUQ0FfRlJFUl9TVEFUU19QQVNTRURfUEtUUywgICAgICAgIC8qIHU2NCAqL1xcbitcXHRUQ0FfRlJFUl9TVEFUU19ESVNDQVJERURfUEtUUywgICAgIC8qIHU2NCAqL1xcbitcXHRUQ0FfRlJFUl9TVEFUU19TRVFHRU5fUEtUUywgICAgICAgIC8qIHU2NCAqL1xcbitcXHRfX1RDQV9GUkVSX01BWCxcXG4rfTtcXG4rXFxuKyNkZWZpbmUgVENBX0ZSRVJfTUFYIChfX1RDQV9GUkVSX01BWCAtIDEpXFxuK1xcbitlbnVtIHRjX2ZyZXJfZnVuYyB7XFxuK1xcdFRDQV9GUkVSX0ZVTkNfUFVTSCAgICA9IDEsXFxuK1xcdFRDQV9GUkVSX0ZVTkNfUkVDT1ZFUiA9IDIsXFxuK307XFxuK1xcbitlbnVtIHRjX2ZyZXJfdGFnX3R5cGUge1xcbitcXHRUQ0FfRlJFUl9UQUdfUlRBRyA9IDEsXFxuK1xcdFRDQV9GUkVSX1RBR19IU1IsXFxuK1xcdFRDQV9GUkVSX1RBR19QUlAsXFxuK307XFxuK1xcbitlbnVtIHRjX2ZyZXJfcmN2eV9hbGcge1xcbitcXHRUQ0FfRlJFUl9SQ1ZZX1ZFQ1RPUl9BTEcgPSAwLCAgLyogSUVFRSA4MDIuMUNCIDcuNC4zLjQgKi9cXG4rXFx0VENBX0ZSRVJfUkNWWV9NQVRDSF9BTEcgID0gMSwgIC8qIElFRUUgODAyLjFDQiA3LjQuMy41ICovXFxuK307XFxuK1xcbisjZW5kaWYgLyogX19MSU5VWF9UQ19GUkVSX0ggKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL0tjb25maWcgYi9uZXQvc2NoZWQvS2NvbmZpZ1xcbmluZGV4IDZkZGZmMDI4YjgxYTQxLi43Y2E3OWIzZWI1YjM0YyAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvS2NvbmZpZ1xcbisrKyBiL25ldC9zY2hlZC9LY29uZmlnXFxuQEAgLTkzOSw2ICs5MzksMjIgQEAgY29uZmlnIE5FVF9BQ1RfR0FURVxcbiBcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gXFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2dhdGUuXFxuIFxcbitjb25maWcgTkVUX0FDVF9GUkVSXFxuK1xcdHRyaXN0YXRlIFxcXCJJRUVFIDgwMi4xQ0IgRlJFUiB0YyBhY3Rpb25cXFwiXFxuK1xcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG4rXFx0aGVscFxcbitcXHQgIFNheSBZIGhlcmUgdG8gZW5hYmxlIHRoZSBJRUVFIDgwMi4xQ0IgRlJFUiB0YyBhY3Rpb24uICBUaGUgYWN0aW9uXFxuK1xcdCAgaW1wbGVtZW50cyB0aGUgU2VxdWVuY2UgR2VuZXJhdGlvbiBGdW5jdGlvbiAoZWdyZXNzIFItVEFHIGluc2VydGlvblxcbitcXHQgIHdpdGggc2hhcmVkIHBlci1zdHJlYW0gc2VxdWVuY2UgY291bnRlcikgYW5kIHRoZSBTZXF1ZW5jZSBSZWNvdmVyeVxcbitcXHQgIEZ1bmN0aW9uIChpbmdyZXNzIGR1cGxpY2F0ZSBkZXRlY3Rpb24gYW5kIGVsaW1pbmF0aW9uKSBkZXNjcmliZWQgaW5cXG4rXFx0ICBJRUVFIDgwMi4xQ0ItMjAxNy5cXG4rXFxuK1xcdCAgQm90aCBTZXF1ZW5jZSBSZWNvdmVyeSAoY3Jvc3MtcG9ydCBzaGFyZWQgc3RhdGUgdmlhIHJjdnktaWQpIGFuZFxcbitcXHQgIEluZGl2aWR1YWwgUmVjb3ZlcnkgKHBlci1wb3J0IGluZGVwZW5kZW50IHN0YXRlKSBhcmUgc3VwcG9ydGVkLlxcbitcXG4rXFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuK1xcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9mcmVyLlxcbitcXG4gY29uZmlnIE5FVF9JRkVfU0tCTUFSS1xcbiBcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgbWFyayBvbiBJRkUgYWN0aW9uXFxcIlxcbiBcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9NYWtlZmlsZSBiL25ldC9zY2hlZC9NYWtlZmlsZVxcbmluZGV4IDUwNzhlYTg0ZTZhZDdhLi5kOWY2MDQzNGU3ZDc3ZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvTWFrZWZpbGVcXG4rKysgYi9uZXQvc2NoZWQvTWFrZWZpbGVcXG5AQCAtMzEsNiArMzEsNyBAQCBvYmotJChDT05GSUdfTkVUX0lGRV9TS0JUQ0lOREVYKVxcdCs9IGFjdF9tZXRhX3NrYnRjaW5kZXgub1xcbiBvYmotJChDT05GSUdfTkVUX0FDVF9UVU5ORUxfS0VZKSs9IGFjdF90dW5uZWxfa2V5Lm9cXG4gb2JqLSQoQ09ORklHX05FVF9BQ1RfQ1QpXFx0Kz0gYWN0X2N0Lm9cXG4gb2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcXHQrPSBhY3RfZ2F0ZS5vXFxuK29iai0kKENPTkZJR19ORVRfQUNUX0ZSRVIpXFx0Kz0gYWN0X2ZyZXIub1xcbiBvYmotJChDT05GSUdfTkVUX1NDSF9GSUZPKVxcdCs9IHNjaF9maWZvLm9cXG4gb2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVxcdCs9IHNjaF9odGIub1xcbiBvYmotJChDT05GSUdfTkVUX1NDSF9IRlNDKVxcdCs9IHNjaF9oZnNjLm9cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9mcmVyLmMgYi9uZXQvc2NoZWQvYWN0X2ZyZXIuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjdiNmRiNjQzNzg4ZGY3XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL25ldC9zY2hlZC9hY3RfZnJlci5jXFxuQEAgLTAsMCArMSw4MzUgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcXG4rLyogQ29weXJpZ2h0IDIwMjYgTlhQICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3J0bmV0bGluay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2suaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2hydGltZXIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2FjdF9hcGkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRsaW5rLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvcGt0X2Nscy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L3RjX2FjdC90Y19mcmVyLmhcXHUwMDNlXFxuK1xcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cXG4rLyogUi1UQUcgd2lyZSBzdHJ1Y3R1cmVzIChJRUVFIDgwMi4xQ0IgNy44KSAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXFxuK1xcbitzdHJ1Y3Qgcl90YWcge1xcbitcXHRfX2JlMTYgcmVzZXJ2ZWQ7XFxuK1xcdF9fYmUxNiBzZXF1ZW5jZV9ucjtcXG4rXFx0X19iZTE2IGVuY2FwX3Byb3RvO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9mcmVyX29wcztcXG4rXFxuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xcbisvKiBSZWNvdmVyeSByZXNldCBtYWNoaW5lcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXFxuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xcbitcXG4rc3RydWN0IGZyZXJfcmN2eV93b3JrIHtcXG4rXFx0c3RydWN0IHdvcmtfc3RydWN0XFx0d29yaztcXG4rXFx0c3RydWN0IGZyZXJfcmN2eVxcdCpyY3Z5O1xcbit9O1xcbitcXG4rc3RhdGljIHZvaWQgZnJlcl9yY3Z5X3Jlc2V0KHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkpXFxuK3tcXG4rXFx0aWYgKHJjdnktXFx1MDAzZWFsZyA9PSBUQ0FfRlJFUl9SQ1ZZX1ZFQ1RPUl9BTEcpIHtcXG4rXFx0XFx0cmN2eS1cXHUwMDNlcmN2eV9zZXFfbnVtID0gKHUzMikocmN2eS1cXHUwMDNlc2VxX3NwYWNlIC0gMSk7XFxuK1xcdFxcdHJjdnktXFx1MDAzZXNlcV9oaXN0b3J5ICA9IDA7XFxuK1xcdH1cXG4rXFx0cmN2eS1cXHUwMDNldGFrZV9hbnkgPSB0cnVlO1xcbitcXHRyY3Z5LVxcdTAwM2VzdGF0c19yZXNldHMrKztcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgZnJlcl9yY3Z5X3Jlc2V0X3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCBmcmVyX3Jjdnlfd29yayAqcncgPVxcbitcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGZyZXJfcmN2eV93b3JrLCB3b3JrKTtcXG4rXFx0c3RydWN0IGZyZXJfcmN2eSAqcmN2eSA9IHJ3LVxcdTAwM2VyY3Z5O1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZyY3Z5LVxcdTAwM2Vsb2NrKTtcXG4rXFx0ZnJlcl9yY3Z5X3Jlc2V0KHJjdnkpO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2cmN2eS1cXHUwMDNlbG9jayk7XFxuK1xcdGtmcmVlKHJ3KTtcXG4rfVxcbitcXG4rc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGZyZXJfcmN2eV9ocnRpbWVyX2ZuKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4re1xcbitcXHRzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5ID1cXG4rXFx0XFx0Y29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgZnJlcl9yY3Z5LCBocnRpbWVyKTtcXG4rXFx0c3RydWN0IGZyZXJfcmN2eV93b3JrICpydztcXG4rXFxuK1xcdC8qIEFsbG9jYXRlIGluIEdGUF9BVE9NSUMgY29udGV4dDsgaWYgaXQgZmFpbHMgdGhlIHN0YXRlIGlzIG5vdFxcbitcXHQgKiByZXNldCB0aGlzIGN5Y2xlIC0gdGhlIG5leHQgZnJhbWUgd2lsbCBhdHRlbXB0IGFnYWluLlxcbitcXHQgKi9cXG4rXFx0cncgPSBrbWFsbG9jX29iaigqcncpO1xcbitcXHRpZiAocncpIHtcXG4rXFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZydy1cXHUwMDNld29yaywgZnJlcl9yY3Z5X3Jlc2V0X3dvcmtfZm4pO1xcbitcXHRcXHRydy1cXHUwMDNlcmN2eSA9IHJjdnk7XFxuK1xcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnJ3LVxcdTAwM2V3b3JrKTtcXG4rXFx0fVxcbitcXHRyZXR1cm4gSFJUSU1FUl9OT1JFU1RBUlQ7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGZyZXJfcmN2eV90aW1lcl9yZXN0YXJ0KHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkpXFxuK3tcXG4rXFx0aWYgKHJjdnktXFx1MDAzZXJlc2V0X21zZWMpXFxuK1xcdFxcdGhydGltZXJfc3RhcnQoXFx1MDAyNnJjdnktXFx1MDAzZWhydGltZXIsXFxuK1xcdFxcdFxcdCAgICAgIG1zX3RvX2t0aW1lKHJjdnktXFx1MDAzZXJlc2V0X21zZWMpLFxcbitcXHRcXHRcXHQgICAgICBIUlRJTUVSX01PREVfUkVMX1NPRlQpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBmcmVyX3JjdnlfaW5pdF9zdGF0ZShzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5LCB1OCBhbGcsXFxuK1xcdFxcdFxcdFxcdCB1OCBoaXN0b3J5X2xlbiwgdTMyIHJlc2V0X21zZWMsXFxuK1xcdFxcdFxcdFxcdCBib29sIHRha2Vfbm9fc2VxKVxcbit7XFxuK1xcdHJjdnktXFx1MDAzZWFsZyAgICAgICAgICA9IGFsZztcXG4rXFx0cmN2eS1cXHUwMDNlaGlzdG9yeV9sZW4gID0gaGlzdG9yeV9sZW47XFxuK1xcdHJjdnktXFx1MDAzZXJlc2V0X21zZWMgICA9IHJlc2V0X21zZWM7XFxuK1xcdHJjdnktXFx1MDAzZXNlcV9zcGFjZSAgICA9IDEgXFx1MDAzY1xcdTAwM2MgMTY7XFxuK1xcdHJjdnktXFx1MDAzZXRha2Vfbm9fc2VxICA9IHRha2Vfbm9fc2VxO1xcbitcXHRyY3Z5LVxcdTAwM2V0YWtlX2FueSAgICAgPSB0cnVlO1xcbitcXHRyY3Z5LVxcdTAwM2VyY3Z5X3NlcV9udW0gPSAodTMyKShyY3Z5LVxcdTAwM2VzZXFfc3BhY2UgLSAxKTtcXG4rXFx0cmN2eS1cXHUwMDNlc2VxX2hpc3RvcnkgID0gMDtcXG4rXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnJjdnktXFx1MDAzZWxvY2spO1xcbitcXHRocnRpbWVyX3NldHVwKFxcdTAwMjZyY3Z5LVxcdTAwM2VocnRpbWVyLCBmcmVyX3JjdnlfaHJ0aW1lcl9mbiwgQ0xPQ0tfTU9OT1RPTklDLFxcbitcXHRcXHQgICAgICBIUlRJTUVSX01PREVfUkVMX1NPRlQpO1xcbit9XFxuK1xcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cXG4rLyogUi1UQUcgaGVscGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cXG4rXFxuK3N0YXRpYyBpbnQgZnJlcl9ydGFnX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHNlcV9udW0pXFxuK3tcXG4rXFx0dW5zaWduZWQgY2hhciAqbmV3X21hY19oZWFkZXI7XFxuK1xcdHVuc2lnbmVkIGludCBkYXRhX29mZnNldDtcXG4rXFx0dW5zaWduZWQgaW50IGhlYWRfbGVuO1xcbitcXHRzdHJ1Y3Qgdmxhbl9ldGhoZHIgKnZoO1xcbitcXHRzdHJ1Y3QgZXRoaGRyICplaDtcXG4rXFx0c3RydWN0IHJfdGFnICpydGFnO1xcbitcXHRfX2JlMTYgKnByb3RvX3B0cjtcXG4rXFx0X19iZTE2IHNhdmVkX3Byb3RvO1xcbitcXG4rXFx0aWYgKCFza2JfbWFjX2hlYWRlcl93YXNfc2V0KHNrYikpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0ZGF0YV9vZmZzZXQgPSBza2ItXFx1MDAzZWRhdGEgLSBza2JfbWFjX2hlYWRlcihza2IpO1xcbitcXG4rXFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGRhdGFfb2Zmc2V0ICsgc2l6ZW9mKCpydGFnKSkpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0aWYgKGRhdGFfb2Zmc2V0IFxcdTAwM2UgMClcXG4rXFx0XFx0c2tiX3B1c2goc2tiLCBkYXRhX29mZnNldCk7XFxuK1xcbitcXHRlaCA9IGV0aF9oZHIoc2tiKTtcXG4rXFx0aWYgKGV0aF90eXBlX3ZsYW4oZWgtXFx1MDAzZWhfcHJvdG8pKSB7XFxuK1xcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZigqdmgpKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdGVoID0gZXRoX2hkcihza2IpO1xcbitcXHRcXHR2aCA9IChzdHJ1Y3Qgdmxhbl9ldGhoZHIgKillaDtcXG4rXFx0XFx0cHJvdG9fcHRyID0gXFx1MDAyNnZoLVxcdTAwM2VoX3ZsYW5fZW5jYXBzdWxhdGVkX3Byb3RvO1xcbitcXHRcXHRoZWFkX2xlbiA9IHNpemVvZigqdmgpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2YoKmVoKSkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRlaCA9IGV0aF9oZHIoc2tiKTtcXG4rXFx0XFx0cHJvdG9fcHRyID0gXFx1MDAyNmVoLVxcdTAwM2VoX3Byb3RvO1xcbitcXHRcXHRoZWFkX2xlbiA9IHNpemVvZigqZWgpO1xcbitcXHR9XFxuK1xcbitcXHRzYXZlZF9wcm90byA9ICpwcm90b19wdHI7XFxuK1xcdCpwcm90b19wdHIgPSBodG9ucyhFVEhfUF9SVEFHKTtcXG4rXFxuK1xcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpydGFnKSk7XFxuK1xcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XFxuK1xcbitcXHRuZXdfbWFjX2hlYWRlciA9IHNrYl9tYWNfaGVhZGVyKHNrYik7XFxuK1xcdG1lbW1vdmUobmV3X21hY19oZWFkZXIsICh1bnNpZ25lZCBjaGFyICopZWgsIGhlYWRfbGVuKTtcXG4rXFxuK1xcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9SVEFHKTtcXG4rXFx0c2tiX3NldF9uZXR3b3JrX2hlYWRlcihza2IsIGhlYWRfbGVuKTtcXG4rXFx0aWYgKGRhdGFfb2Zmc2V0IFxcdTAwM2UgMClcXG4rXFx0XFx0c2tiX3B1bGwoc2tiLCBkYXRhX29mZnNldCk7XFxuK1xcbitcXHQvKiBXcml0ZSBSLVRBRyBhZnRlciB0aGUgRXRoZXJuZXQgLyBWTEFOIGhlYWRlciAqL1xcbitcXHRydGFnID0gKHN0cnVjdCByX3RhZyAqKShuZXdfbWFjX2hlYWRlciArIGhlYWRfbGVuKTtcXG4rXFx0cnRhZy1cXHUwMDNlcmVzZXJ2ZWQgICAgPSAwO1xcbitcXHRydGFnLVxcdTAwM2VzZXF1ZW5jZV9uciA9IGh0b25zKHNlcV9udW0pO1xcbitcXHRydGFnLVxcdTAwM2VlbmNhcF9wcm90byA9IHNhdmVkX3Byb3RvO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGZyZXJfcnRhZ19wb3Aoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4re1xcbitcXHR1bnNpZ25lZCBjaGFyICpuZXdfbWFjX2hlYWRlcjtcXG4rXFx0dW5zaWduZWQgaW50IGRhdGFfb2Zmc2V0O1xcbitcXHR1bnNpZ25lZCBpbnQgaGVhZF9sZW47XFxuK1xcdHN0cnVjdCB2bGFuX2V0aGhkciAqdmg7XFxuK1xcdHN0cnVjdCBldGhoZHIgKmVoO1xcbitcXHRzdHJ1Y3Qgcl90YWcgKnJ0YWc7XFxuK1xcdF9fYmUxNiAqcHJvdG9fcHRyO1xcbitcXG4rXFx0ZGF0YV9vZmZzZXQgPSBza2ItXFx1MDAzZWRhdGEgLSBza2JfbWFjX2hlYWRlcihza2IpO1xcbitcXHRpZiAoZGF0YV9vZmZzZXQgXFx1MDAzZSAwKVxcbitcXHRcXHRza2JfcHVzaChza2IsIGRhdGFfb2Zmc2V0KTtcXG4rXFxuK1xcdGVoID0gZXRoX2hkcihza2IpO1xcbitcXHRpZiAoZXRoX3R5cGVfdmxhbihlaC1cXHUwMDNlaF9wcm90bykpIHtcXG4rXFx0XFx0dmggPSAoc3RydWN0IHZsYW5fZXRoaGRyICopZWg7XFxuK1xcdFxcdHByb3RvX3B0ciA9IFxcdTAwMjZ2aC1cXHUwMDNlaF92bGFuX2VuY2Fwc3VsYXRlZF9wcm90bztcXG4rXFx0XFx0aGVhZF9sZW4gPSBzaXplb2YoKnZoKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cHJvdG9fcHRyID0gXFx1MDAyNmVoLVxcdTAwM2VoX3Byb3RvO1xcbitcXHRcXHRoZWFkX2xlbiA9IHNpemVvZigqZWgpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoKnByb3RvX3B0ciAhPSBodG9ucyhFVEhfUF9SVEFHKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cnRhZyA9IChzdHJ1Y3Qgcl90YWcgKikoKHVuc2lnbmVkIGNoYXIgKillaCArIGhlYWRfbGVuKTtcXG4rXFx0KnByb3RvX3B0ciA9IHJ0YWctXFx1MDAzZWVuY2FwX3Byb3RvO1xcbitcXG4rXFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IHJ0YWctXFx1MDAzZWVuY2FwX3Byb3RvO1xcbitcXG4rXFx0c2tiX3Bvc3RwdWxsX3Jjc3VtKHNrYiwgcnRhZywgc2l6ZW9mKHN0cnVjdCByX3RhZykpO1xcbitcXHRza2JfcHVsbChza2IsIHNpemVvZigqcnRhZykpO1xcbitcXHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xcbitcXG4rXFx0bmV3X21hY19oZWFkZXIgPSBza2JfbWFjX2hlYWRlcihza2IpO1xcbitcXHRtZW1tb3ZlKG5ld19tYWNfaGVhZGVyLCAodW5zaWduZWQgY2hhciAqKWVoLCBoZWFkX2xlbik7XFxuK1xcbitcXHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgaGVhZF9sZW4pO1xcbitcXHRpZiAoZGF0YV9vZmZzZXQgXFx1MDAzZSAwKVxcbitcXHRcXHRza2JfcHVsbChza2IsIGRhdGFfb2Zmc2V0KTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBmcmVyX3J0YWdfZGVjb2RlKHN0cnVjdCBza19idWZmICpza2IsIGludCAqc2VxKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBkYXRhX29mZnNldDtcXG4rXFx0c3RydWN0IHZsYW5fZXRoaGRyICp2aDtcXG4rXFx0dW5zaWduZWQgaW50IGhlYWRfbGVuO1xcbitcXHRzdHJ1Y3QgZXRoaGRyICplaDtcXG4rXFx0c3RydWN0IHJfdGFnICpydGFnO1xcbitcXHRfX2JlMTYgKnByb3RvX3B0cjtcXG4rXFxuK1xcdGlmICghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGRhdGFfb2Zmc2V0ID0gc2tiLVxcdTAwM2VkYXRhIC0gc2tiX21hY19oZWFkZXIoc2tiKTtcXG4rXFxuK1xcdGlmIChza2JfY293X2hlYWQoc2tiLCBkYXRhX29mZnNldCkpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0aWYgKGRhdGFfb2Zmc2V0IFxcdTAwM2UgMClcXG4rXFx0XFx0c2tiX3B1c2goc2tiLCBkYXRhX29mZnNldCk7XFxuK1xcbitcXHRlaCA9IGV0aF9oZHIoc2tiKTtcXG4rXFx0aWYgKGV0aF90eXBlX3ZsYW4oZWgtXFx1MDAzZWhfcHJvdG8pKSB7XFxuK1xcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZigqdmgpICsgc2l6ZW9mKCpydGFnKSkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRlaCA9IGV0aF9oZHIoc2tiKTtcXG4rXFx0XFx0dmggPSAoc3RydWN0IHZsYW5fZXRoaGRyICopZWg7XFxuK1xcdFxcdHByb3RvX3B0ciA9IFxcdTAwMjZ2aC1cXHUwMDNlaF92bGFuX2VuY2Fwc3VsYXRlZF9wcm90bztcXG4rXFx0XFx0aGVhZF9sZW4gPSBzaXplb2YoKnZoKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKCplaCkgKyBzaXplb2YoKnJ0YWcpKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdGVoID0gZXRoX2hkcihza2IpO1xcbitcXHRcXHRwcm90b19wdHIgPSBcXHUwMDI2ZWgtXFx1MDAzZWhfcHJvdG87XFxuK1xcdFxcdGhlYWRfbGVuID0gc2l6ZW9mKCplaCk7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChkYXRhX29mZnNldCBcXHUwMDNlIDApXFxuK1xcdFxcdHNrYl9wdWxsKHNrYiwgZGF0YV9vZmZzZXQpO1xcbitcXG4rXFx0aWYgKCpwcm90b19wdHIgIT0gaHRvbnMoRVRIX1BfUlRBRykpIHtcXG4rXFx0XFx0KnNlcSA9IC0xO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0cnRhZyA9IChzdHJ1Y3Qgcl90YWcgKikoKHVuc2lnbmVkIGNoYXIgKillaCArIGhlYWRfbGVuKTtcXG4rXFxuK1xcdCpzZXEgPSAoaW50KW50b2hzKHJ0YWctXFx1MDAzZXNlcXVlbmNlX25yKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cXG4rLyogUmVjb3ZlcnkgYWxnb3JpdGhtcyAoY2FsbGVkIHdpdGggcmN2eS1cXHUwMDNlbG9jayBoZWxkKSAgICAgICAgICAgICAgICAgICovXFxuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xcbitcXG4rLyogUmV0dXJucyB0cnVlID0gcGFzcyBmcmFtZSwgZmFsc2UgPSBkaXNjYXJkIGZyYW1lLlxcbisgKiBAaW5kaXZpZHVhbDogd2hlbiB0cnVlLCByZXN0YXJ0IHRoZSByZXNldCB0aW1lciBldmVuIG9uIGRpc2NhcmRlZCBmcmFtZXNcXG4rICogICAocm9ndWUvZHVwbGljYXRlKSwgYXMgcmVxdWlyZWQgZm9yIEluZGl2aWR1YWwgUmVjb3ZlcnkgKElFRUUgODAyLjFDQiA3LjUpLlxcbisgKi9cXG4rc3RhdGljIGJvb2wgZnJlcl92ZWN0b3JfYWxnKHN0cnVjdCBmcmVyX3JjdnkgKnJjdnksIGludCBzZXEsIGJvb2wgaW5kaXZpZHVhbClcXG4re1xcbitcXHRpbnQgZGVsdGE7XFxuK1xcdGJvb2wgcmVzdGFydF90aW1lciA9IGZhbHNlO1xcbitcXHRib29sIHBhc3M7XFxuK1xcbitcXHRpZiAoc2VxIFxcdTAwM2MgMCkge1xcbitcXHRcXHQvKiBObyBSLVRBRyBwcmVzZW50ICovXFxuK1xcdFxcdHJjdnktXFx1MDAzZXN0YXRzX3RhZ2xlc3NfcGt0cysrO1xcbitcXHRcXHRpZiAocmN2eS1cXHUwMDNldGFrZV9ub19zZXEpIHtcXG4rXFx0XFx0XFx0cmVzdGFydF90aW1lciA9IHRydWU7XFxuK1xcdFxcdFxcdHBhc3MgPSB0cnVlO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRwYXNzID0gZmFsc2U7XFxuK1xcdFxcdH1cXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChyY3Z5LVxcdTAwM2V0YWtlX2FueSkge1xcbitcXHRcXHQvKiBGaXJzdCBmcmFtZSBhZnRlciByZXNldDogYWNjZXB0IHVuY29uZGl0aW9uYWxseSAqL1xcbitcXHRcXHRyY3Z5LVxcdTAwM2V0YWtlX2FueSAgICAgPSBmYWxzZTtcXG4rXFx0XFx0cmN2eS1cXHUwMDNlcmN2eV9zZXFfbnVtID0gKHUzMilzZXE7XFxuK1xcdFxcdHJjdnktXFx1MDAzZXNlcV9oaXN0b3J5ICA9IEJJVCgwKTtcXG4rXFx0XFx0cmVzdGFydF90aW1lciA9IHRydWU7XFxuK1xcdFxcdHBhc3MgPSB0cnVlO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0ZGVsdGEgPSAoc2VxIC0gKGludClyY3Z5LVxcdTAwM2VyY3Z5X3NlcV9udW0pIFxcdTAwMjZcXG4rXFx0XFx0KGludCkocmN2eS1cXHUwMDNlc2VxX3NwYWNlIC0gMSk7XFxuK1xcdC8qIE1hcCBkZWx0YSBcXHUwMDNlIHNlcV9zcGFjZS8yIHRvIG5lZ2F0aXZlIChzaWduZWQgd3JhcCkgKi9cXG4rXFx0aWYgKCh1MzIpZGVsdGEgXFx1MDAyNiAodTMyKShyY3Z5LVxcdTAwM2VzZXFfc3BhY2UgLyAyKSlcXG4rXFx0XFx0ZGVsdGEgLT0gKGludClyY3Z5LVxcdTAwM2VzZXFfc3BhY2U7XFxuK1xcbitcXHRpZiAoZGVsdGEgXFx1MDAzZT0gKGludClyY3Z5LVxcdTAwM2VoaXN0b3J5X2xlbiB8fFxcbitcXHQgICAgZGVsdGEgXFx1MDAzYz0gLShpbnQpcmN2eS1cXHUwMDNlaGlzdG9yeV9sZW4pIHtcXG4rXFx0XFx0LyogUGFja2V0IGlzIG91dC1vZi1yYW5nZSAocm9ndWUpLiAqL1xcbitcXHRcXHRyY3Z5LVxcdTAwM2VzdGF0c19yb2d1ZV9wa3RzKys7XFxuK1xcdFxcdGlmIChpbmRpdmlkdWFsKVxcbitcXHRcXHRcXHRyZXN0YXJ0X3RpbWVyID0gdHJ1ZTtcXG4rXFx0XFx0cGFzcyA9IGZhbHNlO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGRlbHRhIFxcdTAwM2M9IDApIHtcXG4rXFx0XFx0LyogUGFja2V0IGlzIG9sZDogY2hlY2sgd2hldGhlciBhbHJlYWR5IHNlZW4uICovXFxuK1xcdFxcdGlmIChyY3Z5LVxcdTAwM2VzZXFfaGlzdG9yeSBcXHUwMDI2IEJJVCgtZGVsdGEpKSB7XFxuK1xcdFxcdFxcdGlmIChpbmRpdmlkdWFsKVxcbitcXHRcXHRcXHRcXHRyZXN0YXJ0X3RpbWVyID0gdHJ1ZTtcXG4rXFx0XFx0XFx0LyogQWxyZWFkeSByZWNlaXZlZCAqL1xcbitcXHRcXHRcXHRwYXNzID0gZmFsc2U7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdC8qIE91dC1vZi1vcmRlciBidXQgbm90IHlldCBzZWVuICovXFxuK1xcdFxcdFxcdHJjdnktXFx1MDAzZXNlcV9oaXN0b3J5IHw9IEJJVCgtZGVsdGEpO1xcbitcXHRcXHRcXHRyY3Z5LVxcdTAwM2VzdGF0c19vdXRfb2Zfb3JkZXJfcGt0cysrO1xcbitcXHRcXHRcXHRyZXN0YXJ0X3RpbWVyID0gdHJ1ZTtcXG4rXFx0XFx0XFx0cGFzcyA9IHRydWU7XFxuK1xcdFxcdH1cXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIGRlbHRhIFxcdTAwM2UgMDogZnJhbWUgaXMgbmV3ZXIgdGhhbiBleHBlY3RlZCAqL1xcbitcXHRpZiAoZGVsdGEgIT0gMSlcXG4rXFx0XFx0cmN2eS1cXHUwMDNlc3RhdHNfb3V0X29mX29yZGVyX3BrdHMrKztcXG4rXFxuK1xcdC8qIFNoaWZ0IGhpc3RvcnkgZm9yd2FyZCwgY291bnRpbmcgYW55IGdhcHMgYXMgbG9zdCAqL1xcbitcXHR3aGlsZSAoLS1kZWx0YSkge1xcbitcXHRcXHRpZiAoIShyY3Z5LVxcdTAwM2VzZXFfaGlzdG9yeSBcXHUwMDI2IEJJVChyY3Z5LVxcdTAwM2VoaXN0b3J5X2xlbiAtIDEpKSlcXG4rXFx0XFx0XFx0cmN2eS1cXHUwMDNlc3RhdHNfbG9zdF9wa3RzKys7XFxuK1xcdFxcdHJjdnktXFx1MDAzZXNlcV9oaXN0b3J5IFxcdTAwM2NcXHUwMDNjPSAxO1xcbitcXHR9XFxuK1xcdGlmICghKHJjdnktXFx1MDAzZXNlcV9oaXN0b3J5IFxcdTAwMjYgQklUKHJjdnktXFx1MDAzZWhpc3RvcnlfbGVuIC0gMSkpKVxcbitcXHRcXHRyY3Z5LVxcdTAwM2VzdGF0c19sb3N0X3BrdHMrKztcXG4rXFx0cmN2eS1cXHUwMDNlc2VxX2hpc3RvcnkgPSAocmN2eS1cXHUwMDNlc2VxX2hpc3RvcnkgXFx1MDAzY1xcdTAwM2MgMSkgfCBCSVQoMCk7XFxuK1xcdHJjdnktXFx1MDAzZXJjdnlfc2VxX251bSA9ICh1MzIpc2VxO1xcbitcXHRyZXN0YXJ0X3RpbWVyID0gdHJ1ZTtcXG4rXFx0cGFzcyA9IHRydWU7XFxuK1xcbitvdXQ6XFxuK1xcdGlmIChyZXN0YXJ0X3RpbWVyKVxcbitcXHRcXHRmcmVyX3JjdnlfdGltZXJfcmVzdGFydChyY3Z5KTtcXG4rXFx0cmV0dXJuIHBhc3M7XFxuK31cXG4rXFxuK3N0YXRpYyBib29sIGZyZXJfbWF0Y2hfYWxnKHN0cnVjdCBmcmVyX3JjdnkgKnJjdnksIGludCBzZXEsIGJvb2wgaW5kaXZpZHVhbClcXG4re1xcbitcXHRpZiAoc2VxIFxcdTAwM2MgMCkge1xcbitcXHRcXHQvKiBObyBSLVRBRzogTWF0Y2ggYWxnIGNhbm5vdCBkZWR1cGxpY2F0ZSwgYWx3YXlzIHBhc3MuICovXFxuK1xcdFxcdHJjdnktXFx1MDAzZXN0YXRzX3RhZ2xlc3NfcGt0cysrO1xcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHJjdnktXFx1MDAzZXRha2VfYW55KSB7XFxuK1xcdFxcdHJjdnktXFx1MDAzZXRha2VfYW55ICAgICA9IGZhbHNlO1xcbitcXHRcXHRyY3Z5LVxcdTAwM2VyY3Z5X3NlcV9udW0gPSAodTMyKXNlcTtcXG4rXFx0XFx0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoKHUzMilzZXEgPT0gcmN2eS1cXHUwMDNlcmN2eV9zZXFfbnVtKSB7XFxuK1xcdFxcdC8qIER1cGxpY2F0ZSAqL1xcbitcXHRcXHRpZiAoaW5kaXZpZHVhbClcXG4rXFx0XFx0XFx0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0LyogTmV3IHNlcXVlbmNlIG51bWJlcjogYWNjZXB0IGFuZCB1cGRhdGUgKi9cXG4rXFx0aWYgKCh1MzIpc2VxICE9ICgocmN2eS1cXHUwMDNlcmN2eV9zZXFfbnVtICsgMSkgJSByY3Z5LVxcdTAwM2VzZXFfc3BhY2UpKVxcbitcXHRcXHRyY3Z5LVxcdTAwM2VzdGF0c19vdXRfb2Zfb3JkZXJfcGt0cysrO1xcbitcXHRyY3Z5LVxcdTAwM2VyY3Z5X3NlcV9udW0gPSAodTMyKXNlcTtcXG4rXFx0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cXG4rLyogTmV0bGluayBwb2xpY3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBmcmVyX3BvbGljeVtUQ0FfRlJFUl9NQVggKyAxXSA9IHtcXG4rXFx0W1RDQV9GUkVSX1BBUk1TXSAgICAgICAgICAgID0gTkxBX1BPTElDWV9FWEFDVF9MRU4oc2l6ZW9mKHN0cnVjdCB0Y19mcmVyKSksXFxuK1xcdFtUQ0FfRlJFUl9GVU5DXSAgICAgICAgICAgICA9IHsgLnR5cGUgPSBOTEFfVTggfSxcXG4rXFx0W1RDQV9GUkVSX1RBR19UWVBFXSAgICAgICAgID0geyAudHlwZSA9IE5MQV9VOCB9LFxcbitcXHRbVENBX0ZSRVJfUkNWWV9JTkRJVklEVUFMXSAgPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG4rXFx0W1RDQV9GUkVSX1JDVllfQUxHXSAgICAgICAgID0geyAudHlwZSA9IE5MQV9VOCB9LFxcbitcXHRbVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTl0gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgMSwgMzIpLFxcbitcXHRbVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDXSAgPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbitcXHRbVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUV0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG4rXFx0W1RDQV9GUkVSX1JDVllfVEFHX1BPUF0gICAgID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxuK307XFxuK1xcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cXG4rLyogQWN0aW9uIGluaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cXG4rXFxuK3N0YXRpYyBpbnQgdGNmX2ZyZXJfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKm5sYSxcXG4rXFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKmVzdCwgc3RydWN0IHRjX2FjdGlvbiAqKmEsXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdTMyIGZsYWdzLFxcbitcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCB0Y19hY3Rpb25fbmV0ICp0biA9IG5ldF9nZW5lcmljKG5ldCwgYWN0X2ZyZXJfb3BzLm5ldF9pZCk7XFxuK1xcdGJvb2wgYmluZCA9IGZsYWdzIFxcdTAwMjYgVENBX0FDVF9GTEFHU19CSU5EO1xcbitcXHRzdHJ1Y3QgbmxhdHRyICp0YltUQ0FfRlJFUl9NQVggKyAxXTtcXG4rXFx0c3RydWN0IHRjZl9jaGFpbiAqZ290b19jaCA9IE5VTEw7XFxuK1xcdHN0cnVjdCB0Y2ZfZnJlciAqZjtcXG4rXFx0c3RydWN0IHRjX2ZyZXIgKnBhcm07XFxuK1xcdGJvb2wgZXhpc3RzID0gZmFsc2U7XFxuK1xcdGludCByZXQgPSAwLCBlcnIsIGluZGV4O1xcbitcXHR1OCBmdW5jLCB0YWdfdHlwZTtcXG4rXFxuK1xcdGlmICghbmxhKSB7XFxuK1xcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJmcmVyOiBhdHRyaWJ1dGVzIHJlcXVpcmVkXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBUQ0FfRlJFUl9NQVgsIG5sYSwgZnJlcl9wb2xpY3ksIGV4dGFjayk7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0aWYgKCF0YltUQ0FfRlJFUl9QQVJNU10pIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcImZyZXI6IFRDQV9GUkVSX1BBUk1TIG1pc3NpbmdcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFx0aWYgKCF0YltUQ0FfRlJFUl9GVU5DXSkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiZnJlcjogVENBX0ZSRVJfRlVOQyBtaXNzaW5nXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcdGlmICghdGJbVENBX0ZSRVJfVEFHX1RZUEVdKSB7XFxuK1xcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJmcmVyOiBUQ0FfRlJFUl9UQUdfVFlQRSBtaXNzaW5nXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRmdW5jICAgICA9IG5sYV9nZXRfdTgodGJbVENBX0ZSRVJfRlVOQ10pO1xcbitcXHR0YWdfdHlwZSA9IG5sYV9nZXRfdTgodGJbVENBX0ZSRVJfVEFHX1RZUEVdKTtcXG4rXFxuK1xcdGlmIChmdW5jICE9IFRDQV9GUkVSX0ZVTkNfUFVTSCBcXHUwMDI2XFx1MDAyNiBmdW5jICE9IFRDQV9GUkVSX0ZVTkNfUkVDT1ZFUikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiZnJlcjogdW5rbm93biBmdW5jXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcdGlmICh0YWdfdHlwZSAhPSBUQ0FfRlJFUl9UQUdfUlRBRykge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiZnJlcjogb25seSBydGFnIHN1cHBvcnRlZFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdHBhcm0gID0gbmxhX2RhdGEodGJbVENBX0ZSRVJfUEFSTVNdKTtcXG4rXFx0aW5kZXggPSBwYXJtLVxcdTAwM2VpbmRleDtcXG4rXFxuK1xcdGVyciA9IHRjZl9pZHJfY2hlY2tfYWxsb2ModG4sIFxcdTAwMjZpbmRleCwgYSwgYmluZCk7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRleGlzdHMgPSBlcnI7XFxuK1xcbitcXHRpZiAoZXhpc3RzIFxcdTAwMjZcXHUwMDI2IGJpbmQpXFxuK1xcdFxcdHJldHVybiBBQ1RfUF9CT1VORDtcXG4rXFxuK1xcdGlmICghZXhpc3RzKSB7XFxuK1xcdFxcdHJldCA9IHRjZl9pZHJfY3JlYXRlX2Zyb21fZmxhZ3ModG4sIGluZGV4LCBlc3QsIGEsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZhY3RfZnJlcl9vcHMsIGJpbmQsIGZsYWdzKTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHR0Y2ZfaWRyX2NsZWFudXAodG4sIGluZGV4KTtcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0fVxcbitcXHRcXHRyZXQgPSBBQ1RfUF9DUkVBVEVEO1xcbitcXHR9IGVsc2UgaWYgKCEoZmxhZ3MgXFx1MDAyNiBUQ0FfQUNUX0ZMQUdTX1JFUExBQ0UpKSB7XFxuK1xcdFxcdHRjZl9pZHJfcmVsZWFzZSgqYSwgYmluZCk7XFxuK1xcdFxcdHJldHVybiAtRUVYSVNUO1xcbitcXHR9XFxuK1xcbitcXHRlcnIgPSB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QocGFybS1cXHUwMDNlYWN0aW9uLCB0cCwgXFx1MDAyNmdvdG9fY2gsIGV4dGFjayk7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRnb3RvIHJlbGVhc2VfaWRyO1xcbitcXG4rXFx0ZiA9IHRvX2ZyZXIoKmEpO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZmLVxcdTAwM2V0Y2ZfbG9jayk7XFxuK1xcdGdvdG9fY2ggPSB0Y2ZfYWN0aW9uX3NldF9jdHJsYWN0KCphLCBwYXJtLVxcdTAwM2VhY3Rpb24sIGdvdG9fY2gpO1xcbitcXHRmLVxcdTAwM2VmdW5jICAgICA9IGZ1bmM7XFxuK1xcdGYtXFx1MDAzZXRhZ190eXBlID0gdGFnX3R5cGU7XFxuK1xcdGYtXFx1MDAzZXRhZ19wb3AgID0gISF0YltUQ0FfRlJFUl9SQ1ZZX1RBR19QT1BdO1xcbitcXG4rXFx0aWYgKGZ1bmMgPT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7XFxuK1xcdFxcdGlmIChyZXQgPT0gQUNUX1BfQ1JFQVRFRCkge1xcbitcXHRcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2Zi1cXHUwMDNlc2VxZ2VuLmxvY2spO1xcbitcXHRcXHRcXHRmLVxcdTAwM2VzZXFnZW4uc2VxX3NwYWNlID0gMSBcXHUwMDNjXFx1MDAzYyAxNjtcXG4rXFx0XFx0fVxcbitcXHRcXHQvKiBnZW5fc2VxX251bSBzdGFydHMgYXQgMCBvbiBjcmVhdGlvbjsgcHJlc2VydmVkIG9uIHJlcGxhY2UgKi9cXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dTggYWxnID0gdGJbVENBX0ZSRVJfUkNWWV9BTEddID9cXG4rXFx0XFx0XFx0IG5sYV9nZXRfdTgodGJbVENBX0ZSRVJfUkNWWV9BTEddKSA6XFxuK1xcdFxcdFxcdCBUQ0FfRlJFUl9SQ1ZZX1ZFQ1RPUl9BTEc7XFxuK1xcdFxcdHU4IGhpc3RvcnlfbGVuID0gdGJbVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTl0gP1xcbitcXHRcXHRcXHRcXHQgbmxhX2dldF91OCh0YltUQ0FfRlJFUl9SQ1ZZX0hJU1RPUllfTEVOXSkgOiAzMjtcXG4rXFx0XFx0dTMyIHJlc2V0X21zZWMgPSB0YltUQ0FfRlJFUl9SQ1ZZX1JFU0VUX01TRUNdID9cXG4rXFx0XFx0XFx0XFx0IG5sYV9nZXRfdTMyKHRiW1RDQV9GUkVSX1JDVllfUkVTRVRfTVNFQ10pIDogMDtcXG4rXFx0XFx0Ym9vbCB0YWtlX25vX3NlcSA9ICEhdGJbVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUV07XFxuK1xcbitcXHRcXHRpZiAoYWxnICE9IFRDQV9GUkVSX1JDVllfVkVDVE9SX0FMRyBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgYWxnICE9IFRDQV9GUkVSX1JDVllfTUFUQ0hfQUxHKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZmLVxcdTAwM2V0Y2ZfbG9jayk7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJmcmVyOiB1bmtub3duIHJlY292ZXJ5IGFsZ29yaXRobVxcXCIpO1xcbitcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRnb3RvIHJlbGVhc2VfaWRyO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRmLVxcdTAwM2VpbmRpdmlkdWFsID0gISF0YltUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUxdO1xcbitcXG4rXFx0XFx0LyogQ2FuY2VsIGFueSBydW5uaW5nIHJlc2V0IHRpbWVyIGJlZm9yZSByZS1pbml0aWFsaXNpbmcuICovXFxuK1xcdFxcdGlmIChyZXQgIT0gQUNUX1BfQ1JFQVRFRCBcXHUwMDI2XFx1MDAyNiBmLVxcdTAwM2VyY3Z5LnJlc2V0X21zZWMpIHtcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmYtXFx1MDAzZXRjZl9sb2NrKTtcXG4rXFx0XFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNmYtXFx1MDAzZXJjdnkuaHJ0aW1lcik7XFxuK1xcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2Zi1cXHUwMDNldGNmX2xvY2spO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRmcmVyX3JjdnlfaW5pdF9zdGF0ZShcXHUwMDI2Zi1cXHUwMDNlcmN2eSwgYWxnLCBoaXN0b3J5X2xlbixcXG4rXFx0XFx0XFx0XFx0ICAgICByZXNldF9tc2VjLCB0YWtlX25vX3NlcSk7XFxuK1xcdH1cXG4rXFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZmLVxcdTAwM2V0Y2ZfbG9jayk7XFxuK1xcbitcXHRpZiAoZ290b19jaClcXG4rXFx0XFx0dGNmX2NoYWluX3B1dF9ieV9hY3QoZ290b19jaCk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbitcXG4rcmVsZWFzZV9pZHI6XFxuK1xcdHRjZl9pZHJfcmVsZWFzZSgqYSwgYmluZCk7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xcbisvKiBEYXRhIHBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXFxuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xcbitcXG4rc3RhdGljIGludCB0Y2ZfZnJlcl9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4rXFx0XFx0XFx0c3RydWN0IHRjZl9yZXN1bHQgKnJlcylcXG4re1xcbitcXHRzdHJ1Y3QgdGNmX2ZyZXIgKmYgPSB0b19mcmVyKGEpO1xcbitcXHRpbnQgcmV0dmFsO1xcbitcXG4rXFx0dGNmX2xhc3R1c2VfdXBkYXRlKFxcdTAwMjZmLVxcdTAwM2V0Y2ZfdG0pO1xcbitcXHR0Y2ZfYWN0aW9uX3VwZGF0ZV9ic3RhdHMoXFx1MDAyNmYtXFx1MDAzZWNvbW1vbiwgc2tiKTtcXG4rXFx0cmV0dmFsID0gUkVBRF9PTkNFKGYtXFx1MDAzZXRjZl9hY3Rpb24pO1xcbitcXG4rXFx0aWYgKGYtXFx1MDAzZWZ1bmMgPT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7XFxuK1xcdFxcdHN0cnVjdCBmcmVyX3NlcWdlbiAqc2cgPSBcXHUwMDI2Zi1cXHUwMDNlc2VxZ2VuO1xcbitcXHRcXHR1MTYgc2VxO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZzZy1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHNlcSA9ICh1MTYpc2ctXFx1MDAzZWdlbl9zZXFfbnVtO1xcbitcXHRcXHRpZiAoKytzZy1cXHUwMDNlZ2VuX3NlcV9udW0gXFx1MDAzZT0gc2ctXFx1MDAzZXNlcV9zcGFjZSlcXG4rXFx0XFx0XFx0c2ctXFx1MDAzZWdlbl9zZXFfbnVtID0gMDtcXG4rXFx0XFx0c2ctXFx1MDAzZXN0YXRzX3BrdHMrKztcXG4rXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnNnLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdFxcdGlmIChmcmVyX3J0YWdfcHVzaChza2IsIHNlcSkgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdHRjZl9hY3Rpb25faW5jX2Ryb3BfcXN0YXRzKFxcdTAwMjZmLVxcdTAwM2Vjb21tb24pO1xcbitcXHRcXHRcXHRyZXR1cm4gVENfQUNUX1NIT1Q7XFxuK1xcdFxcdH1cXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0c3RydWN0IGZyZXJfcmN2eSAqcmN2eSA9IFxcdTAwMjZmLVxcdTAwM2VyY3Z5O1xcbitcXHRcXHRib29sIHBhc3M7XFxuK1xcdFxcdGludCBzZXE7XFxuK1xcbitcXHRcXHRpZiAoZnJlcl9ydGFnX2RlY29kZShza2IsIFxcdTAwMjZzZXEpIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHR0Y2ZfYWN0aW9uX2luY19kcm9wX3FzdGF0cyhcXHUwMDI2Zi1cXHUwMDNlY29tbW9uKTtcXG4rXFx0XFx0XFx0cmV0dXJuIFRDX0FDVF9TSE9UO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRzcGluX2xvY2soXFx1MDAyNnJjdnktXFx1MDAzZWxvY2spO1xcbitcXHRcXHRpZiAocmN2eS1cXHUwMDNlYWxnID09IFRDQV9GUkVSX1JDVllfVkVDVE9SX0FMRylcXG4rXFx0XFx0XFx0cGFzcyA9IGZyZXJfdmVjdG9yX2FsZyhyY3Z5LCBzZXEsIGYtXFx1MDAzZWluZGl2aWR1YWwpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHBhc3MgPSBmcmVyX21hdGNoX2FsZyhyY3Z5LCBzZXEsIGYtXFx1MDAzZWluZGl2aWR1YWwpO1xcbitcXG4rXFx0XFx0aWYgKHBhc3MpIHtcXG4rXFx0XFx0XFx0cmN2eS1cXHUwMDNlc3RhdHNfcGFzc2VkX3BrdHMrKztcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnJjdnktXFx1MDAzZWxvY2spO1xcbitcXHRcXHRcXHRpZiAoZi1cXHUwMDNldGFnX3BvcClcXG4rXFx0XFx0XFx0XFx0ZnJlcl9ydGFnX3BvcChza2IpO1xcbitcXHRcXHRcXHRyZXR1cm4gcmV0dmFsO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRyY3Z5LVxcdTAwM2VzdGF0c19kaXNjYXJkZWRfcGt0cysrO1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2cmN2eS1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHJldHVybiBUQ19BQ1RfU0hPVDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldHZhbDtcXG4rfVxcbitcXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXFxuKy8qIER1bXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXFxuK1xcbitzdGF0aWMgaW50IHRjZl9mcmVyX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4rXFx0XFx0XFx0IGludCBiaW5kLCBpbnQgcmVmKVxcbit7XFxuK1xcdHVuc2lnbmVkIGNoYXIgKmIgPSBza2JfdGFpbF9wb2ludGVyKHNrYik7XFxuK1xcdHN0cnVjdCB0Y2ZfZnJlciAqZiA9IHRvX2ZyZXIoYSk7XFxuK1xcdHN0cnVjdCB0Y19mcmVyIG9wdCA9IHtcXG4rXFx0XFx0LmluZGV4ICAgPSBmLVxcdTAwM2V0Y2ZfaW5kZXgsXFxuK1xcdFxcdC5yZWZjbnQgID0gcmVmY291bnRfcmVhZChcXHUwMDI2Zi1cXHUwMDNldGNmX3JlZmNudCkgLSByZWYsXFxuK1xcdFxcdC5iaW5kY250ID0gYXRvbWljX3JlYWQoXFx1MDAyNmYtXFx1MDAzZXRjZl9iaW5kY250KSAtIGJpbmQsXFxuK1xcdH07XFxuK1xcdHN0cnVjdCB0Y2ZfdCB0O1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZmLVxcdTAwM2V0Y2ZfbG9jayk7XFxuK1xcdG9wdC5hY3Rpb24gPSBmLVxcdTAwM2V0Y2ZfYWN0aW9uO1xcbitcXG4rXFx0aWYgKG5sYV9wdXQoc2tiLCBUQ0FfRlJFUl9QQVJNUywgc2l6ZW9mKG9wdCksIFxcdTAwMjZvcHQpKVxcbitcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4rXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBUQ0FfRlJFUl9GVU5DLCBmLVxcdTAwM2VmdW5jKSlcXG4rXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdGlmIChubGFfcHV0X3U4KHNrYiwgVENBX0ZSRVJfVEFHX1RZUEUsIGYtXFx1MDAzZXRhZ190eXBlKSlcXG4rXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdGlmIChmLVxcdTAwM2V0YWdfcG9wIFxcdTAwMjZcXHUwMDI2IG5sYV9wdXRfZmxhZyhza2IsIFRDQV9GUkVSX1JDVllfVEFHX1BPUCkpXFxuK1xcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXG4rXFx0aWYgKGYtXFx1MDAzZWZ1bmMgPT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7XFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2Zi1cXHUwMDNlc2VxZ2VuLmxvY2spO1xcbitcXHRcXHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19TRVFHRU5fUEtUUyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgZi1cXHUwMDNlc2VxZ2VuLnN0YXRzX3BrdHMsIFRDQV9GUkVSX1BBRCkpIHtcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmYtXFx1MDAzZXNlcWdlbi5sb2NrKTtcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdFxcdH1cXG4rXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmYtXFx1MDAzZXNlcWdlbi5sb2NrKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0dTY0IHRhZ2xlc3MsIG9vbywgcm9ndWUsIGxvc3QsIHJlc2V0cywgcGFzc2VkLCBkaXNjYXJkZWQ7XFxuK1xcdFxcdHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkgPSBcXHUwMDI2Zi1cXHUwMDNlcmN2eTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2cmN2eS1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdHRhZ2xlc3MgICAgPSByY3Z5LVxcdTAwM2VzdGF0c190YWdsZXNzX3BrdHM7XFxuK1xcdFxcdG9vbyAgICAgICAgPSByY3Z5LVxcdTAwM2VzdGF0c19vdXRfb2Zfb3JkZXJfcGt0cztcXG4rXFx0XFx0cm9ndWUgICAgICA9IHJjdnktXFx1MDAzZXN0YXRzX3JvZ3VlX3BrdHM7XFxuK1xcdFxcdGxvc3QgICAgICAgPSByY3Z5LVxcdTAwM2VzdGF0c19sb3N0X3BrdHM7XFxuK1xcdFxcdHJlc2V0cyAgICAgPSByY3Z5LVxcdTAwM2VzdGF0c19yZXNldHM7XFxuK1xcdFxcdHBhc3NlZCAgICAgPSByY3Z5LVxcdTAwM2VzdGF0c19wYXNzZWRfcGt0cztcXG4rXFx0XFx0ZGlzY2FyZGVkICA9IHJjdnktXFx1MDAzZXN0YXRzX2Rpc2NhcmRlZF9wa3RzO1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2cmN2eS1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRpZiAoZi1cXHUwMDNlaW5kaXZpZHVhbCBcXHUwMDI2XFx1MDAyNiBubGFfcHV0X2ZsYWcoc2tiLCBUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUwpKVxcbitcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4rXFx0XFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBUQ0FfRlJFUl9SQ1ZZX0FMRywgcmN2eS1cXHUwMDNlYWxnKSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdFxcdGlmIChubGFfcHV0X3U4KHNrYiwgVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTiwgcmN2eS1cXHUwMDNlaGlzdG9yeV9sZW4pKVxcbitcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4rXFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDLCByY3Z5LVxcdTAwM2VyZXNldF9tc2VjKSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdFxcdGlmIChyY3Z5LVxcdTAwM2V0YWtlX25vX3NlcSBcXHUwMDI2XFx1MDAyNiBubGFfcHV0X2ZsYWcoc2tiLCBUQ0FfRlJFUl9SQ1ZZX1RBS0VfTk9fU0VRKSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdFxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX1RBR0xFU1NfUEtUUyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgdGFnbGVzcywgVENBX0ZSRVJfUEFEKSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdFxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX09VVF9PRl9PUkRFUl9QS1RTLFxcbitcXHRcXHRcXHRcXHQgICAgICBvb28sIFRDQV9GUkVSX1BBRCkpXFxuK1xcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXHRcXHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19ST0dVRV9QS1RTLFxcbitcXHRcXHRcXHRcXHQgICAgICByb2d1ZSwgVENBX0ZSRVJfUEFEKSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdFxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX0xPU1RfUEtUUyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgbG9zdCwgVENBX0ZSRVJfUEFEKSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdFxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX1JFU0VUUyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgcmVzZXRzLCBUQ0FfRlJFUl9QQUQpKVxcbitcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4rXFx0XFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfUEFTU0VEX1BLVFMsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHBhc3NlZCwgVENBX0ZSRVJfUEFEKSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuK1xcdFxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX0RJU0NBUkRFRF9QS1RTLFxcbitcXHRcXHRcXHRcXHQgICAgICBkaXNjYXJkZWQsIFRDQV9GUkVSX1BBRCkpXFxuK1xcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXHR9XFxuK1xcbitcXHR0Y2ZfdG1fZHVtcChcXHUwMDI2dCwgXFx1MDAyNmYtXFx1MDAzZXRjZl90bSk7XFxuK1xcdGlmIChubGFfcHV0XzY0Yml0KHNrYiwgVENBX0ZSRVJfVE0sIHNpemVvZih0KSwgXFx1MDAyNnQsIFRDQV9GUkVSX1BBRCkpXFxuK1xcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmYtXFx1MDAzZXRjZl9sb2NrKTtcXG4rXFx0cmV0dXJuIHNrYi1cXHUwMDNlbGVuO1xcbitcXG4rbmxhX3B1dF9mYWlsdXJlOlxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Zi1cXHUwMDNldGNmX2xvY2spO1xcbitcXHRubG1zZ190cmltKHNrYiwgYik7XFxuK1xcdHJldHVybiAtMTtcXG4rfVxcbitcXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXFxuKy8qIENsZWFudXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXFxuK1xcbitzdGF0aWMgdm9pZCB0Y2ZfZnJlcl9jbGVhbnVwKHN0cnVjdCB0Y19hY3Rpb24gKmEpXFxuK3tcXG4rXFx0c3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhKTtcXG4rXFxuK1xcdGlmIChmLVxcdTAwM2VmdW5jID09IFRDQV9GUkVSX0ZVTkNfUkVDT1ZFUilcXG4rXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNmYtXFx1MDAzZXJjdnkuaHJ0aW1lcik7XFxuK31cXG4rXFxuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xcbisvKiBXYWxrZXIgLyBzZWFyY2ggLyBzdGF0cyAvIGZpbGwtc2l6ZSAvIG9mZmxvYWQgICAgICAgICAgICAgICAgICAgICAgKi9cXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXFxuK1xcbitzdGF0aWMgaW50IHRjZl9mcmVyX3dhbGtlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuK1xcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYiwgaW50IHR5cGUsXFxuK1xcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb25fb3BzICpvcHMsXFxuK1xcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4re1xcbitcXHRzdHJ1Y3QgdGNfYWN0aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGFjdF9mcmVyX29wcy5uZXRfaWQpO1xcbitcXG4rXFx0cmV0dXJuIHRjZl9nZW5lcmljX3dhbGtlcih0biwgc2tiLCBjYiwgdHlwZSwgb3BzLCBleHRhY2spO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0Y2ZfZnJlcl9zdGF0c191cGRhdGUoc3RydWN0IHRjX2FjdGlvbiAqYSwgdTY0IGJ5dGVzLCB1NjQgcGFja2V0cyxcXG4rXFx0XFx0XFx0XFx0ICB1NjQgZHJvcHMsIHU2NCBsYXN0dXNlLCBib29sIGh3KVxcbit7XFxuK1xcdHN0cnVjdCB0Y2ZfZnJlciAqZiA9IHRvX2ZyZXIoYSk7XFxuK1xcdHN0cnVjdCB0Y2ZfdCAqdG0gPSBcXHUwMDI2Zi1cXHUwMDNldGNmX3RtO1xcbitcXG4rXFx0dGNmX2FjdGlvbl91cGRhdGVfc3RhdHMoYSwgYnl0ZXMsIHBhY2tldHMsIGRyb3BzLCBodyk7XFxuK1xcdHRtLVxcdTAwM2VsYXN0dXNlID0gbWF4X3QodTY0LCB0bS1cXHUwMDNlbGFzdHVzZSwgbGFzdHVzZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBzaXplX3QgdGNmX2ZyZXJfZ2V0X2ZpbGxfc2l6ZShjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphY3QpXFxuK3tcXG4rXFx0cmV0dXJuIG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgdGNfZnJlcikpIC8qIFRDQV9GUkVSX1BBUk1TICovXFxuK1xcdFxcdCsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHU4KSkgLyogVENBX0ZSRVJfRlVOQyAqL1xcbitcXHRcXHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIFRDQV9GUkVSX1RBR19UWVBFICovXFxuK1xcdFxcdCsgbmxhX3RvdGFsX3NpemUoMCkgLyogVENBX0ZSRVJfUkNWWV9UQUdfUE9QIChmbGFnKSAqL1xcbitcXHRcXHQrIG5sYV90b3RhbF9zaXplKDApIC8qIFRDQV9GUkVSX1JDVllfSU5ESVZJRFVBTCAoZmxhZykgKi9cXG4rXFx0XFx0KyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBUQ0FfRlJFUl9SQ1ZZX0FMRyAqL1xcbitcXHRcXHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIFRDQV9GUkVSX1JDVllfSElTVE9SWV9MRU4gKi9cXG4rXFx0XFx0KyBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgLyogVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDICovXFxuK1xcdFxcdCsgbmxhX3RvdGFsX3NpemUoMCkgLyogVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUSAoZmxhZykgKi9cXG4rXFx0XFx0KyBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2YodTY0KSkgLyogVENBX0ZSRVJfU1RBVFNfVEFHTEVTU19QS1RTICovXFxuK1xcdFxcdCsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX09VVF9PRl9PUkRFUl9QS1RTICovXFxuK1xcdFxcdCsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX1JPR1VFX1BLVFMgKi9cXG4rXFx0XFx0KyBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2YodTY0KSkgLyogVENBX0ZSRVJfU1RBVFNfTE9TVF9QS1RTICovXFxuK1xcdFxcdCsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX1JFU0VUUyAqL1xcbitcXHRcXHQrIG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19QQVNTRURfUEtUUyAqL1xcbitcXHRcXHQrIG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19ESVNDQVJERURfUEtUUyAqL1xcbitcXHRcXHQrIG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZihzdHJ1Y3QgdGNmX3QpKTsgLyogVENBX0ZSRVJfVE0gKi9cXG4rfVxcbitcXG4rc3RhdGljIGludCB0Y2ZfZnJlcl9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHUzMiAqaW5kZXhfaW5jLCBib29sIGJpbmQsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4re1xcbitcXHRpZiAoYmluZCkge1xcbitcXHRcXHRzdHJ1Y3QgZmxvd19hY3Rpb25fZW50cnkgKmVudHJ5ID0gZW50cnlfZGF0YTtcXG4rXFx0XFx0c3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhY3QpO1xcbitcXG4rXFx0XFx0ZW50cnktXFx1MDAzZWlkICAgICAgICAgICAgPSBGTE9XX0FDVElPTl9GUkVSO1xcbitcXHRcXHRlbnRyeS1cXHUwMDNlZnJlci5mdW5jICAgICA9IGYtXFx1MDAzZWZ1bmM7XFxuK1xcdFxcdGVudHJ5LVxcdTAwM2VmcmVyLnRhZ190eXBlID0gZi1cXHUwMDNldGFnX3R5cGU7XFxuK1xcdFxcdGVudHJ5LVxcdTAwM2VmcmVyLnRhZ19wb3AgID0gZi1cXHUwMDNldGFnX3BvcDtcXG4rXFxuK1xcdFxcdGlmIChmLVxcdTAwM2VmdW5jICE9IFRDQV9GUkVSX0ZVTkNfUFVTSCkge1xcbitcXHRcXHRcXHRlbnRyeS1cXHUwMDNlZnJlci5pbmRpdmlkdWFsICAgICAgID0gZi1cXHUwMDNlaW5kaXZpZHVhbDtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWZyZXIucmN2eV9hbGcgICAgICAgICA9IGYtXFx1MDAzZXJjdnkuYWxnO1xcbitcXHRcXHRcXHRlbnRyeS1cXHUwMDNlZnJlci5yY3Z5X2hpc3RvcnlfbGVuID0gZi1cXHUwMDNlcmN2eS5oaXN0b3J5X2xlbjtcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWZyZXIucmN2eV9yZXNldF9tc2VjICA9IGYtXFx1MDAzZXJjdnkucmVzZXRfbXNlYztcXG4rXFx0XFx0XFx0ZW50cnktXFx1MDAzZWZyZXIudGFrZV9ub19zZXEgICAgICA9IGYtXFx1MDAzZXJjdnkudGFrZV9ub19zZXE7XFxuK1xcdFxcdH1cXG4rXFx0XFx0KmluZGV4X2luYyA9IDE7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHN0cnVjdCBmbG93X29mZmxvYWRfYWN0aW9uICpmbF9hY3Rpb24gPSBlbnRyeV9kYXRhO1xcbitcXG4rXFx0XFx0ZmxfYWN0aW9uLVxcdTAwM2VpZCA9IEZMT1dfQUNUSU9OX0ZSRVI7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xcbisvKiBNb2R1bGUgZ2x1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXFxuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xcbitcXG4rc3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9mcmVyX29wcyA9IHtcXG4rXFx0LmtpbmRcXHRcXHQgICAgPSBcXFwiZnJlclxcXCIsXFxuK1xcdC5pZFxcdFxcdCAgICA9IFRDQV9JRF9GUkVSLFxcbitcXHQub3duZXJcXHRcXHQgICAgPSBUSElTX01PRFVMRSxcXG4rXFx0LmFjdFxcdFxcdCAgICA9IHRjZl9mcmVyX2FjdCxcXG4rXFx0LmluaXRcXHRcXHQgICAgPSB0Y2ZfZnJlcl9pbml0LFxcbitcXHQuY2xlYW51cFxcdCAgICA9IHRjZl9mcmVyX2NsZWFudXAsXFxuK1xcdC5kdW1wXFx0XFx0ICAgID0gdGNmX2ZyZXJfZHVtcCxcXG4rXFx0LndhbGtcXHRcXHQgICAgPSB0Y2ZfZnJlcl93YWxrZXIsXFxuK1xcdC5zdGF0c191cGRhdGVcXHQgICAgPSB0Y2ZfZnJlcl9zdGF0c191cGRhdGUsXFxuK1xcdC5nZXRfZmlsbF9zaXplXFx0ICAgID0gdGNmX2ZyZXJfZ2V0X2ZpbGxfc2l6ZSxcXG4rXFx0Lm9mZmxvYWRfYWN0X3NldHVwICA9IHRjZl9mcmVyX29mZmxvYWRfYWN0X3NldHVwLFxcbitcXHQuc2l6ZVxcdFxcdCAgICA9IHNpemVvZihzdHJ1Y3QgdGNmX2ZyZXIpLFxcbit9O1xcbitcXG4rc3RhdGljIF9fbmV0X2luaXQgaW50IGZyZXJfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbit7XFxuK1xcdHN0cnVjdCB0Y19hY3Rpb25fbmV0ICp0biA9IG5ldF9nZW5lcmljKG5ldCwgYWN0X2ZyZXJfb3BzLm5ldF9pZCk7XFxuK1xcbitcXHRyZXR1cm4gdGNfYWN0aW9uX25ldF9pbml0KG5ldCwgdG4sIFxcdTAwMjZhY3RfZnJlcl9vcHMpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBfX25ldF9leGl0IGZyZXJfZXhpdF9uZXQoc3RydWN0IGxpc3RfaGVhZCAqbmV0X2xpc3QpXFxuK3tcXG4rXFx0dGNfYWN0aW9uX25ldF9leGl0KG5ldF9saXN0LCBhY3RfZnJlcl9vcHMubmV0X2lkKTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBmcmVyX25ldF9vcHMgPSB7XFxuK1xcdC5pbml0ICAgICAgID0gZnJlcl9pbml0X25ldCxcXG4rXFx0LmV4aXRfYmF0Y2ggPSBmcmVyX2V4aXRfbmV0LFxcbitcXHQuaWQgICAgICAgICA9IFxcdTAwMjZhY3RfZnJlcl9vcHMubmV0X2lkLFxcbitcXHQuc2l6ZSAgICAgICA9IHNpemVvZihzdHJ1Y3QgdGNfYWN0aW9uX25ldCksXFxuK307XFxuK1xcbitzdGF0aWMgaW50IF9faW5pdCBmcmVyX2luaXRfbW9kdWxlKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIHRjZl9yZWdpc3Rlcl9hY3Rpb24oXFx1MDAyNmFjdF9mcmVyX29wcywgXFx1MDAyNmZyZXJfbmV0X29wcyk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIF9fZXhpdCBmcmVyX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuK3tcXG4rXFx0dGNmX3VucmVnaXN0ZXJfYWN0aW9uKFxcdTAwMjZhY3RfZnJlcl9vcHMsIFxcdTAwMjZmcmVyX25ldF9vcHMpO1xcbit9XFxuK1xcbittb2R1bGVfaW5pdChmcmVyX2luaXRfbW9kdWxlKTtcXG4rbW9kdWxlX2V4aXQoZnJlcl9jbGVhbnVwX21vZHVsZSk7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJJRUVFIDgwMi4xQ0IgRlJFUiB0YyBhY3Rpb25cXFwiKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuaW5kZXggNmExOTBhNTI1YTM5MTcuLjY3Yjg5NjYxMWYwODY1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxcbkBAIC0zOCw2ICszOCw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcXFxcbiBcXHRmaWJfcnVsZV90ZXN0cy5zaCBcXFxcXFxuIFxcdGZpYl90ZXN0cy5zaCBcXFxcXFxuIFxcdGZpbl9hY2tfbGF0LnNoIFxcXFxcXG4rXFx0ZnJlcl90ZXN0LnNoIFxcXFxcXG4gXFx0ZnFfYmFuZF9wa3RsaW1pdC5zaCBcXFxcXFxuIFxcdGdyZV9nc28uc2ggXFxcXFxcbiBcXHRncmVfaXB2Nl9sbGFkZHIuc2ggXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZnJlcl90ZXN0LnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZyZXJfdGVzdC5zaFxcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmVjZDg4OTUyZjQ5NTgxXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mcmVyX3Rlc3Quc2hcXG5AQCAtMCwwICsxLDEwMTMgQEBcXG4rIyEvYmluL2Jhc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjIENvcHlyaWdodCAyMDI2IE5YUFxcbisjXFxuKyMgZnJlcl90ZXN0LnNoIC0gSUVFRSA4MDIuMUNCIEZSRVIgdGMgYWN0aW9uIGtzZWxmdGVzdFxcbisjXFxuKyMgVG9wb2xvZ3kgZm9yIHRlc3RzIDEtNDpcXG4rI1xcbisjICAgbnNfdGFsa2VyICBib25kMCAodmV0aF9hMCArIHZldGhfYjApICBcXHUwMDNjLS0tXFx1MDAzZSAgYm9uZDEgKHZldGhfYTEgKyB2ZXRoX2IxKSAgbnNfbGlzdGVuZXJcXG4rI1xcbisjICAgSVBfU1JDIGFzc2lnbmVkIHRvIGJvbmQwOyAgSVBfRFNUIGFzc2lnbmVkIHRvIGJvbmQxXFxuKyNcXG4rIyAgIGJvbmQgbW9kZTogYmFsYW5jZS1yciAocm91bmQtcm9iaW4pLCBzbyBmcmFtZXMgYXJlIGRpc3RyaWJ1dGVkIGFjcm9zc1xcbisjICAgICAgICAgICAgICBib3RoIHNsYXZlcy4gIEZSRVIgcHVzaCBpcyBjb25maWd1cmVkIG9uIGJvdGggdmV0aF9hMCBhbmRcXG4rIyAgICAgICAgICAgICAgdmV0aF9iMCBlZ3Jlc3Mgd2l0aCBjcm9zcy1taXJyb3Igc28gZXZlcnkgZnJhbWUgc2VudCBieSBlaXRoZXJcXG4rIyAgICAgICAgICAgICAgc2xhdmUgY2FycmllcyBhbiBSLVRBRyBhbmQgYSBtaXJyb3JlZCBjb3B5IHJlYWNoZXMgdGhlIHBlZXIuXFxuKyMgICBGUkVSIHJlY292ZXI6IHZldGhfYTEvdmV0aF9iMSBpbmdyZXNzLCBzaGFyZWQgb3IgaW5kaXZpZHVhbCByZWNvdmVyIHBlciB0ZXN0XFxuKyNcXG4rIyAgIFBpbmcgcnVucyBmcm9tIGJvbmQwIHRvIGJvbmQxOyB0Y3BkdW1wIGNhcHR1cmVzIG9uIGJvbmQxIChvciBvbiBpbmRpdmlkdWFsXFxuKyMgICBzbGF2ZSBpbnRlcmZhY2VzIGZvciB0ZXN0cyB3aGVyZSBib3RoIGNvcGllcyBtdXN0IGJlIG9ic2VydmFibGUpLlxcbisjXFxuKyMgVGVzdCA1OiBzaW1wbGUgcG9pbnQtdG8tcG9pbnQsIHNlbGYtY29udGFpbmVkIHRvcG9sb2d5IChubyBib25kKS5cXG4rIyBUZXN0IDY6IHJlbGF5IHN5c3RlbSwgc2VsZi1jb250YWluZWQgdG9wb2xvZ3kuXFxuKyNcXG4rIyBBbGwgbmFtZXNwYWNlcywgdmV0aCBwYWlycywgYm9uZCBpbnRlcmZhY2VzLCB0YyBydWxlcyBhbmQgYWRkcmVzc2VzIGFyZVxcbisjIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCB3aXRoaW4gdGhpcyBzY3JpcHQuICBFeHRlcm5hbCBkZXBlbmRlbmNpZXM6XFxuKyMgICAtIGtlcm5lbCB3aXRoIENPTkZJR19ORVRfQUNUX0ZSRVIgYW5kIENPTkZJR19CT05ESU5HXFxuKyMgICAtIGlwcm91dGUyIHRjIHdpdGggZnJlciBhY3Rpb24gc3VwcG9ydFxcbisjICAgLSB0Y3BkdW1wLCBwaW5nXFxuKyMgICAtIHJvb3QgcHJpdmlsZWdlc1xcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMga3NlbGZ0ZXN0IGxpYnJhcnk6IFRBUCBvdXRwdXQgKyBleGl0LWNvZGUgY29uc3RhbnRzXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitrc2Z0X2xpYj1cXFwiJHtLU0ZUX0xJQjotJChkaXJuYW1lIFxcXCIkMFxcXCIpLy4uL2tzZWxmdGVzdC9saWIuc2h9XFxcIlxcbitpZiBbIC1mIFxcXCIka3NmdF9saWJcXFwiIF07IHRoZW5cXG4rXFx0IyBzaGVsbGNoZWNrIHNvdXJjZT0vZGV2L251bGxcXG4rXFx0LiBcXFwiJGtzZnRfbGliXFxcIlxcbitlbHNlXFxuK1xcdCMgTWluaW1hbCBmYWxsYmFjayB3aGVuIHJ1biBvdXRzaWRlIHRoZSBrc2VsZnRlc3QgdHJlZVxcbitcXHRLU0ZUX1BBU1M9MFxcbitcXHRLU0ZUX0ZBSUw9MVxcbitcXHRLU0ZUX1NLSVA9NFxcbitcXHRfa3NmdF9jb3VudD0wXFxuK1xcdF9rc2Z0X3Bhc3M9MFxcbitcXHRfa3NmdF9mYWlsPTBcXG4rXFx0X2tzZnRfc2tpcD0wXFxuK1xcbitcXHRrc2Z0X3ByaW50X2hlYWRlcigpIHsgZWNobyBcXFwiVEFQIHZlcnNpb24gMTNcXFwiOyB9XFxuK1xcdGtzZnRfc2V0X3BsYW4oKSAgICAgeyBlY2hvIFxcXCIxLi4kMVxcXCI7IH1cXG4rXFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCkge1xcbitcXHRcXHRfa3NmdF9jb3VudD0kKChfa3NmdF9jb3VudCArIDEpKTsgX2tzZnRfcGFzcz0kKChfa3NmdF9wYXNzICsgMSkpXFxuK1xcdFxcdGVjaG8gXFxcIm9rICRfa3NmdF9jb3VudCAtICQqXFxcIlxcbitcXHR9XFxuK1xcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbCgpIHtcXG4rXFx0XFx0X2tzZnRfY291bnQ9JCgoX2tzZnRfY291bnQgKyAxKSk7IF9rc2Z0X2ZhaWw9JCgoX2tzZnRfZmFpbCArIDEpKVxcbitcXHRcXHRlY2hvIFxcXCJub3Qgb2sgJF9rc2Z0X2NvdW50IC0gJCpcXFwiXFxuK1xcdH1cXG4rXFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKCkge1xcbitcXHRcXHRfa3NmdF9jb3VudD0kKChfa3NmdF9jb3VudCArIDEpKTsgX2tzZnRfc2tpcD0kKChfa3NmdF9za2lwICsgMSkpXFxuK1xcdFxcdGVjaG8gXFxcIm9rICRfa3NmdF9jb3VudCAtICQqICMgU0tJUFxcXCJcXG4rXFx0fVxcbitcXHRrc2Z0X3ByaW50X2NudHMoKSB7XFxuK1xcdFxcdGVjaG8gXFxcIiMgVG90YWxzOiBwYXNzPSRfa3NmdF9wYXNzIGZhaWw9JF9rc2Z0X2ZhaWwgc2tpcD0kX2tzZnRfc2tpcFxcXCJcXG4rXFx0fVxcbitcXHRrc2Z0X2V4aXRfcGFzcygpICAgICB7IGV4aXQgJEtTRlRfUEFTUzsgfVxcbitcXHRrc2Z0X2V4aXRfZmFpbCgpICAgICB7IGV4aXQgJEtTRlRfRkFJTDsgfVxcbitcXHRrc2Z0X2V4aXRfZmFpbF9tc2coKSB7IGVjaG8gXFxcIiMgRkFUQUw6ICQqXFxcIiBcXHUwMDNlXFx1MDAyNjI7IGV4aXQgJEtTRlRfRkFJTDsgfVxcbitmaVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgQ29uZmlndXJhdGlvbiAob3ZlcnJpZGUgdmlhIGVudmlyb25tZW50KVxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rVEM9XFxcIiR7VEM6LXRjfVxcXCJcXG4rUElORz1cXFwiJHtQSU5HOi1waW5nfVxcXCJcXG4rVENQRFVNUD1cXFwiJHtUQ1BEVU1QOi10Y3BkdW1wfVxcXCJcXG4rUElOR19DT1VOVD1cXFwiJHtQSU5HX0NPVU5UOi01fVxcXCJcXG4rUElOR19USU1FT1VUPVxcXCIke1BJTkdfVElNRU9VVDotMn1cXFwiXFxuK1NLSVBfTU9EUFJPQkU9XFxcIiR7U0tJUF9NT0RQUk9CRTotMH1cXFwiXFxuK1xcbisjIEJvbmQgdG9wb2xvZ3kgaW50ZXJmYWNlcyAodGVzdHMgMS00KVxcbityZWFkb25seSBWRVRIX0EwPVxcXCJmcmVyX2EwXFxcIlxcbityZWFkb25seSBWRVRIX0ExPVxcXCJmcmVyX2ExXFxcIlxcbityZWFkb25seSBWRVRIX0IwPVxcXCJmcmVyX2IwXFxcIlxcbityZWFkb25seSBWRVRIX0IxPVxcXCJmcmVyX2IxXFxcIlxcbityZWFkb25seSBCT05EMD1cXFwiZnJlcl9ib25kMFxcXCJcXG4rcmVhZG9ubHkgQk9ORDE9XFxcImZyZXJfYm9uZDFcXFwiXFxuK1xcbityZWFkb25seSBOU19UQUxLRVI9XFxcImZyZXJfbnNfdGFsa2VyXFxcIlxcbityZWFkb25seSBOU19MSVNURU5FUj1cXFwiZnJlcl9uc19saXN0ZW5lclxcXCJcXG4rXFxuK3JlYWRvbmx5IElQX1NSQz1cXFwiMTAuMC4wLjFcXFwiXFxuK3JlYWRvbmx5IElQX0RTVD1cXFwiMTAuMC4wLjJcXFwiXFxuK1xcbisjIFBvaW50LXRvLXBvaW50IHRvcG9sb2d5IGludGVyZmFjZXMgKHRlc3QgNSlcXG4rcmVhZG9ubHkgUDJQX05TX1NSQz1cXFwiZnJlcl9wMnBfc3JjXFxcIlxcbityZWFkb25seSBQMlBfTlNfRFNUPVxcXCJmcmVyX3AycF9kc3RcXFwiXFxuK3JlYWRvbmx5IFAyUF9WRVRIX0EwPVxcXCJmcmVyX3AycF9hMFxcXCJcXG4rcmVhZG9ubHkgUDJQX1ZFVEhfQTE9XFxcImZyZXJfcDJwX2ExXFxcIlxcbityZWFkb25seSBJUF9QMlBfU1JDPVxcXCIxMC4wLjEuMVxcXCJcXG4rcmVhZG9ubHkgSVBfUDJQX0RTVD1cXFwiMTAuMC4xLjJcXFwiXFxuK1xcbisjIFJlbGF5IHRvcG9sb2d5IGludGVyZmFjZXMgKHRlc3QgNilcXG4rI1xcbisjICAgbnNfdGFsa2VyICh0YWxrZXJfZXRoLjEwMCkgLS0gdGFsa2VyX2V0aC9icjBfdXBsaW5rIC0tIGJyaWRnZTAgKGJyX3IwKVxcbisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0gYnIwX3N3cDAvYnIxX3N3cDAgLS1cXFxcXFxuKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFwtLSBicjBfc3dwMS9icjFfc3dwMSAtLSstLVxcXFxcXG4rI1xcdFxcdGJyaWRnZTEgKGJyX3IxKSAtLSBicjFfZG93bmxpbmsvbGlzdGVuZXJfZXRoIC0tIG5zX2xpc3RlbmVyXFxuKyNcXG4rIyBicmlkZ2UwIGFjdHMgYXMgc2VxdWVuY2UgZ2VuZXJhdG9yIChmcmVyIHB1c2ggKyByZXBsaWNhdGUgdG8gYm90aCBwYXRocykuXFxuKyMgYnJpZGdlMSBhY3RzIGFzIGVsaW1pbmF0b3IgKGZyZXIgcmVjb3Zlciwgc2hhcmVkLCB0YWctcG9wKS5cXG4rcmVhZG9ubHkgUl9OU19UQUxLRVI9XFxcImZyZXJfcl90YWxrZXJcXFwiXFxuK3JlYWRvbmx5IFJfTlNfQlJJREdFMD1cXFwiZnJlcl9yX2JyaWRnZTBcXFwiXFxuK3JlYWRvbmx5IFJfTlNfQlJJREdFMT1cXFwiZnJlcl9yX2JyaWRnZTFcXFwiXFxuK3JlYWRvbmx5IFJfTlNfTElTVEVORVI9XFxcImZyZXJfcl9saXN0ZW5lclxcXCJcXG4rcmVhZG9ubHkgUl9UQUxLRVJfRVRIPVxcXCJyX3Rsa19ldGhcXFwiICAgICAgICMgdGFsa2VyLXNpZGUgcGh5c2ljYWwgcG9ydFxcbityZWFkb25seSBSX0JSMF9VUExJTks9XFxcInJfYnIwX3VwbGlua1xcXCIgICAgIyBicmlkZ2UwIHVwbGluayBmYWNpbmcgdGFsa2VyXFxuK3JlYWRvbmx5IFJfQlIwX1NXUDA9XFxcInJfYnIwX3N3cDBcXFwiICAgICAgICAjIGJyaWRnZTAgcmVkdW5kYW50IHBhdGggcG9ydCAwXFxuK3JlYWRvbmx5IFJfQlIwX1NXUDE9XFxcInJfYnIwX3N3cDFcXFwiICAgICAgICAjIGJyaWRnZTAgcmVkdW5kYW50IHBhdGggcG9ydCAxXFxuK3JlYWRvbmx5IFJfQlIxX1NXUDA9XFxcInJfYnIxX3N3cDBcXFwiICAgICAgICAjIGJyaWRnZTEgcmVkdW5kYW50IHBhdGggcG9ydCAwXFxuK3JlYWRvbmx5IFJfQlIxX1NXUDE9XFxcInJfYnIxX3N3cDFcXFwiICAgICAgICAjIGJyaWRnZTEgcmVkdW5kYW50IHBhdGggcG9ydCAxXFxuK3JlYWRvbmx5IFJfQlIxX0RPV05MSU5LPVxcXCJyX2JyMV9kd25sbmtcXFwiICAjIGJyaWRnZTEgZG93bmxpbmsgZmFjaW5nIGxpc3RlbmVyXFxuK3JlYWRvbmx5IFJfTElTVEVORVJfRVRIPVxcXCJyX2xzdF9ldGhcXFwiICAgICAjIGxpc3RlbmVyLXNpZGUgcGh5c2ljYWwgcG9ydFxcbityZWFkb25seSBSX0JSMD1cXFwiYnJfcjBcXFwiXFxuK3JlYWRvbmx5IFJfQlIxPVxcXCJicl9yMVxcXCJcXG4rcmVhZG9ubHkgUl9WTEFOPTEwMFxcbityZWFkb25seSBSX0lQX1RBTEtFUj1cXFwiMTAuMS4wLjFcXFwiXFxuK3JlYWRvbmx5IFJfSVBfTElTVEVORVI9XFxcIjEwLjEuMC4yXFxcIlxcbitcXG4rIyBGUkVSIGFjdGlvbiBpbmRleCBjb25zdGFudHNcXG4rcmVhZG9ubHkgSURYX1BVU0g9MVxcbityZWFkb25seSBJRFhfU0hBUkVEX1JDVlk9MTBcXG4rcmVhZG9ubHkgSURYX0lORFZfUkNWWV9BPTIwXFxuK3JlYWRvbmx5IElEWF9JTkRWX1JDVllfQj0yMVxcbityZWFkb25seSBJRFhfTk9fUE9QPTMwXFxuK3JlYWRvbmx5IElEWF9QMlBfUkNWWT00MFxcbityZWFkb25seSBJRFhfUkVMQVlfUFVTSD01MFxcbityZWFkb25seSBJRFhfUkVMQVlfUkNWWT02MFxcbitcXG4rcmVhZG9ubHkgTlVNX1RFU1RTPTZcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFByZXJlcXVpc2l0ZSBjaGVja1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rY2hlY2tfcHJlcmVxdWlzaXRlcygpXFxuK3tcXG4rXFx0bG9jYWwgbWlzc2luZz0wXFxuK1xcbitcXHRbIFxcXCIkKGlkIC11KVxcXCIgLWVxIDAgXSB8fCB7IGVjaG8gXFxcIiMgTXVzdCBiZSBydW4gYXMgcm9vdFxcXCIgXFx1MDAzZVxcdTAwMjYyOyBtaXNzaW5nPTE7IH1cXG4rXFxuK1xcdGZvciBjbWQgaW4gaXAgXFxcIiRUQ1xcXCIgXFxcIiRUQ1BEVU1QXFxcIiBcXFwiJFBJTkdcXFwiOyBkb1xcbitcXHRcXHRjb21tYW5kIC12IFxcXCIkY21kXFxcIiBcXHUwMDNlL2Rldi9udWxsIDJcXHUwMDNlXFx1MDAyNjEgfHwge1xcbitcXHRcXHRcXHRlY2hvIFxcXCIjIE1pc3NpbmcgY29tbWFuZDogJGNtZFxcXCIgXFx1MDAzZVxcdTAwMjYyXFxuK1xcdFxcdFxcdG1pc3Npbmc9MVxcbitcXHRcXHR9XFxuK1xcdGRvbmVcXG4rXFxuK1xcdGlmIFsgXFxcIiRtaXNzaW5nXFxcIiAtbmUgMCBdOyB0aGVuXFxuK1xcdFxcdGtzZnRfc2V0X3BsYW4gXFxcIiROVU1fVEVTVFNcXFwiXFxuK1xcdFxcdGZvciBpIGluICQoc2VxIDEgXFxcIiROVU1fVEVTVFNcXFwiKTsgZG9cXG4rXFx0XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwIFxcXCJwcmVyZXF1aXNpdGVzIG5vdCBtZXQgKHRlc3QgJGkpXFxcIlxcbitcXHRcXHRkb25lXFxuK1xcdFxcdGtzZnRfcHJpbnRfY250c1xcbitcXHRcXHRleGl0IFxcXCIkS1NGVF9TS0lQXFxcIlxcbitcXHRmaVxcbit9XFxuK1xcbitsb2FkX21vZHVsZSgpXFxuK3tcXG4rXFx0WyBcXFwiJFNLSVBfTU9EUFJPQkVcXFwiID0gXFxcIjFcXFwiIF0gXFx1MDAyNlxcdTAwMjYgcmV0dXJuXFxuK1xcdGlmICEgbW9kcHJvYmUgYWN0X2ZyZXIgMlxcdTAwM2UvZGV2L251bGw7IHRoZW5cXG4rXFx0XFx0ZWNobyBcXFwiIyBtb2Rwcm9iZSBhY3RfZnJlciBmYWlsZWQgLSBtYXkgYmUgYnVpbHQtaW4gb3IgdW5hdmFpbGFibGVcXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRmaVxcbitcXHRpZiAhIG1vZHByb2JlIGJvbmRpbmcgMlxcdTAwM2UvZGV2L251bGw7IHRoZW5cXG4rXFx0XFx0ZWNobyBcXFwiIyBtb2Rwcm9iZSBib25kaW5nIGZhaWxlZCAtIG1heSBiZSBidWlsdC1pbiBvciB1bmF2YWlsYWJsZVxcXCIgXFx1MDAzZVxcdTAwMjYyXFxuK1xcdGZpXFxuK31cXG4rXFxuK2NoZWNrX2ZyZXJfYWN0aW9uKClcXG4re1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiBcXFxcXFxuK1xcdFxcdCRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDk5OSAyXFx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gMVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiBcXFxcXFxuK1xcdFxcdCRUQyBhY3Rpb25zIGRlbCBhY3Rpb24gZnJlciBpbmRleCA5OTkgMlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcbitcXHRyZXR1cm4gMFxcbit9XFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBCb25kIHRvcG9sb2d5IHNldHVwIC8gdGVhcmRvd24gKHVzZWQgYnkgdGVzdHMgMS00KVxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rc2V0dXBfdG9wb2xvZ3koKVxcbit7XFxuK1xcdGZvciBuIGluIFxcXCIkTlNfVEFMS0VSXFxcIiBcXFwiJE5TX0xJU1RFTkVSXFxcIjsgZG9cXG4rXFx0XFx0aXAgbmV0bnMgYWRkIFxcXCIkblxcXCJcXG4rXFx0ZG9uZVxcbitcXG4rXFx0aXAgbGluayBhZGQgXFxcIiRWRVRIX0EwXFxcIiB0eXBlIHZldGggcGVlciBuYW1lIFxcXCIkVkVUSF9BMVxcXCJcXG4rXFx0aXAgbGluayBzZXQgXFxcIiRWRVRIX0EwXFxcIiBuZXRucyBcXFwiJE5TX1RBTEtFUlxcXCJcXG4rXFx0aXAgbGluayBzZXQgXFxcIiRWRVRIX0ExXFxcIiBuZXRucyBcXFwiJE5TX0xJU1RFTkVSXFxcIlxcbitcXG4rXFx0aXAgbGluayBhZGQgXFxcIiRWRVRIX0IwXFxcIiB0eXBlIHZldGggcGVlciBuYW1lIFxcXCIkVkVUSF9CMVxcXCJcXG4rXFx0aXAgbGluayBzZXQgXFxcIiRWRVRIX0IwXFxcIiBuZXRucyBcXFwiJE5TX1RBTEtFUlxcXCJcXG4rXFx0aXAgbGluayBzZXQgXFxcIiRWRVRIX0IxXFxcIiBuZXRucyBcXFwiJE5TX0xJU1RFTkVSXFxcIlxcbitcXG4rXFx0IyBuc190YWxrZXI6IGNyZWF0ZSBib25kMCAoYmFsYW5jZS1yciksIGZyYW1lcyByb3VuZC1yb2JpbiBhY3Jvc3MgYm90aCBzbGF2ZXMuXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19UQUxLRVJcXFwiIGlwIGxpbmsgc2V0IGxvIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19UQUxLRVJcXFwiIGlwIGxpbmsgYWRkIFxcXCIkQk9ORDBcXFwiIHR5cGUgYm9uZCBtb2RlIGJhbGFuY2UtcnIgbWlpbW9uIDEwMFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiBpcCBsaW5rIHNldCBcXFwiJFZFVEhfQTBcXFwiIG1hc3RlciBcXFwiJEJPTkQwXFxcIlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiBpcCBsaW5rIHNldCBcXFwiJFZFVEhfQjBcXFwiIG1hc3RlciBcXFwiJEJPTkQwXFxcIlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiBpcCBsaW5rIHNldCBcXFwiJFZFVEhfQTBcXFwiIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19UQUxLRVJcXFwiIGlwIGxpbmsgc2V0IFxcXCIkVkVUSF9CMFxcXCIgdXBcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX1RBTEtFUlxcXCIgaXAgbGluayBzZXQgXFxcIiRCT05EMFxcXCIgdXBcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX1RBTEtFUlxcXCIgaXAgYWRkciBhZGQgXFxcIiR7SVBfU1JDfS8yNFxcXCIgZGV2IFxcXCIkQk9ORDBcXFwiXFxuK1xcbitcXHQjIG5zX2xpc3RlbmVyOiBjcmVhdGUgYm9uZDEgKGJhbGFuY2UtcnIpLlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiIGlwIGxpbmsgc2V0IGxvIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19MSVNURU5FUlxcXCIgaXAgbGluayBhZGQgXFxcIiRCT05EMVxcXCIgdHlwZSBib25kIG1vZGUgYmFsYW5jZS1yciBtaWltb24gMTAwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19MSVNURU5FUlxcXCIgaXAgbGluayBzZXQgXFxcIiRWRVRIX0ExXFxcIiBtYXN0ZXIgXFxcIiRCT05EMVxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiBpcCBsaW5rIHNldCBcXFwiJFZFVEhfQjFcXFwiIG1hc3RlciBcXFwiJEJPTkQxXFxcIlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiIGlwIGxpbmsgc2V0IFxcXCIkVkVUSF9BMVxcXCIgdXBcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiBpcCBsaW5rIHNldCBcXFwiJFZFVEhfQjFcXFwiIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19MSVNURU5FUlxcXCIgaXAgbGluayBzZXQgXFxcIiRCT05EMVxcXCIgdXBcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiBpcCBhZGRyIGFkZCBcXFwiJHtJUF9EU1R9LzI0XFxcIiBkZXYgXFxcIiRCT05EMVxcXCJcXG4rXFxuK1xcdCMgU3RhdGljIEFSUCBzbyBMMiBmb3J3YXJkaW5nIHdvcmtzIHdpdGhvdXQgQVJQIGJyb2FkY2FzdHMuXFxuK1xcdCMgV2l0aCBiYWxhbmNlLXJyIGJvdGggc2xhdmVzIHNoYXJlIHRoZSBib25kIE1BQy5cXG4rXFx0bG9jYWwgbWFjX2JvbmQwIG1hY19ib25kMVxcbitcXHRtYWNfYm9uZDA9JChpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiAgIGNhdCAvc3lzL2NsYXNzL25ldC9cXFwiJEJPTkQwXFxcIi9hZGRyZXNzKVxcbitcXHRtYWNfYm9uZDE9JChpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiIGNhdCAvc3lzL2NsYXNzL25ldC9cXFwiJEJPTkQxXFxcIi9hZGRyZXNzKVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiAgIGlwIG5laWdoIGFkZCBcXFwiJElQX0RTVFxcXCIgbGxhZGRyIFxcXCIkbWFjX2JvbmQxXFxcIiBkZXYgXFxcIiRCT05EMFxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiBpcCBuZWlnaCBhZGQgXFxcIiRJUF9TUkNcXFwiIGxsYWRkciBcXFwiJG1hY19ib25kMFxcXCIgZGV2IFxcXCIkQk9ORDFcXFwiXFxuK31cXG4rXFxuK2NsZWFudXAoKVxcbit7XFxuK1xcdGZvciBuIGluIFxcXCIkTlNfVEFMS0VSXFxcIiBcXFwiJE5TX0xJU1RFTkVSXFxcIiBcXFxcXFxuK1xcdFxcdFxcXCIkUDJQX05TX1NSQ1xcXCIgXFxcIiRQMlBfTlNfRFNUXFxcIiBcXFxcXFxuK1xcdFxcdFxcXCIkUl9OU19UQUxLRVJcXFwiIFxcXCIkUl9OU19CUklER0UwXFxcIiBcXFwiJFJfTlNfQlJJREdFMVxcXCIgXFxcIiRSX05TX0xJU1RFTkVSXFxcIjsgZG9cXG4rXFx0XFx0aXAgbmV0bnMgZGVsIFxcXCIkblxcXCIgMlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcbitcXHRkb25lXFxuK31cXG4rdHJhcCBjbGVhbnVwIEVYSVRcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFRDIHJ1bGUgaGVscGVyc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuKyMgUHVzaCBvbiBib3RoIHZldGhfYTAgYW5kIHZldGhfYjAgZWdyZXNzIHVzaW5nIHRoZSBzYW1lIHNoYXJlZCBmcmVyIHB1c2hcXG4rIyBhY3Rpb24gKElEWF9QVVNIKS4gIEVhY2ggc2xhdmUgYWxzbyBtaXJyb3JzIHRvIHRoZSBvdGhlciBzbyB0aGF0IGV2ZXJ5XFxuKyMgb3V0Z29pbmcgZnJhbWUgaXMgcmVwbGljYXRlZCBvbnRvIGJvdGggcGF0aHMgcmVnYXJkbGVzcyBvZiB3aGljaCBzbGF2ZSB0aGVcXG4rIyBib25kIGN1cnJlbnRseSBzZWxlY3RzLiAgVGhpcyBwcmV2ZW50cyBwYWNrZXQgbG9zcyBkdXJpbmcgYm9uZCBsaW5rIGNoYW5nZXMuXFxuK3NldHVwX3B1c2hfbWlycm9yKClcXG4re1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiAkVEMgcWRpc2MgYWRkIGRldiBcXFwiJFZFVEhfQTBcXFwiIGNsc2FjdFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXFxcIiRWRVRIX0EwXFxcIiBlZ3Jlc3MgXFxcXFxcbitcXHRcXHRwcm90b2NvbCBpcCBmbG93ZXIgc2tpcF9odyBcXFxcXFxuK1xcdFxcdGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggJElEWF9QVVNIIFxcXFxcXG4rXFx0XFx0YWN0aW9uIG1pcnJlZCBlZ3Jlc3MgbWlycm9yIGRldiBcXFwiJFZFVEhfQjBcXFwiXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiAkVEMgcWRpc2MgYWRkIGRldiBcXFwiJFZFVEhfQjBcXFwiIGNsc2FjdFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfVEFMS0VSXFxcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXFxcIiRWRVRIX0IwXFxcIiBlZ3Jlc3MgXFxcXFxcbitcXHRcXHRwcm90b2NvbCBpcCBmbG93ZXIgc2tpcF9odyBcXFxcXFxuK1xcdFxcdGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggJElEWF9QVVNIIFxcXFxcXG4rXFx0XFx0YWN0aW9uIG1pcnJlZCBlZ3Jlc3MgbWlycm9yIGRldiBcXFwiJFZFVEhfQTBcXFwiXFxuK31cXG4rXFxuK3RlYXJkb3duX3RjKClcXG4re1xcbitcXHRmb3IgZGV2IGluIFxcXCIkVkVUSF9BMFxcXCIgXFxcIiRWRVRIX0IwXFxcIjsgZG9cXG4rXFx0XFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX1RBTEtFUlxcXCIgJFRDIHFkaXNjIGRlbCBkZXYgXFxcIiRkZXZcXFwiIGNsc2FjdCBcXFxcXFxuK1xcdFxcdFxcdDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXG4rXFx0ZG9uZVxcbitcXHRmb3IgZGV2IGluIFxcXCIkVkVUSF9BMVxcXCIgXFxcIiRWRVRIX0IxXFxcIjsgZG9cXG4rXFx0XFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiAkVEMgcWRpc2MgZGVsIGRldiBcXFwiJGRldlxcXCIgY2xzYWN0IFxcXFxcXG4rXFx0XFx0XFx0MlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcbitcXHRkb25lXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19UQUxLRVJcXFwiICAgJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXIgMlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXG4rfVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgUGFja2V0LWNhcHR1cmUgaGVscGVyc1xcbisjXFxuKyMgY2FwdHVyZV9zdGFydF9vbiBOUyBJRkFDRSBQQ0FQIFtCUEZfRklMVEVSXVxcbisjICAgU3RhcnRzIHRjcGR1bXAgaW4gbmFtZXNwYWNlIE5TIG9uIElGQUNFLCB3cml0aW5nIHRvIFBDQVAuXFxuKyMgICBTdG9yZXMgUElEIGluIF9DQVBfUElELlxcbisjXFxuKyMgY2FwdHVyZV9zdG9wXFxuKyMgICBXYWl0cyBmb3IgdGNwZHVtcCAoc3RvcmVkIGluIF9DQVBfUElEKSB0byBmaW5pc2guXFxuKyNcXG4rIyBjYXB0dXJlX2NvdW50X29uIE5TIFBDQVBcXG4rIyAgIFByaW50cyB0aGUgbnVtYmVyIG9mIGNhcHR1cmVkIHBhY2tldHMuXFxuKyNcXG4rIyBDb252ZW5pZW5jZSB3cmFwcGVycyBjYXB0dXJlX3N0YXJ0IC8gY2FwdHVyZV9jb3VudCB0YXJnZXQgYm9uZDEgaW5cXG4rIyBOU19MSVNURU5FUiAodGhlIHByaW1hcnkgb2JzZXJ2YXRpb24gcG9pbnQgZm9yIHRlc3RzIDIgYW5kIDQpLlxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rX0NBUF9QSUQ9XFxcIlxcXCJcXG4rXFxuK2NhcHR1cmVfc3RhcnRfb24oKVxcbit7XFxuK1xcdGxvY2FsIG5zPVxcXCIkMVxcXCIgaWZhY2U9XFxcIiQyXFxcIiBwY2FwPVxcXCIkM1xcXCIgZmlsdGVyPVxcXCIkezQ6LX1cXFwiXFxuK1xcbitcXHRpZiBbIC1uIFxcXCIkZmlsdGVyXFxcIiBdOyB0aGVuXFxuK1xcdFxcdGlwIG5ldG5zIGV4ZWMgXFxcIiRuc1xcXCIgdGltZW91dCA0IFxcXFxcXG4rXFx0XFx0XFx0JFRDUERVTVAgLWkgXFxcIiRpZmFjZVxcXCIgLXcgXFxcIiRwY2FwXFxcIiBcXFxcXFxuK1xcdFxcdFxcdC0taW1tZWRpYXRlLW1vZGUgLVogcm9vdCAteSBFTjEwTUIgXFxcXFxcbitcXHRcXHRcXHQkZmlsdGVyIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXHUwMDI2XFxuK1xcdGVsc2VcXG4rXFx0XFx0aXAgbmV0bnMgZXhlYyBcXFwiJG5zXFxcIiB0aW1lb3V0IDQgXFxcXFxcbitcXHRcXHRcXHQkVENQRFVNUCAtaSBcXFwiJGlmYWNlXFxcIiAtdyBcXFwiJHBjYXBcXFwiIFxcXFxcXG4rXFx0XFx0XFx0LS1pbW1lZGlhdGUtbW9kZSAtWiByb290IC15IEVOMTBNQiBcXFxcXFxuK1xcdFxcdFxcdFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXHUwMDI2XFxuK1xcdGZpXFxuK1xcdF9DQVBfUElEPSQhXFxuK1xcbitcXHQjIFdhaXQgdW50aWwgdGNwZHVtcCBvcGVucyBhIHBhY2tldCBzb2NrZXQgKG1heCB+Mi41IHMpLlxcbitcXHRsb2NhbCB0cmllcz0wXFxuK1xcdHdoaWxlIFsgJHRyaWVzIC1sdCA1MCBdOyBkb1xcbitcXHRcXHRpcCBuZXRucyBleGVjIFxcXCIkbnNcXFwiIGdyZXAgLXEgXFxcIiRpZmFjZVxcXCIgL3Byb2MvbmV0L3BhY2tldCAyXFx1MDAzZS9kZXYvbnVsbCBcXHUwMDI2XFx1MDAyNiBicmVha1xcbitcXHRcXHRzbGVlcCAwLjA1XFxuK1xcdFxcdHRyaWVzPSQoKHRyaWVzICsgMSkpXFxuK1xcdGRvbmVcXG4rfVxcbitcXG4rY2FwdHVyZV9zdG9wKClcXG4re1xcbitcXHRbIC1uIFxcXCIkX0NBUF9QSURcXFwiIF0gfHwgcmV0dXJuIDBcXG4rXFx0d2FpdCBcXFwiJF9DQVBfUElEXFxcIiAyXFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdF9DQVBfUElEPVxcXCJcXFwiXFxuK31cXG4rXFxuK2NhcHR1cmVfY291bnRfb24oKVxcbit7XFxuK1xcdGxvY2FsIG5zPVxcXCIkMVxcXCIgcGNhcD1cXFwiJDJcXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRuc1xcXCIgXFxcXFxcbitcXHRcXHQkVENQRFVNUCAtciBcXFwiJHBjYXBcXFwiIC0tbm8tcHJvbWlzY3VvdXMtbW9kZSAyXFx1MDAzZS9kZXYvbnVsbCBcXFxcXFxuK1xcdFxcdHwgZ3JlcCAtYyBcXFwiXlswLTldXFxcIiB8fCB0cnVlXFxuK31cXG4rXFxuKyMgQ29udmVuaWVuY2Ugd3JhcHBlcnM6IGRlZmF1bHQgdG8gYm9uZDEgaW4gTlNfTElTVEVORVJcXG4rY2FwdHVyZV9zdGFydCgpIHsgY2FwdHVyZV9zdGFydF9vbiBcXFwiJE5TX0xJU1RFTkVSXFxcIiBcXFwiJEJPTkQxXFxcIiBcXFwiJEBcXFwiOyB9XFxuK2NhcHR1cmVfY291bnQoKSB7IGNhcHR1cmVfY291bnRfb24gXFxcIiROU19MSVNURU5FUlxcXCIgXFxcIiQxXFxcIjsgfVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgUGluZyBoZWxwZXJcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK2RvX3BpbmcoKVxcbit7XFxuK1xcdGxvY2FsIHJjPTBcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX1RBTEtFUlxcXCIgXFxcXFxcbitcXHRcXHQkUElORyAtYyBcXFwiJFBJTkdfQ09VTlRcXFwiIC1XIFxcXCIkUElOR19USU1FT1VUXFxcIiAtaSAwLjIgLXEgXFxcXFxcbitcXHRcXHRcXFwiJElQX0RTVFxcXCIgXFx1MDAzZS9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIHx8IHJjPSQ/XFxuK1xcdHJldHVybiAkcmNcXG4rfVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgdGMgc3RhdGlzdGljcyBwYXJzZXJcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK3RjX3N0YXQoKVxcbit7XFxuK1xcdGxvY2FsIGR1bXA9XFxcIiQxXFxcIiBmaWVsZD1cXFwiJDJcXFwiXFxuK1xcdGVjaG8gXFxcIiRkdW1wXFxcIiB8IGF3ayAtRlxcXCIke2ZpZWxkfT1cXFwiICdORlxcdTAwM2Uxe3NwbGl0KCQyLGEsXFxcIiBcXFwiKTtwcmludCBhWzFdO2V4aXR9JyB8fCBlY2hvIFxcXCIwXFxcIlxcbit9XFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBURVNUIDE6IFBVU0ggVkVSSUZZIChib25kIHRvcG9sb2d5KVxcbisjXFxuKyMgT25seSBwdXNoIGlzIGNvbmZpZ3VyZWQgb24gdGhlIHRhbGtlciBzaWRlOyBubyByZWNvdmVyIG9uIHRoZSBsaXN0ZW5lci5cXG4rIyBUaGUgcHVzaCBhY3Rpb24gb24gdmV0aF9hMCBlZ3Jlc3MgaW5zZXJ0cyBhbiBSLVRBRyBhbmQgbWlycm9ycyBhIGNvcHkgdG9cXG4rIyB2ZXRoX2IwLCBzbyBib3RoIGxpc3RlbmVyIHNsYXZlcyAodmV0aF9hMSBhbmQgdmV0aF9iMSkgcmVjZWl2ZSBhIGZyYW1lXFxuKyMgd2l0aCBFdGhlclR5cGUgMHhGMUMxLiAgQ2FwdHVyZXMgcnVuIHNlcXVlbnRpYWxseSBvbiBlYWNoIHNsYXZlIHRvIHZlcmlmeVxcbisjIHRoYXQgYm90aCBwYXRocyBjYXJyeSBSLVRBRyBmcmFtZXMuXFxuKyNcXG4rIyBQYXNzIGNyaXRlcmlhOlxcbisjICAgLSB2ZXRoX2ExIGNhcHR1cmVzIFxcdTAwM2U9IDEgUi1UQUcgZnJhbWVcXG4rIyAgIC0gdmV0aF9iMSBjYXB0dXJlcyBcXHUwMDNlPSAxIFItVEFHIGZyYW1lXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbit0ZXN0X3B1c2hfdmVyaWZ5X2JvbmQoKVxcbit7XFxuK1xcdGxvY2FsIHBjYXBfYSBwY2FwX2IgY2FwX2EgY2FwX2JcXG4rXFx0bG9jYWwgcmVzdWx0PVxcXCJwYXNzXFxcIlxcbitcXG4rXFx0c2V0dXBfcHVzaF9taXJyb3JcXG4rXFxuK1xcdCMgQ2FwdHVyZSAxOiBSLVRBRyBmcmFtZXMgb24gdmV0aF9hMSAocGF0aCBBKVxcbitcXHRwY2FwX2E9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfcHVzaF9hX1hYWFhYWC5wY2FwKVxcbitcXHRjYXB0dXJlX3N0YXJ0X29uIFxcXCIkTlNfTElTVEVORVJcXFwiIFxcXCIkVkVUSF9BMVxcXCIgXFxcIiRwY2FwX2FcXFwiIFxcXCJldGhlciBwcm90byAweGYxYzFcXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19UQUxLRVJcXFwiIFxcXFxcXG4rXFx0XFx0JFBJTkcgLWMgMyAtVyAxIC1pIDAuMiAtcSBcXFwiJElQX0RTVFxcXCIgXFx1MDAzZS9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIHx8IHRydWVcXG4rXFx0Y2FwdHVyZV9zdG9wXFxuK1xcdGNhcF9hPSQoY2FwdHVyZV9jb3VudF9vbiBcXFwiJE5TX0xJU1RFTkVSXFxcIiBcXFwiJHBjYXBfYVxcXCIpXFxuK1xcdHJtIC1mIFxcXCIkcGNhcF9hXFxcIlxcbitcXG4rXFx0IyBDYXB0dXJlIDI6IFItVEFHIGZyYW1lcyBvbiB2ZXRoX2IxIChwYXRoIEIsIG1pcnJvcmVkIGNvcHkpXFxuK1xcdHBjYXBfYj0kKG1rdGVtcCAvdG1wL2ZyZXJfYm9uZF9wdXNoX2JfWFhYWFhYLnBjYXApXFxuK1xcdGNhcHR1cmVfc3RhcnRfb24gXFxcIiROU19MSVNURU5FUlxcXCIgXFxcIiRWRVRIX0IxXFxcIiBcXFwiJHBjYXBfYlxcXCIgXFxcImV0aGVyIHByb3RvIDB4ZjFjMVxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX1RBTEtFUlxcXCIgXFxcXFxcbitcXHRcXHQkUElORyAtYyAzIC1XIDEgLWkgMC4yIC1xIFxcXCIkSVBfRFNUXFxcIiBcXHUwMDNlL2Rldi9udWxsIDJcXHUwMDNlXFx1MDAyNjEgfHwgdHJ1ZVxcbitcXHRjYXB0dXJlX3N0b3BcXG4rXFx0Y2FwX2I9JChjYXB0dXJlX2NvdW50X29uIFxcXCIkTlNfTElTVEVORVJcXFwiIFxcXCIkcGNhcF9iXFxcIilcXG4rXFx0cm0gLWYgXFxcIiRwY2FwX2JcXFwiXFxuK1xcbitcXHR0ZWFyZG93bl90Y1xcbitcXG4rXFx0ZWNobyBcXFwiIyBib25kIHB1c2ggdmVyaWZ5OiB2ZXRoX2ExIFItVEFHPSRjYXBfYSB2ZXRoX2IxIFItVEFHPSRjYXBfYlxcXCJcXG4rXFxuK1xcdFsgXFxcIiRjYXBfYVxcXCIgLWdlIDEgXSB8fCByZXN1bHQ9XFxcImZhaWxcXFwiXFxuK1xcdFsgXFxcIiRjYXBfYlxcXCIgLWdlIDEgXSB8fCByZXN1bHQ9XFxcImZhaWxcXFwiXFxuK1xcbitcXHRpZiBbIFxcXCIkcmVzdWx0XFxcIiA9IFxcXCJwYXNzXFxcIiBdOyB0aGVuXFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyBcXFxcXFxuK1xcdFxcdFxcdFxcXCJib25kIHB1c2ggdmVyaWZ5OiBSLVRBRyBvbiBib3RoIHBhdGhzIChhMT0kY2FwX2EgYjE9JGNhcF9iKVxcXCJcXG4rXFx0ZWxzZVxcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXFxcXFxcbitcXHRcXHRcXHRcXFwiYm9uZCBwdXNoIHZlcmlmeTogZXhwZWN0ZWQgUi1UQUcgb24gYm90aCBwYXRocyAoYTE9JGNhcF9hIGIxPSRjYXBfYilcXFwiXFxuK1xcdGZpXFxuK31cXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFRFU1QgMjogU0hBUkVEIFJFQ09WRVIgRTJFIChib25kIHRvcG9sb2d5KVxcbisjXFxuKyMgdmV0aF9hMSBhbmQgdmV0aF9iMSBpbmdyZXNzIHNoYXJlIG9uZSByZWNvdmVyIGFjdGlvbiAoaWR4PTEwKSB3aXRoIHRhZy1wb3AuXFxuKyMgVGhlIGxpc3RlbmVyIHJlY2VpdmVzIHR3byBSLVRBRyBjb3BpZXMgcGVyIHJlcXVlc3Q7IHRoZSBzaGFyZWQgcmVjb3ZlciBwYXNzZXNcXG4rIyBleGFjdGx5IG9uZSBhbmQgZGlzY2FyZHMgdGhlIG90aGVyLiAgVGhlIHJlY292ZXJlZCBwbGFpbiBJQ01QIHJlYWNoZXMgYm9uZDEnc1xcbisjIElQIHN0YWNrIGFuZCBhIHJlcGx5IGlzIHNlbnQsIG1ha2luZyBwaW5nIHN1Y2NlZWQuXFxuKyNcXG4rIyBQYXNzIGNyaXRlcmlhOlxcbisjICAgLSBwaW5nIHN1Y2NlZWRzIChyYz0wKVxcbisjICAgLSB0Y3BkdW1wIG9uIGJvbmQxIGNhcHR1cmVzIGV4YWN0bHkgUElOR19DT1VOVCBJQ01QIGVjaG8tcmVxdWVzdCBmcmFtZXNcXG4rIyAgICAgKGZpbHRlciBpcyByZXN0cmljdGVkIHRvIHR5cGU9OCB0byBleGNsdWRlIGVjaG8gcmVwbGllcywgd2hpY2ggd291bGRcXG4rIyAgICAgZG91YmxlIHRoZSBjb3VudCBzaW5jZSBib25kMSBhbHNvIG9yaWdpbmF0ZXMgdGhlIHJlcGx5IHBhY2tldHMpXFxuKyMgICAtIHRjIHN0YXRzIG9uIHZldGhfYTE6IHBhc3NlZCBcXHUwMDNlPSBQSU5HX0NPVU5ULCBkaXNjYXJkZWQgXFx1MDAzZT0gUElOR19DT1VOVFxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rdGVzdF9zaGFyZWRfcmVjb3Zlcl9ib25kKClcXG4re1xcbitcXHRsb2NhbCBwY2FwIGNhcF9jb3VudCBwaW5nX3JjPTBcXG4rXFx0bG9jYWwgZHVtcF9hXFxuK1xcdGxvY2FsIHRvdGFsX3Bhc3NlZCB0b3RhbF9kaXNjYXJkZWQgdGFnbGVzc1xcbitcXHRsb2NhbCByZXN1bHQ9XFxcInBhc3NcXFwiXFxuK1xcbitcXHRzZXR1cF9wdXNoX21pcnJvclxcbitcXG4rXFx0IyB2ZXRoX2ExIGluZ3Jlc3M6IGNyZWF0ZSBzaGFyZWQgcmVjb3ZlciBhY3Rpb24gd2l0aCB0YWctcG9wXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19MSVNURU5FUlxcXCIgJFRDIHFkaXNjIGFkZCBkZXYgXFxcIiRWRVRIX0ExXFxcIiBjbHNhY3RcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXFxcIiRWRVRIX0ExXFxcIiBpbmdyZXNzIFxcXFxcXG4rXFx0XFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXFxcXG4rXFx0XFx0YWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXFxcXG4rXFx0XFx0XFx0cmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9TSEFSRURfUkNWWVxcbitcXG4rXFx0IyB2ZXRoX2IxIGluZ3Jlc3M6IGJpbmQgdG8gdGhlIHNhbWUgc2hhcmVkIGFjdGlvbiBieSBpbmRleFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiICRUQyBxZGlzYyBhZGQgZGV2IFxcXCIkVkVUSF9CMVxcXCIgY2xzYWN0XFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19MSVNURU5FUlxcXCIgJFRDIGZpbHRlciBhZGQgZGV2IFxcXCIkVkVUSF9CMVxcXCIgaW5ncmVzcyBcXFxcXFxuK1xcdFxcdHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcXFxcXFxuK1xcdFxcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggJElEWF9TSEFSRURfUkNWWVxcbitcXG4rXFx0cGNhcD0kKG1rdGVtcCAvdG1wL2ZyZXJfYm9uZF9zaGFyZWRfWFhYWFhYLnBjYXApXFxuK1xcdGNhcHR1cmVfc3RhcnQgXFxcIiRwY2FwXFxcIiBcXFwiaWNtcFtpY21wdHlwZV0gPT0gaWNtcC1lY2hvXFxcIlxcbitcXG4rXFx0ZG9fcGluZyB8fCBwaW5nX3JjPSQ/XFxuK1xcbitcXHRjYXB0dXJlX3N0b3BcXG4rXFxuK1xcdGNhcF9jb3VudD0kKGNhcHR1cmVfY291bnQgXFxcIiRwY2FwXFxcIilcXG4rXFx0cm0gLWYgXFxcIiRwY2FwXFxcIlxcbitcXG4rXFx0ZHVtcF9hPSQoaXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiBcXFxcXFxuK1xcdFxcdCRUQyAtcyBmaWx0ZXIgc2hvdyBkZXYgXFxcIiRWRVRIX0ExXFxcIiBpbmdyZXNzIDJcXHUwMDNlL2Rldi9udWxsKVxcbitcXG4rXFx0dGVhcmRvd25fdGNcXG4rXFxuK1xcdHRvdGFsX3Bhc3NlZD0kKHRjX3N0YXQgICAgXFxcIiRkdW1wX2FcXFwiIFxcXCJwYXNzZWRcXFwiKVxcbitcXHR0b3RhbF9kaXNjYXJkZWQ9JCh0Y19zdGF0IFxcXCIkZHVtcF9hXFxcIiBcXFwiZGlzY2FyZGVkXFxcIilcXG4rXFx0dGFnbGVzcz0kKHRjX3N0YXQgICAgICAgICBcXFwiJGR1bXBfYVxcXCIgXFxcInRhZ2xlc3NcXFwiKVxcbitcXHR0b3RhbF9kaXNjYXJkZWQ9JCgodG90YWxfZGlzY2FyZGVkIC0gdGFnbGVzcykpXFxuK1xcbitcXHRlY2hvIFxcXCIjIGJvbmQgc2hhcmVkIHJlY292ZXI6IHBpbmdfcmM9JHBpbmdfcmMgY2FwPSRjYXBfY291bnRcXFwiIFxcXFxcXG4rXFx0XFx0XFxcInBhc3NlZD0kdG90YWxfcGFzc2VkIGRpc2NhcmRlZD0kdG90YWxfZGlzY2FyZGVkXFxcIlxcbitcXG4rXFx0WyBcXFwiJHBpbmdfcmNcXFwiICAgICAgICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFx0WyBcXFwiJGNhcF9jb3VudFxcXCIgICAgICAgLWVxIFxcXCIkUElOR19DT1VOVFxcXCIgXSB8fCByZXN1bHQ9XFxcImZhaWxcXFwiXFxuK1xcdFsgXFxcIiR0b3RhbF9wYXNzZWRcXFwiICAgIC1nZSBcXFwiJFBJTkdfQ09VTlRcXFwiIF0gfHwgcmVzdWx0PVxcXCJmYWlsXFxcIlxcbitcXHRbIFxcXCIkdG90YWxfZGlzY2FyZGVkXFxcIiAtZ2UgXFxcIiRQSU5HX0NPVU5UXFxcIiBdIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFxuK1xcdGlmIFsgXFxcIiRyZXN1bHRcXFwiID0gXFxcInBhc3NcXFwiIF07IHRoZW5cXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFxcXFxcXG4rXFx0XFx0XFx0XFxcImJvbmQgc2hhcmVkIHJlY292ZXI6IHBpbmcgT0ssIGNhcD0kY2FwX2NvdW50XFxcIiBcXFxcXFxuK1xcdFxcdFxcdFxcXCJwYXNzZWQ9JHRvdGFsX3Bhc3NlZCBkaXNjYXJkZWQ9JHRvdGFsX2Rpc2NhcmRlZFxcXCJcXG4rXFx0ZWxzZVxcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXFxcXFxcbitcXHRcXHRcXHRcXFwiYm9uZCBzaGFyZWQgcmVjb3ZlcjogcGluZ19yYz0kcGluZ19yYyBjYXA9JGNhcF9jb3VudFxcXCIgXFxcXFxcbitcXHRcXHRcXHRcXFwicGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWRcXFwiIFxcXFxcXG4rXFx0XFx0XFx0XFxcIihleHBlY3RlZCBwaW5nIE9LLCBjYXA9JFBJTkdfQ09VTlQsXFxcIiBcXFxcXFxuK1xcdFxcdFxcdFxcXCJwYXNzZWRcXHUwMDNlPSRQSU5HX0NPVU5ULCBkaXNjYXJkZWRcXHUwMDNlPSRQSU5HX0NPVU5UKVxcXCJcXG4rXFx0ZmlcXG4rfVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVEVTVCAzOiBJTkRJVklEVUFMIFJFQ09WRVIgKGJvbmQgdG9wb2xvZ3kpXFxuKyNcXG4rIyB2ZXRoX2ExIGFuZCB2ZXRoX2IxIHVzZSBpbmRlcGVuZGVudCByZWNvdmVyIGFjdGlvbnMgKGlkeD0yMCBhbmQgaWR4PTIxKS5cXG4rIyBFYWNoIHBvcnQgbWFpbnRhaW5zIGl0cyBvd24gc2VxdWVuY2UgaGlzdG9yeSBzbyBib3RoIGNvcGllcyBvZiBldmVyeSBmcmFtZVxcbisjIGFyZSBwYXNzZWQgKG5vIGNyb3NzLXBvcnQgZGVkdXBsaWNhdGlvbikuICBXaXRoIGFjdGl2ZS1iYWNrdXAgYm9uZDEsIG9ubHlcXG4rIyB0aGUgYWN0aXZlIHNsYXZlJ3MgKHZldGhfYTEpIHJlY292ZXJlZCBmcmFtZSByZWFjaGVzIGJvbmQxJ3MgSVAgc3RhY2ssIHNvXFxuKyMgcGluZyBzdWNjZWVkcy4gIFRoZSBhYnNlbmNlIG9mIGRlZHVwbGljYXRpb24gaXMgdmVyaWZpZWQgdmlhIHBlci1zbGF2ZVxcbisjIHRjcGR1bXAgKGVhY2ggc2xhdmUgc2hvdWxkIGNhcHR1cmUgUElOR19DT1VOVCBJQ01QIGZyYW1lcykgYW5kIHRjIHN0YXRzLlxcbisjXFxuKyMgUGFzcyBjcml0ZXJpYTpcXG4rIyAgIC0gcGluZyBzdWNjZWVkc1xcbisjICAgLSB2ZXRoX2ExIGNhcHR1cmVzIFBJTkdfQ09VTlQgSUNNUCBmcmFtZXMgKHBhc3NlZCwgbm90IGRpc2NhcmRlZClcXG4rIyAgIC0gdmV0aF9iMSBjYXB0dXJlcyBQSU5HX0NPVU5UIElDTVAgZnJhbWVzIChwYXNzZWQgaW5kZXBlbmRlbnRseSlcXG4rIyAgIC0gdGMgc3RhdHM6IHZldGhfYTEgcGFzc2VkPVBJTkdfQ09VTlQgZGlzY2FyZGVkPTBcXG4rIyAgICAgICAgICAgICAgIHZldGhfYjEgcGFzc2VkPVBJTkdfQ09VTlQgZGlzY2FyZGVkPTBcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK3Rlc3RfaW5kaXZpZHVhbF9yZWNvdmVyX2JvbmQoKVxcbit7XFxuK1xcdGxvY2FsIHBjYXBfYSBwY2FwX2IgY2FwX2EgY2FwX2IgcGluZ19yYz0wXFxuK1xcdGxvY2FsIGR1bXBfYSBkdW1wX2JcXG4rXFx0bG9jYWwgcGFzc2VkX2EgZGlzY2FyZGVkX2EgcGFzc2VkX2IgZGlzY2FyZGVkX2IgdGFnbGVzc19hIHRhZ2xlc3NfYlxcbitcXHRsb2NhbCByZXN1bHQ9XFxcInBhc3NcXFwiXFxuK1xcbitcXHRzZXR1cF9wdXNoX21pcnJvclxcbitcXG4rXFx0IyB2ZXRoX2ExIGluZ3Jlc3M6IGluZGl2aWR1YWwgcmVjb3ZlciBpZHg9MjAgKGluZGVwZW5kZW50IHN0YXRlKVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiICRUQyBxZGlzYyBhZGQgZGV2IFxcXCIkVkVUSF9BMVxcXCIgY2xzYWN0XFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19MSVNURU5FUlxcXCIgJFRDIGZpbHRlciBhZGQgZGV2IFxcXCIkVkVUSF9BMVxcXCIgaW5ncmVzcyBcXFxcXFxuK1xcdFxcdHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcXFxcXFxuK1xcdFxcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXFxcXG4rXFx0XFx0XFx0cmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9JTkRWX1JDVllfQVxcbitcXG4rXFx0IyB2ZXRoX2IxIGluZ3Jlc3M6IGluZGl2aWR1YWwgcmVjb3ZlciBpZHg9MjEgKHNlcGFyYXRlIGluZGVwZW5kZW50IHN0YXRlKVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiICRUQyBxZGlzYyBhZGQgZGV2IFxcXCIkVkVUSF9CMVxcXCIgY2xzYWN0XFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19MSVNURU5FUlxcXCIgJFRDIGZpbHRlciBhZGQgZGV2IFxcXCIkVkVUSF9CMVxcXCIgaW5ncmVzcyBcXFxcXFxuK1xcdFxcdHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcXFxcXFxuK1xcdFxcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXFxcXG4rXFx0XFx0XFx0cmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9JTkRWX1JDVllfQlxcbitcXG4rXFx0IyBQZXItc2xhdmUgY2FwdHVyZSBBOiB2ZXJpZnkgdmV0aF9hMSBwYXNzZXMgZnJhbWVzOyBhbHNvIHVzZSB0aGlzIHJ1blxcbitcXHQjIGZvciB0aGUgb3ZlcmFsbCBwaW5nX3JjIGNoZWNrIChkb19waW5nIHRhcmdldHMgYm9uZDAtXFx1MDAzZWJvbmQxKS5cXG4rXFx0cGNhcF9hPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX2luZHZfYV9YWFhYWFgucGNhcClcXG4rXFx0Y2FwdHVyZV9zdGFydF9vbiBcXFwiJE5TX0xJU1RFTkVSXFxcIiBcXFwiJFZFVEhfQTFcXFwiIFxcXCIkcGNhcF9hXFxcIiBcXFwiaWNtcFxcXCJcXG4rXFx0ZG9fcGluZyB8fCBwaW5nX3JjPSQ/XFxuK1xcdGNhcHR1cmVfc3RvcFxcbitcXHRjYXBfYT0kKGNhcHR1cmVfY291bnRfb24gXFxcIiROU19MSVNURU5FUlxcXCIgXFxcIiRwY2FwX2FcXFwiKVxcbitcXHRybSAtZiBcXFwiJHBjYXBfYVxcXCJcXG4rXFxuK1xcdCMgUGVyLXNsYXZlIGNhcHR1cmUgQjogdmVyaWZ5IHZldGhfYjEgYWxzbyBwYXNzZXMgZnJhbWVzIChiYWxhbmNlLXJyXFxuK1xcdCMgZGlzdHJpYnV0ZXMgZWdyZXNzIGFjcm9zcyBib3RoIHNsYXZlcywgc28gYm90aCBwYXRocyBjYXJyeSB0cmFmZmljKS5cXG4rXFx0cGNhcF9iPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX2luZHZfYl9YWFhYWFgucGNhcClcXG4rXFx0Y2FwdHVyZV9zdGFydF9vbiBcXFwiJE5TX0xJU1RFTkVSXFxcIiBcXFwiJFZFVEhfQjFcXFwiIFxcXCIkcGNhcF9iXFxcIiBcXFwiaWNtcFxcXCJcXG4rXFx0ZG9fcGluZyB8fCB0cnVlXFxuK1xcdGNhcHR1cmVfc3RvcFxcbitcXHRjYXBfYj0kKGNhcHR1cmVfY291bnRfb24gXFxcIiROU19MSVNURU5FUlxcXCIgXFxcIiRwY2FwX2JcXFwiKVxcbitcXHRybSAtZiBcXFwiJHBjYXBfYlxcXCJcXG4rXFxuK1xcdGR1bXBfYT0kKGlwIG5ldG5zIGV4ZWMgXFxcIiROU19MSVNURU5FUlxcXCIgXFxcXFxcbitcXHRcXHQkVEMgLXMgZmlsdGVyIHNob3cgZGV2IFxcXCIkVkVUSF9BMVxcXCIgaW5ncmVzcyAyXFx1MDAzZS9kZXYvbnVsbClcXG4rXFx0ZHVtcF9iPSQoaXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiBcXFxcXFxuK1xcdFxcdCRUQyAtcyBmaWx0ZXIgc2hvdyBkZXYgXFxcIiRWRVRIX0IxXFxcIiBpbmdyZXNzIDJcXHUwMDNlL2Rldi9udWxsKVxcbitcXG4rXFx0dGVhcmRvd25fdGNcXG4rXFxuK1xcdHBhc3NlZF9hPSQodGNfc3RhdCAgICBcXFwiJGR1bXBfYVxcXCIgXFxcInBhc3NlZFxcXCIpXFxuK1xcdGRpc2NhcmRlZF9hPSQodGNfc3RhdCBcXFwiJGR1bXBfYVxcXCIgXFxcImRpc2NhcmRlZFxcXCIpXFxuK1xcdHRhZ2xlc3NfYT0kKHRjX3N0YXQgICBcXFwiJGR1bXBfYVxcXCIgXFxcInRhZ2xlc3NcXFwiKVxcbitcXHRwYXNzZWRfYj0kKHRjX3N0YXQgICAgXFxcIiRkdW1wX2JcXFwiIFxcXCJwYXNzZWRcXFwiKVxcbitcXHRkaXNjYXJkZWRfYj0kKHRjX3N0YXQgXFxcIiRkdW1wX2JcXFwiIFxcXCJkaXNjYXJkZWRcXFwiKVxcbitcXHR0YWdsZXNzX2I9JCh0Y19zdGF0ICAgXFxcIiRkdW1wX2JcXFwiIFxcXCJ0YWdsZXNzXFxcIilcXG4rXFx0ZGlzY2FyZGVkX2E9JCgoZGlzY2FyZGVkX2EgLSB0YWdsZXNzX2EpKVxcbitcXHRkaXNjYXJkZWRfYj0kKChkaXNjYXJkZWRfYiAtIHRhZ2xlc3NfYikpXFxuK1xcbitcXHRlY2hvIFxcXCIjIGJvbmQgaW5kaXZpZHVhbCByZWNvdmVyOiBwaW5nX3JjPSRwaW5nX3JjXFxcIiBcXFxcXFxuK1xcdFxcdFxcXCJhMTogY2FwPSRjYXBfYSBwYXNzZWQ9JHBhc3NlZF9hIGRpc2NhcmRlZD0kZGlzY2FyZGVkX2FcXFwiIFxcXFxcXG4rXFx0XFx0XFxcImIxOiBjYXA9JGNhcF9iIHBhc3NlZD0kcGFzc2VkX2IgZGlzY2FyZGVkPSRkaXNjYXJkZWRfYlxcXCJcXG4rXFxuK1xcdFsgXFxcIiRwaW5nX3JjXFxcIiAgIC1lcSAwIF0gICAgICAgICAgICB8fCByZXN1bHQ9XFxcImZhaWxcXFwiXFxuK1xcdFsgXFxcIiRjYXBfYVxcXCIgICAgIC1nZSBcXFwiJFBJTkdfQ09VTlRcXFwiIF0gfHwgcmVzdWx0PVxcXCJmYWlsXFxcIlxcbitcXHRbIFxcXCIkY2FwX2JcXFwiICAgICAtZ2UgXFxcIiRQSU5HX0NPVU5UXFxcIiBdIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFx0WyBcXFwiJHBhc3NlZF9hXFxcIiAgLWdlIFxcXCIkUElOR19DT1VOVFxcXCIgXSB8fCByZXN1bHQ9XFxcImZhaWxcXFwiXFxuK1xcdFsgXFxcIiRwYXNzZWRfYlxcXCIgIC1nZSBcXFwiJFBJTkdfQ09VTlRcXFwiIF0gfHwgcmVzdWx0PVxcXCJmYWlsXFxcIlxcbitcXHRbIFxcXCIkZGlzY2FyZGVkX2FcXFwiIC1lcSAwIF0gICAgICAgICAgIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFx0WyBcXFwiJGRpc2NhcmRlZF9iXFxcIiAtZXEgMCBdICAgICAgICAgICB8fCByZXN1bHQ9XFxcImZhaWxcXFwiXFxuK1xcbitcXHRpZiBbIFxcXCIkcmVzdWx0XFxcIiA9IFxcXCJwYXNzXFxcIiBdOyB0aGVuXFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyBcXFxcXFxuK1xcdFxcdFxcdFxcXCJib25kIGluZGl2aWR1YWwgcmVjb3ZlcjogcGluZyBPS1xcXCIgXFxcXFxcbitcXHRcXHRcXHRcXFwiYTE6IGNhcD0kY2FwX2EgcGFzc2VkPSRwYXNzZWRfYS8wXFxcIiBcXFxcXFxuK1xcdFxcdFxcdFxcXCJiMTogY2FwPSRjYXBfYiBwYXNzZWQ9JHBhc3NlZF9iLzBcXFwiXFxuK1xcdGVsc2VcXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFxcXFxcXG4rXFx0XFx0XFx0XFxcImJvbmQgaW5kaXZpZHVhbCByZWNvdmVyOiBwaW5nX3JjPSRwaW5nX3JjXFxcIiBcXFxcXFxuK1xcdFxcdFxcdFxcXCJhMTogY2FwPSRjYXBfYSBwYXNzZWQ9JHBhc3NlZF9hIGRpc2NhcmRlZD0kZGlzY2FyZGVkX2FcXFwiIFxcXFxcXG4rXFx0XFx0XFx0XFxcImIxOiBjYXA9JGNhcF9iIHBhc3NlZD0kcGFzc2VkX2IgZGlzY2FyZGVkPSRkaXNjYXJkZWRfYlxcXCJcXG4rXFx0ZmlcXG4rfVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVEVTVCA0OiBOTyBUQUctUE9QIChib25kIHRvcG9sb2d5KVxcbisjXFxuKyMgU2hhcmVkIHJlY292ZXIgcnVucyB3aXRob3V0IHRhZy1wb3A7IHBhc3NlZCBmcmFtZXMgc3RpbGwgY2FycnkgdGhlIFItVEFHXFxuKyMgd2hlbiB0aGV5IHJlYWNoIGJvbmQxLlxcbisjXFxuKyMgUGFzcyBjcml0ZXJpYTpcXG4rIyAgIC0gdGNwZHVtcCBvbiBib25kMSB3aXRoIFxcXCJldGhlciBwcm90byAweGYxYzFcXFwiIGNhcHR1cmVzIFxcdTAwM2U9IDEgUi1UQUcgZnJhbWVcXG4rIyAgIC0gdGNwZHVtcCBvbiBib25kMSB3aXRoIFxcXCJpY21wXFxcIiBjYXB0dXJlcyAwIGZyYW1lcyAob3V0ZXIgRXRoZXJUeXBlIGlzXFxuKyMgICAgIDB4RjFDMSwgbm90IDB4MDgwMCwgc28gcGxhaW4tSVAgSUNNUCBmaWx0ZXIgZG9lcyBub3QgbWF0Y2gpXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbit0ZXN0X25vX3RhZ19wb3BfYm9uZCgpXFxuK3tcXG4rXFx0bG9jYWwgcGNhcF9ydGFnIHBjYXBfaWNtcCBydGFnX2NvdW50IGljbXBfY291bnRcXG4rXFx0bG9jYWwgcmVzdWx0PVxcXCJwYXNzXFxcIlxcbitcXG4rXFx0c2V0dXBfcHVzaF9taXJyb3JcXG4rXFxuK1xcdCMgdmV0aF9hMSBpbmdyZXNzOiBzaGFyZWQgcmVjb3ZlciBXSVRIT1VUIHRhZy1wb3BcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiAkVEMgcWRpc2MgYWRkIGRldiBcXFwiJFZFVEhfQTFcXFwiIGNsc2FjdFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiICRUQyBmaWx0ZXIgYWRkIGRldiBcXFwiJFZFVEhfQTFcXFwiIGluZ3Jlc3MgXFxcXFxcbitcXHRcXHRwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXFxcXFxcbitcXHRcXHRhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgXFxcXFxcbitcXHRcXHRcXHRyZXNldC10aW1lIDIwMDAgaW5kZXggJElEWF9OT19QT1BcXG4rXFxuK1xcdCMgdmV0aF9iMSBpbmdyZXNzOiBiaW5kIHRvIHRoZSBzYW1lIHNoYXJlZCBhY3Rpb25cXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJE5TX0xJU1RFTkVSXFxcIiAkVEMgcWRpc2MgYWRkIGRldiBcXFwiJFZFVEhfQjFcXFwiIGNsc2FjdFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkTlNfTElTVEVORVJcXFwiICRUQyBmaWx0ZXIgYWRkIGRldiBcXFwiJFZFVEhfQjFcXFwiIGluZ3Jlc3MgXFxcXFxcbitcXHRcXHRwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXFxcXFxcbitcXHRcXHRhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4ICRJRFhfTk9fUE9QXFxuK1xcbitcXHQjIENhcHR1cmUgMTogZnJhbWVzIHdpdGggUi1UQUcgRXRoZXJUeXBlIG9uIGJvbmQxIChleHBlY3QgXFx1MDAzZT0gMSlcXG4rXFx0cGNhcF9ydGFnPSQobWt0ZW1wIC90bXAvZnJlcl9ib25kX25vcG9wX3J0YWdfWFhYWFhYLnBjYXApXFxuK1xcdGNhcHR1cmVfc3RhcnQgXFxcIiRwY2FwX3J0YWdcXFwiIFxcXCJldGhlciBwcm90byAweGYxYzFcXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19UQUxLRVJcXFwiIFxcXFxcXG4rXFx0XFx0JFBJTkcgLWMgMyAtVyAxIC1pIDAuMiAtcSBcXFwiJElQX0RTVFxcXCIgXFx1MDAzZS9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIHx8IHRydWVcXG4rXFx0Y2FwdHVyZV9zdG9wXFxuK1xcdHJ0YWdfY291bnQ9JChjYXB0dXJlX2NvdW50IFxcXCIkcGNhcF9ydGFnXFxcIilcXG4rXFx0cm0gLWYgXFxcIiRwY2FwX3J0YWdcXFwiXFxuK1xcbitcXHQjIENhcHR1cmUgMjogcGxhaW4gSUNNUCBmcmFtZXMgb24gYm9uZDEgKGV4cGVjdCAwKVxcbitcXHRwY2FwX2ljbXA9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfbm9wb3BfaWNtcF9YWFhYWFgucGNhcClcXG4rXFx0Y2FwdHVyZV9zdGFydCBcXFwiJHBjYXBfaWNtcFxcXCIgXFxcImljbXBcXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiROU19UQUxLRVJcXFwiIFxcXFxcXG4rXFx0XFx0JFBJTkcgLWMgMyAtVyAxIC1pIDAuMiAtcSBcXFwiJElQX0RTVFxcXCIgXFx1MDAzZS9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIHx8IHRydWVcXG4rXFx0Y2FwdHVyZV9zdG9wXFxuK1xcdGljbXBfY291bnQ9JChjYXB0dXJlX2NvdW50IFxcXCIkcGNhcF9pY21wXFxcIilcXG4rXFx0cm0gLWYgXFxcIiRwY2FwX2ljbXBcXFwiXFxuK1xcbitcXHR0ZWFyZG93bl90Y1xcbitcXG4rXFx0ZWNobyBcXFwiIyBib25kIG5vIHRhZy1wb3A6IHJ0YWc9JHJ0YWdfY291bnQgKGV4cGVjdGVkIFxcdTAwM2U9MSkgaWNtcD0kaWNtcF9jb3VudCAoZXhwZWN0ZWQgMClcXFwiXFxuK1xcbitcXHRbIFxcXCIkcnRhZ19jb3VudFxcXCIgLWdlIDEgXSB8fCByZXN1bHQ9XFxcImZhaWxcXFwiXFxuK1xcdFsgXFxcIiRpY21wX2NvdW50XFxcIiAtZXEgMCBdIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFxuK1xcdGlmIFsgXFxcIiRyZXN1bHRcXFwiID0gXFxcInBhc3NcXFwiIF07IHRoZW5cXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFxcXFxcXG4rXFx0XFx0XFx0XFxcImJvbmQgbm8gdGFnLXBvcDogUi1UQUcgcHJlc2VudCBvbiBib25kMSBcXFwiIFxcXFxcXG4rXFx0XFx0XFx0XFxcIihydGFnPSRydGFnX2NvdW50KSwgSUNNUCBhYnNlbnQgKGljbXA9JGljbXBfY291bnQpXFxcIlxcbitcXHRlbHNlXFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbCBcXFxcXFxuK1xcdFxcdFxcdFxcXCJib25kIG5vIHRhZy1wb3A6IHJ0YWc9JHJ0YWdfY291bnQgaWNtcD0kaWNtcF9jb3VudCBcXFwiIFxcXFxcXG4rXFx0XFx0XFx0XFxcIihleHBlY3RlZCBydGFnXFx1MDAzZT0xIGljbXA9MClcXFwiXFxuK1xcdGZpXFxuK31cXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFRFU1QgNTogU0lNUExFIFBPSU5ULVRPLVBPSU5UIChubyBib25kKVxcbisjXFxuKyMgU2VsZi1jb250YWluZWQgc2luZ2xlLXBhdGggdG9wb2xvZ3k6IHB1c2ggb24gcDJwX2EwIGVncmVzcywgaW5kaXZpZHVhbFxcbisjIHJlY292ZXIgKHdpdGggdGFnLXBvcCkgb24gcDJwX2ExIGluZ3Jlc3MuICBJUCBpcyBhc3NpZ25lZCBkaXJlY3RseSB0byB0aGVcXG4rIyB2ZXRoIGludGVyZmFjZXMgKG5vIGJvbmQpLlxcbisjXFxuKyMgUGFzcyBjcml0ZXJpYTpcXG4rIyAgIC0gcGluZyBzdWNjZWVkcyAocmM9MClcXG4rIyAgIC0gdmV0aF9hMSByZWNvdmVyIHN0YXRzOiBwYXNzZWQgXFx1MDAzZT0gUElOR19DT1VOVCwgZGlzY2FyZGVkID0gMFxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rdGVzdF9zaW1wbGVfcG9pbnRfdG9fcG9pbnQoKVxcbit7XFxuK1xcdGxvY2FsIHBpbmdfcmM9MFxcbitcXHRsb2NhbCBkdW1wX2ExIHBhc3NlZCBkaXNjYXJkZWRcXG4rXFx0bG9jYWwgcmVzdWx0PVxcXCJwYXNzXFxcIlxcbitcXG4rXFx0IyBDcmVhdGUgc2VsZi1jb250YWluZWQgcDJwIG5hbWVzcGFjZXNcXG4rXFx0aXAgbmV0bnMgYWRkIFxcXCIkUDJQX05TX1NSQ1xcXCJcXG4rXFx0aXAgbmV0bnMgYWRkIFxcXCIkUDJQX05TX0RTVFxcXCJcXG4rXFxuK1xcdGlwIGxpbmsgYWRkIFxcXCIkUDJQX1ZFVEhfQTBcXFwiIHR5cGUgdmV0aCBwZWVyIG5hbWUgXFxcIiRQMlBfVkVUSF9BMVxcXCJcXG4rXFx0aXAgbGluayBzZXQgXFxcIiRQMlBfVkVUSF9BMFxcXCIgbmV0bnMgXFxcIiRQMlBfTlNfU1JDXFxcIlxcbitcXHRpcCBsaW5rIHNldCBcXFwiJFAyUF9WRVRIX0ExXFxcIiBuZXRucyBcXFwiJFAyUF9OU19EU1RcXFwiXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUDJQX05TX1NSQ1xcXCIgaXAgbGluayBzZXQgbG8gdXBcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFAyUF9OU19TUkNcXFwiIGlwIGxpbmsgc2V0IFxcXCIkUDJQX1ZFVEhfQTBcXFwiIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfU1JDXFxcIiBpcCBhZGRyIGFkZCBcXFwiJHtJUF9QMlBfU1JDfS8yNFxcXCIgZGV2IFxcXCIkUDJQX1ZFVEhfQTBcXFwiXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUDJQX05TX0RTVFxcXCIgaXAgbGluayBzZXQgbG8gdXBcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFAyUF9OU19EU1RcXFwiIGlwIGxpbmsgc2V0IFxcXCIkUDJQX1ZFVEhfQTFcXFwiIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfRFNUXFxcIiBpcCBhZGRyIGFkZCBcXFwiJHtJUF9QMlBfRFNUfS8yNFxcXCIgZGV2IFxcXCIkUDJQX1ZFVEhfQTFcXFwiXFxuK1xcbitcXHRsb2NhbCBtYWNfYTAgbWFjX2ExXFxuK1xcdG1hY19hMD0kKGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfU1JDXFxcIiBjYXQgL3N5cy9jbGFzcy9uZXQvXFxcIiRQMlBfVkVUSF9BMFxcXCIvYWRkcmVzcylcXG4rXFx0bWFjX2ExPSQoaXAgbmV0bnMgZXhlYyBcXFwiJFAyUF9OU19EU1RcXFwiIGNhdCAvc3lzL2NsYXNzL25ldC9cXFwiJFAyUF9WRVRIX0ExXFxcIi9hZGRyZXNzKVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUDJQX05TX1NSQ1xcXCIgaXAgbmVpZ2ggYWRkIFxcXCIkSVBfUDJQX0RTVFxcXCIgbGxhZGRyIFxcXCIkbWFjX2ExXFxcIiBkZXYgXFxcIiRQMlBfVkVUSF9BMFxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFAyUF9OU19EU1RcXFwiIGlwIG5laWdoIGFkZCBcXFwiJElQX1AyUF9TUkNcXFwiIGxsYWRkciBcXFwiJG1hY19hMFxcXCIgZGV2IFxcXCIkUDJQX1ZFVEhfQTFcXFwiXFxuK1xcbitcXHQjIHZldGhfYTAgZWdyZXNzOiBwdXNoIFItVEFHXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfU1JDXFxcIiAkVEMgcWRpc2MgYWRkIGRldiBcXFwiJFAyUF9WRVRIX0EwXFxcIiBjbHNhY3RcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFAyUF9OU19TUkNcXFwiICRUQyBmaWx0ZXIgYWRkIGRldiBcXFwiJFAyUF9WRVRIX0EwXFxcIiBlZ3Jlc3MgXFxcXFxcbitcXHRcXHRwcm90b2NvbCBpcCBmbG93ZXIgc2tpcF9odyBcXFxcXFxuK1xcdFxcdGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggJElEWF9QVVNIXFxuK1xcbitcXHQjIHZldGhfYTEgaW5ncmVzczogaW5kaXZpZHVhbCByZWNvdmVyIHdpdGggdGFnLXBvcFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUDJQX05TX0RTVFxcXCIgJFRDIHFkaXNjIGFkZCBkZXYgXFxcIiRQMlBfVkVUSF9BMVxcXCIgY2xzYWN0XFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfRFNUXFxcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXFxcIiRQMlBfVkVUSF9BMVxcXCIgaW5ncmVzcyBcXFxcXFxuK1xcdFxcdHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcXFxcXFxuK1xcdFxcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXFxcXG4rXFx0XFx0XFx0cmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9QMlBfUkNWWVxcbitcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFAyUF9OU19TUkNcXFwiIFxcXFxcXG4rXFx0XFx0JFBJTkcgLWMgXFxcIiRQSU5HX0NPVU5UXFxcIiAtVyBcXFwiJFBJTkdfVElNRU9VVFxcXCIgLWkgMC4yIC1xIFxcXFxcXG4rXFx0XFx0XFxcIiRJUF9QMlBfRFNUXFxcIiBcXHUwMDNlL2Rldi9udWxsIDJcXHUwMDNlXFx1MDAyNjEgfHwgcGluZ19yYz0kP1xcbitcXG4rXFx0ZHVtcF9hMT0kKGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfRFNUXFxcIiBcXFxcXFxuK1xcdFxcdCRUQyAtcyBmaWx0ZXIgc2hvdyBkZXYgXFxcIiRQMlBfVkVUSF9BMVxcXCIgaW5ncmVzcyAyXFx1MDAzZS9kZXYvbnVsbClcXG4rXFxuK1xcdCMgVGVhcmRvd24gcDJwIHRvcG9sb2d5XFxuK1xcdGZvciBkZXYgaW4gXFxcIiRQMlBfVkVUSF9BMFxcXCI7IGRvXFxuK1xcdFxcdGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfU1JDXFxcIiAkVEMgcWRpc2MgZGVsIGRldiBcXFwiJGRldlxcXCIgY2xzYWN0IFxcXFxcXG4rXFx0XFx0XFx0MlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcbitcXHRkb25lXFxuK1xcdGZvciBkZXYgaW4gXFxcIiRQMlBfVkVUSF9BMVxcXCI7IGRvXFxuK1xcdFxcdGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfRFNUXFxcIiAkVEMgcWRpc2MgZGVsIGRldiBcXFwiJGRldlxcXCIgY2xzYWN0IFxcXFxcXG4rXFx0XFx0XFx0MlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcbitcXHRkb25lXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfU1JDXFxcIiAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyXFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRQMlBfTlNfRFNUXFxcIiAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyXFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdGlwIG5ldG5zIGRlbCBcXFwiJFAyUF9OU19TUkNcXFwiIDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXG4rXFx0aXAgbmV0bnMgZGVsIFxcXCIkUDJQX05TX0RTVFxcXCIgMlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcbitcXG4rXFx0cGFzc2VkPSQodGNfc3RhdCAgICBcXFwiJGR1bXBfYTFcXFwiIFxcXCJwYXNzZWRcXFwiKVxcbitcXHRkaXNjYXJkZWQ9JCh0Y19zdGF0IFxcXCIkZHVtcF9hMVxcXCIgXFxcImRpc2NhcmRlZFxcXCIpXFxuK1xcdGxvY2FsIHRhZ2xlc3NcXG4rXFx0dGFnbGVzcz0kKHRjX3N0YXQgICBcXFwiJGR1bXBfYTFcXFwiIFxcXCJ0YWdsZXNzXFxcIilcXG4rXFx0ZGlzY2FyZGVkPSQoKGRpc2NhcmRlZCAtIHRhZ2xlc3MpKVxcbitcXG4rXFx0ZWNobyBcXFwiIyBwMnA6IHBpbmdfcmM9JHBpbmdfcmMgcGFzc2VkPSRwYXNzZWQgZGlzY2FyZGVkPSRkaXNjYXJkZWRcXFwiXFxuK1xcbitcXHRbIFxcXCIkcGluZ19yY1xcXCIgICAtZXEgMCBdICAgICAgICAgICAgfHwgcmVzdWx0PVxcXCJmYWlsXFxcIlxcbitcXHRbIFxcXCIkcGFzc2VkXFxcIiAgICAtZ2UgXFxcIiRQSU5HX0NPVU5UXFxcIiBdIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFx0WyBcXFwiJGRpc2NhcmRlZFxcXCIgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFxuK1xcdGlmIFsgXFxcIiRyZXN1bHRcXFwiID0gXFxcInBhc3NcXFwiIF07IHRoZW5cXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFxcXFxcXG4rXFx0XFx0XFx0XFxcInNpbXBsZSBwMnA6IHBpbmcgT0ssIHBhc3NlZD0kcGFzc2VkIGRpc2NhcmRlZD0kZGlzY2FyZGVkXFxcIlxcbitcXHRlbHNlXFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbCBcXFxcXFxuK1xcdFxcdFxcdFxcXCJzaW1wbGUgcDJwOiBwaW5nX3JjPSRwaW5nX3JjIHBhc3NlZD0kcGFzc2VkIGRpc2NhcmRlZD0kZGlzY2FyZGVkXFxcIlxcbitcXHRmaVxcbit9XFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBURVNUIDY6IFJFTEFZIEUyRSAoc2VsZi1jb250YWluZWQsIG5vIGJvbmQpXFxuKyNcXG4rIyBUYWxrZXIgc2VuZHMgVkxBTi0xMDAgZnJhbWVzIGludG8gYnJpZGdlMCAoc2VxdWVuY2UgZ2VuZXJhdG9yKS4gIEJyaWRnZTBcXG4rIyBwdXNoZXMgYW4gUi1UQUcgYW5kIHJlcGxpY2F0ZXMgdG8gdHdvIHJlZHVuZGFudCBwYXRocy4gIEJyaWRnZTEgKGVsaW1pbmF0b3IpXFxuKyMgcmVjb3ZlcnMgKHNoYXJlZCwgdGFnLXBvcCkgb24gYm90aCBwYXRocyBhbmQgZm9yd2FyZHMgdGhlIGRlZHVwbGljYXRlZCBmcmFtZVxcbisjIHRvIHRoZSBsaXN0ZW5lci5cXG4rI1xcbisjIFRvcG9sb2d5OlxcbisjICAgbnNfdGFsa2VyICh0YWxrZXJfZXRoLjEwMCkgLS0gdGFsa2VyX2V0aC9icjBfdXBsaW5rXFxuKyMgICAgICAgLS0gYnJpZGdlMCAoYnJfcjApIC0rLSBicjBfc3dwMC9icjFfc3dwMCAtK1xcbisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFwtIGJyMF9zd3AxL2JyMV9zd3AxIC0rXFxuKyMgICAgICAgLS0gYnJpZGdlMSAoYnJfcjEpIC0tIGJyMV9kb3dubGluay9saXN0ZW5lcl9ldGggLS0gbnNfbGlzdGVuZXJcXG4rI1xcbisjIEZSRVIgcnVsZXM6XFxuKyMgICBicmlkZ2UwIC8gYnIwX3VwbGluayBpbmdyZXNzICA6IHB1c2ggaWR4PTUwLCByZWRpcmVjdCBicjBfc3dwMCwgbWlycm9yIGJyMF9zd3AxXFxuKyMgICBicmlkZ2UxIC8gYnIxX3N3cDAgaW5ncmVzcyAgICA6IHJlY292ZXIgKHNoYXJlZCwgdGFnLXBvcCkgaWR4PTYwLCByZWRpcmVjdCBicjFfZG93bmxpbmtcXG4rIyAgIGJyaWRnZTEgLyBicjFfc3dwMSBpbmdyZXNzICAgIDogcmVjb3ZlciBpZHg9NjAgKGJpbmQgc2FtZSksIHJlZGlyZWN0IGJyMV9kb3dubGlua1xcbisjICAgYnJpZGdlMSAvIGJyMV9kb3dubGluayBpbmdyZXNzOiByZWRpcmVjdCBicjFfc3dwMCAocmVwbHkgcGF0aCwgYnlwYXNzIEZEQilcXG4rI1xcbisjIFBhc3MgY3JpdGVyaWE6XFxuKyMgICAtIHBpbmcgZnJvbSBuc190YWxrZXIgdG8gbnNfbGlzdGVuZXIgc3VjY2VlZHMgKHJjPTApXFxuKyMgICAtIHRjcGR1bXAgb24gbGlzdGVuZXIgY2FwdHVyZXMgZXhhY3RseSBQSU5HX0NPVU5UIElDTVAgZWNoby1yZXF1ZXN0IGZyYW1lc1xcbisjICAgLSBicjFfc3dwMCB0YyBzdGF0czogcGFzc2VkIFxcdTAwM2U9IFBJTkdfQ09VTlQsIGRpc2NhcmRlZCBcXHUwMDNlPSBQSU5HX0NPVU5UXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbit0ZWFyZG93bl9yZWxheV90YygpXFxuK3tcXG4rXFx0Zm9yIGRldiBpbiBcXFwiJFJfQlIwX1VQTElOS1xcXCI7IGRvXFxuK1xcdFxcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTBcXFwiICRUQyBxZGlzYyBkZWwgZGV2IFxcXCIkZGV2XFxcIiBjbHNhY3QgXFxcXFxcbitcXHRcXHRcXHQyXFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdGRvbmVcXG4rXFx0Zm9yIGRldiBpbiBcXFwiJFJfQlIxX1NXUDBcXFwiIFxcXCIkUl9CUjFfU1dQMVxcXCIgXFxcIiRSX0JSMV9ET1dOTElOS1xcXCI7IGRvXFxuK1xcdFxcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTFcXFwiICRUQyBxZGlzYyBkZWwgZGV2IFxcXCIkZGV2XFxcIiBjbHNhY3QgXFxcXFxcbitcXHRcXHRcXHQyXFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK1xcdGRvbmVcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMFxcXCIgJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXIgMlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyXFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxuK31cXG4rXFxuK3Rlc3RfcmVsYXlfZTJlKClcXG4re1xcbitcXHRsb2NhbCBwaW5nX3JjPTBcXG4rXFx0bG9jYWwgZHVtcF9yMXN3cDBcXG4rXFx0bG9jYWwgdG90YWxfcGFzc2VkIHRvdGFsX2Rpc2NhcmRlZFxcbitcXHRsb2NhbCByZXN1bHQ9XFxcInBhc3NcXFwiXFxuK1xcdGxvY2FsIG5zXFxuK1xcbitcXHRmb3IgbnMgaW4gXFxcIiRSX05TX1RBTEtFUlxcXCIgXFxcIiRSX05TX0JSSURHRTBcXFwiIFxcXCIkUl9OU19CUklER0UxXFxcIiBcXFwiJFJfTlNfTElTVEVORVJcXFwiOyBkb1xcbitcXHRcXHRpcCBuZXRucyBhZGQgXFxcIiRuc1xcXCIgfHwge1xcbitcXHRcXHRcXHRlY2hvIFxcXCIjIHJlbGF5IGUyZTogZmFpbGVkIHRvIGNyZWF0ZSBuZXRucyAkbnNcXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAgXFxcInJlbGF5IGUyZTogbmV0bnMgc2V0dXAgZmFpbGVkXFxcIlxcbitcXHRcXHRcXHRyZXR1cm5cXG4rXFx0XFx0fVxcbitcXHRkb25lXFxuK1xcbitcXHRpcCBsaW5rIGFkZCBcXFwiJFJfVEFMS0VSX0VUSFxcXCIgICB0eXBlIHZldGggcGVlciBuYW1lIFxcXCIkUl9CUjBfVVBMSU5LXFxcIlxcbitcXHRpcCBsaW5rIGFkZCBcXFwiJFJfQlIwX1NXUDBcXFwiICAgICB0eXBlIHZldGggcGVlciBuYW1lIFxcXCIkUl9CUjFfU1dQMFxcXCJcXG4rXFx0aXAgbGluayBhZGQgXFxcIiRSX0JSMF9TV1AxXFxcIiAgICAgdHlwZSB2ZXRoIHBlZXIgbmFtZSBcXFwiJFJfQlIxX1NXUDFcXFwiXFxuK1xcdGlwIGxpbmsgYWRkIFxcXCIkUl9CUjFfRE9XTkxJTktcXFwiIHR5cGUgdmV0aCBwZWVyIG5hbWUgXFxcIiRSX0xJU1RFTkVSX0VUSFxcXCJcXG4rXFxuK1xcdGlwIGxpbmsgc2V0IFxcXCIkUl9UQUxLRVJfRVRIXFxcIiAgIG5ldG5zIFxcXCIkUl9OU19UQUxLRVJcXFwiXFxuK1xcdGlwIGxpbmsgc2V0IFxcXCIkUl9CUjBfVVBMSU5LXFxcIiAgIG5ldG5zIFxcXCIkUl9OU19CUklER0UwXFxcIlxcbitcXHRpcCBsaW5rIHNldCBcXFwiJFJfQlIwX1NXUDBcXFwiICAgICBuZXRucyBcXFwiJFJfTlNfQlJJREdFMFxcXCJcXG4rXFx0aXAgbGluayBzZXQgXFxcIiRSX0JSMF9TV1AxXFxcIiAgICAgbmV0bnMgXFxcIiRSX05TX0JSSURHRTBcXFwiXFxuK1xcdGlwIGxpbmsgc2V0IFxcXCIkUl9CUjFfU1dQMFxcXCIgICAgIG5ldG5zIFxcXCIkUl9OU19CUklER0UxXFxcIlxcbitcXHRpcCBsaW5rIHNldCBcXFwiJFJfQlIxX1NXUDFcXFwiICAgICBuZXRucyBcXFwiJFJfTlNfQlJJREdFMVxcXCJcXG4rXFx0aXAgbGluayBzZXQgXFxcIiRSX0JSMV9ET1dOTElOS1xcXCIgbmV0bnMgXFxcIiRSX05TX0JSSURHRTFcXFwiXFxuK1xcdGlwIGxpbmsgc2V0IFxcXCIkUl9MSVNURU5FUl9FVEhcXFwiIG5ldG5zIFxcXCIkUl9OU19MSVNURU5FUlxcXCJcXG4rXFxuK1xcdGxvY2FsIG5zX2RldlxcbitcXHRmb3IgbnNfZGV2IGluIFxcXFxcXG4rXFx0XFx0XFxcIiRSX05TX1RBTEtFUjokUl9UQUxLRVJfRVRIXFxcIiBcXFxcXFxuK1xcdFxcdFxcXCIkUl9OU19CUklER0UwOiRSX0JSMF9VUExJTktcXFwiIFxcXCIkUl9OU19CUklER0UwOiRSX0JSMF9TV1AwXFxcIiBcXFxcXFxuK1xcdFxcdFxcXCIkUl9OU19CUklER0UwOiRSX0JSMF9TV1AxXFxcIiBcXFxcXFxuK1xcdFxcdFxcXCIkUl9OU19CUklER0UxOiRSX0JSMV9TV1AwXFxcIiBcXFwiJFJfTlNfQlJJREdFMTokUl9CUjFfU1dQMVxcXCIgXFxcXFxcbitcXHRcXHRcXFwiJFJfTlNfQlJJREdFMTokUl9CUjFfRE9XTkxJTktcXFwiIFxcXFxcXG4rXFx0XFx0XFxcIiRSX05TX0xJU1RFTkVSOiRSX0xJU1RFTkVSX0VUSFxcXCI7IGRvXFxuK1xcdFxcdGxvY2FsIF9ucz1cXFwiJHtuc19kZXYlJToqfVxcXCJcXG4rXFx0XFx0bG9jYWwgX2Rldj1cXFwiJHtuc19kZXYjIyo6fVxcXCJcXG4rXFx0XFx0aXAgbmV0bnMgZXhlYyBcXFwiJF9uc1xcXCIgaXAgbGluayBzZXQgbG8gdXBcXG4rXFx0XFx0aXAgbmV0bnMgZXhlYyBcXFwiJF9uc1xcXCIgaXAgbGluayBzZXQgXFxcIiRfZGV2XFxcIiB1cFxcbitcXHRkb25lXFxuK1xcbitcXHQjIGJyaWRnZTA6IHNlcXVlbmNlIGdlbmVyYXRvciwgVkxBTiBmaWx0ZXJpbmdcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMFxcXCIgaXAgbGluayBhZGQgbmFtZSBcXFwiJFJfQlIwXFxcIiB0eXBlIGJyaWRnZSB2bGFuX2ZpbHRlcmluZyAxXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTBcXFwiIGlwIGxpbmsgc2V0IFxcXCIkUl9CUjBcXFwiIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTBcXFwiIGlwIGxpbmsgc2V0IFxcXCIkUl9CUjBfVVBMSU5LXFxcIiBtYXN0ZXIgXFxcIiRSX0JSMFxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMFxcXCIgaXAgbGluayBzZXQgXFxcIiRSX0JSMF9TV1AwXFxcIiBtYXN0ZXIgXFxcIiRSX0JSMFxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMFxcXCIgaXAgbGluayBzZXQgXFxcIiRSX0JSMF9TV1AxXFxcIiBtYXN0ZXIgXFxcIiRSX0JSMFxcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTBcXFwiIGJyaWRnZSB2bGFuIGFkZCBkZXYgXFxcIiRSX0JSMF9VUExJTktcXFwiIHZpZCBcXFwiJFJfVkxBTlxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMFxcXCIgYnJpZGdlIHZsYW4gYWRkIGRldiBcXFwiJFJfQlIwX1NXUDBcXFwiIHZpZCBcXFwiJFJfVkxBTlxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMFxcXCIgYnJpZGdlIHZsYW4gZGVsIGRldiBcXFwiJFJfQlIwX1NXUDFcXFwiIHZpZCAxXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTBcXFwiIGJyaWRnZSB2bGFuIGFkZCBkZXYgXFxcIiRSX0JSMF9TV1AxXFxcIiBcXFxcXFxuK1xcdFxcdHZpZCBcXFwiJFJfVkxBTlxcXCIgcHZpZCB1bnRhZ2dlZFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UwXFxcIiBicmlkZ2UgbGluayBzZXQgZGV2IFxcXCIkUl9CUjBfU1dQMFxcXCIgbGVhcm5pbmcgb2ZmXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTBcXFwiIGJyaWRnZSBsaW5rIHNldCBkZXYgXFxcIiRSX0JSMF9TV1AxXFxcIiBsZWFybmluZyBvZmZcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMFxcXCIgYnJpZGdlIHZsYW4gc2V0IGRldiBcXFwiJFJfQlIwX1NXUDBcXFwiIHZpZCBcXFwiJFJfVkxBTlxcXCIgbm9mbG9vZFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UwXFxcIiBicmlkZ2UgdmxhbiBzZXQgZGV2IFxcXCIkUl9CUjBfU1dQMVxcXCIgdmlkIFxcXCIkUl9WTEFOXFxcIiBub2Zsb29kXFxuK1xcbitcXHQjIGJyaWRnZTE6IGVsaW1pbmF0b3IsIFZMQU4gZmlsdGVyaW5nXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTFcXFwiIGlwIGxpbmsgYWRkIG5hbWUgXFxcIiRSX0JSMVxcXCIgdHlwZSBicmlkZ2Ugdmxhbl9maWx0ZXJpbmcgMVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiBpcCBsaW5rIHNldCBcXFwiJFJfQlIxXFxcIiB1cFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiBpcCBsaW5rIHNldCBcXFwiJFJfQlIxX1NXUDBcXFwiIG1hc3RlciBcXFwiJFJfQlIxXFxcIlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiBpcCBsaW5rIHNldCBcXFwiJFJfQlIxX1NXUDFcXFwiIG1hc3RlciBcXFwiJFJfQlIxXFxcIlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiBpcCBsaW5rIHNldCBcXFwiJFJfQlIxX0RPV05MSU5LXFxcIiBtYXN0ZXIgXFxcIiRSX0JSMVxcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTFcXFwiIGJyaWRnZSB2bGFuIGFkZCBkZXYgXFxcIiRSX0JSMV9TV1AwXFxcIiB2aWQgXFxcIiRSX1ZMQU5cXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTFcXFwiIGJyaWRnZSB2bGFuIGRlbCBkZXYgXFxcIiRSX0JSMV9TV1AxXFxcIiB2aWQgMVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiBicmlkZ2UgdmxhbiBhZGQgZGV2IFxcXCIkUl9CUjFfU1dQMVxcXCIgXFxcXFxcbitcXHRcXHR2aWQgXFxcIiRSX1ZMQU5cXFwiIHB2aWQgdW50YWdnZWRcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMVxcXCIgYnJpZGdlIHZsYW4gYWRkIGRldiBcXFwiJFJfQlIxX0RPV05MSU5LXFxcIiB2aWQgXFxcIiRSX1ZMQU5cXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTFcXFwiIGJyaWRnZSBsaW5rIHNldCBkZXYgXFxcIiRSX0JSMV9TV1AwXFxcIiBsZWFybmluZyBvZmZcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfQlJJREdFMVxcXCIgYnJpZGdlIGxpbmsgc2V0IGRldiBcXFwiJFJfQlIxX1NXUDFcXFwiIGxlYXJuaW5nIG9mZlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiBicmlkZ2UgdmxhbiBzZXQgZGV2IFxcXCIkUl9CUjFfU1dQMFxcXCIgdmlkIFxcXCIkUl9WTEFOXFxcIiBub2Zsb29kXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTFcXFwiIGJyaWRnZSB2bGFuIHNldCBkZXYgXFxcIiRSX0JSMV9TV1AxXFxcIiB2aWQgXFxcIiRSX1ZMQU5cXFwiIG5vZmxvb2RcXG4rXFxuK1xcdCMgbnNfdGFsa2VyOiBWTEFOIHN1Yi1pbnRlcmZhY2VcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfVEFMS0VSXFxcIiBpcCBsaW5rIGFkZCBsaW5rIFxcXCIkUl9UQUxLRVJfRVRIXFxcIiBcXFxcXFxuK1xcdFxcdG5hbWUgXFxcIiR7Ul9UQUxLRVJfRVRIfS4ke1JfVkxBTn1cXFwiIHR5cGUgdmxhbiBpZCBcXFwiJFJfVkxBTlxcXCJcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfVEFMS0VSXFxcIiBpcCBsaW5rIHNldCBcXFwiJHtSX1RBTEtFUl9FVEh9LiR7Ul9WTEFOfVxcXCIgdXBcXG4rXFx0aXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfVEFMS0VSXFxcIiBpcCBhZGRyIGFkZCBcXFwiJHtSX0lQX1RBTEtFUn0vMjRcXFwiIFxcXFxcXG4rXFx0XFx0ZGV2IFxcXCIke1JfVEFMS0VSX0VUSH0uJHtSX1ZMQU59XFxcIlxcbitcXG4rXFx0IyBuc19saXN0ZW5lcjogVkxBTiBzdWItaW50ZXJmYWNlXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0xJU1RFTkVSXFxcIiBpcCBsaW5rIGFkZCBsaW5rIFxcXCIkUl9MSVNURU5FUl9FVEhcXFwiIFxcXFxcXG4rXFx0XFx0bmFtZSBcXFwiJHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59XFxcIiB0eXBlIHZsYW4gaWQgXFxcIiRSX1ZMQU5cXFwiXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0xJU1RFTkVSXFxcIiBpcCBsaW5rIHNldCBcXFwiJHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59XFxcIiB1cFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19MSVNURU5FUlxcXCIgaXAgYWRkciBhZGQgXFxcIiR7Ul9JUF9MSVNURU5FUn0vMjRcXFwiIFxcXFxcXG4rXFx0XFx0ZGV2IFxcXCIke1JfTElTVEVORVJfRVRIfS4ke1JfVkxBTn1cXFwiXFxuK1xcbitcXHQjIFN0YXRpYyBBUlAgKFZMQU4gMTAwIGZsb29kaW5nIGlzIGRpc2FibGVkKVxcbitcXHRsb2NhbCBtYWNfdGFsa2VyIG1hY19saXN0ZW5lclxcbitcXHRtYWNfdGFsa2VyPSQoaXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfVEFMS0VSXFxcIiBcXFxcXFxuK1xcdFxcdGNhdCAvc3lzL2NsYXNzL25ldC9cXFwiJHtSX1RBTEtFUl9FVEh9LiR7Ul9WTEFOfVxcXCIvYWRkcmVzcylcXG4rXFx0bWFjX2xpc3RlbmVyPSQoaXAgbmV0bnMgZXhlYyBcXFwiJFJfTlNfTElTVEVORVJcXFwiIFxcXFxcXG4rXFx0XFx0Y2F0IC9zeXMvY2xhc3MvbmV0L1xcXCIke1JfTElTVEVORVJfRVRIfS4ke1JfVkxBTn1cXFwiL2FkZHJlc3MpXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX1RBTEtFUlxcXCIgICBpcCBuZWlnaCBhZGQgXFxcIiRSX0lQX0xJU1RFTkVSXFxcIiBcXFxcXFxuK1xcdFxcdGxsYWRkciBcXFwiJG1hY19saXN0ZW5lclxcXCIgZGV2IFxcXCIke1JfVEFMS0VSX0VUSH0uJHtSX1ZMQU59XFxcIlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19MSVNURU5FUlxcXCIgaXAgbmVpZ2ggYWRkIFxcXCIkUl9JUF9UQUxLRVJcXFwiIFxcXFxcXG4rXFx0XFx0bGxhZGRyIFxcXCIkbWFjX3RhbGtlclxcXCIgICBkZXYgXFxcIiR7Ul9MSVNURU5FUl9FVEh9LiR7Ul9WTEFOfVxcXCJcXG4rXFxuK1xcdCMgYnJpZGdlMCAvIGJyMF91cGxpbmsgaW5ncmVzczogcHVzaCBSLVRBRyB0aGVuIHJlcGxpY2F0ZSB0byBib3RoIHJlZHVuZGFudCBwYXRocy5cXG4rXFx0IyBtaXJyb3IgbXVzdCBjb21lIGJlZm9yZSByZWRpcmVjdCBiZWNhdXNlIHJlZGlyZWN0IGlzIGEgdGVybWluYXRpbmcgYWN0aW9uLlxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UwXFxcIiAkVEMgcWRpc2MgYWRkIGRldiBcXFwiJFJfQlIwX1VQTElOS1xcXCIgY2xzYWN0XFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTBcXFwiICRUQyBmaWx0ZXIgYWRkIGRldiBcXFwiJFJfQlIwX1VQTElOS1xcXCIgaW5ncmVzcyBcXFxcXFxuK1xcdFxcdHByb3RvY29sIDgwMi4xUSBmbG93ZXIgc2tpcF9odyB2bGFuX2lkIFxcXCIkUl9WTEFOXFxcIiBcXFxcXFxuK1xcdFxcdGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggJElEWF9SRUxBWV9QVVNIIFxcXFxcXG4rXFx0XFx0YWN0aW9uIG1pcnJlZCBlZ3Jlc3MgbWlycm9yICBkZXYgXFxcIiRSX0JSMF9TV1AxXFxcIiBcXFxcXFxuK1xcdFxcdGFjdGlvbiBtaXJyZWQgZWdyZXNzIHJlZGlyZWN0IGRldiBcXFwiJFJfQlIwX1NXUDBcXFwiXFxuK1xcbitcXHQjIGJyaWRnZTEgLyBicjFfc3dwMCBpbmdyZXNzOiBjcmVhdGUgc2hhcmVkIHJlY292ZXIgYWN0aW9uICh0YWctcG9wKVxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiAkVEMgcWRpc2MgYWRkIGRldiBcXFwiJFJfQlIxX1NXUDBcXFwiIGNsc2FjdFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXFxcIiRSX0JSMV9TV1AwXFxcIiBpbmdyZXNzIFxcXFxcXG4rXFx0XFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXFxcXG4rXFx0XFx0YWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXFxcXG4rXFx0XFx0XFx0cmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9SRUxBWV9SQ1ZZIFxcXFxcXG4rXFx0XFx0YWN0aW9uIG1pcnJlZCBlZ3Jlc3MgcmVkaXJlY3QgZGV2IFxcXCIkUl9CUjFfRE9XTkxJTktcXFwiXFxuK1xcbitcXHQjIGJyaWRnZTEgLyBicjFfc3dwMSBpbmdyZXNzOiBiaW5kIHRvIHRoZSBzYW1lIHNoYXJlZCByZWNvdmVyIGFjdGlvblxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiAkVEMgcWRpc2MgYWRkIGRldiBcXFwiJFJfQlIxX1NXUDFcXFwiIGNsc2FjdFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXFxcIiRSX0JSMV9TV1AxXFxcIiBpbmdyZXNzIFxcXFxcXG4rXFx0XFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXFxcXG4rXFx0XFx0YWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAkSURYX1JFTEFZX1JDVlkgXFxcXFxcbitcXHRcXHRhY3Rpb24gbWlycmVkIGVncmVzcyByZWRpcmVjdCBkZXYgXFxcIiRSX0JSMV9ET1dOTElOS1xcXCJcXG4rXFxuK1xcdCMgYnJpZGdlMSAvIGJyMV9kb3dubGluayBpbmdyZXNzOiByZWRpcmVjdCBWTEFOIDEwMCByZXBsaWVzIGRpcmVjdGx5IHRvIGJyMV9zd3AwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX0JSSURHRTFcXFwiICRUQyBxZGlzYyBhZGQgZGV2IFxcXCIkUl9CUjFfRE9XTkxJTktcXFwiIGNsc2FjdFxcbitcXHRpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXFxcIiRSX0JSMV9ET1dOTElOS1xcXCIgaW5ncmVzcyBcXFxcXFxuK1xcdFxcdHByb3RvY29sIDgwMi4xUSBmbG93ZXIgc2tpcF9odyB2bGFuX2lkIFxcXCIkUl9WTEFOXFxcIiBcXFxcXFxuK1xcdFxcdGFjdGlvbiBtaXJyZWQgZWdyZXNzIHJlZGlyZWN0IGRldiBcXFwiJFJfQlIxX1NXUDBcXFwiXFxuK1xcbitcXHQjIENhcHR1cmUgSUNNUCBlY2hvLXJlcXVlc3RzIG9uIGxpc3RlbmVyX2V0aC5WTEFOIHRvIHZlcmlmeSBleGFjdGx5XFxuK1xcdCMgUElOR19DT1VOVCBkZWR1cGxpY2F0ZWQgZnJhbWVzIHJlYWNoIHRoZSBsaXN0ZW5lciBhZnRlciByZWNvdmVyeS5cXG4rXFx0bG9jYWwgcGNhcCBjYXBfY291bnRcXG4rXFx0cGNhcD0kKG1rdGVtcCAvdG1wL2ZyZXJfcmVsYXlfWFhYWFhYLnBjYXApXFxuK1xcdGNhcHR1cmVfc3RhcnRfb24gXFxcIiRSX05TX0xJU1RFTkVSXFxcIiBcXFwiJHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59XFxcIiBcXFxcXFxuK1xcdFxcdFxcXCIkcGNhcFxcXCIgXFxcImljbXBbaWNtcHR5cGVdID09IGljbXAtZWNob1xcXCJcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgXFxcIiRSX05TX1RBTEtFUlxcXCIgXFxcXFxcbitcXHRcXHQkUElORyAtYyBcXFwiJFBJTkdfQ09VTlRcXFwiIC1XIFxcXCIkUElOR19USU1FT1VUXFxcIiAtaSAwLjIgLXEgXFxcXFxcbitcXHRcXHRcXFwiJFJfSVBfTElTVEVORVJcXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSB8fCBwaW5nX3JjPSQ/XFxuK1xcbitcXHRjYXB0dXJlX3N0b3BcXG4rXFx0Y2FwX2NvdW50PSQoY2FwdHVyZV9jb3VudF9vbiBcXFwiJFJfTlNfTElTVEVORVJcXFwiIFxcXCIkcGNhcFxcXCIpXFxuK1xcdHJtIC1mIFxcXCIkcGNhcFxcXCJcXG4rXFxuK1xcdGR1bXBfYnIxX3N3cDA9JChpcCBuZXRucyBleGVjIFxcXCIkUl9OU19CUklER0UxXFxcIiBcXFxcXFxuK1xcdFxcdCRUQyAtcyBmaWx0ZXIgc2hvdyBkZXYgXFxcIiRSX0JSMV9TV1AwXFxcIiBpbmdyZXNzIDJcXHUwMDNlL2Rldi9udWxsKVxcbitcXG4rXFx0dGVhcmRvd25fcmVsYXlfdGNcXG4rXFx0Zm9yIG5zIGluIFxcXCIkUl9OU19UQUxLRVJcXFwiIFxcXCIkUl9OU19CUklER0UwXFxcIiBcXFwiJFJfTlNfQlJJREdFMVxcXCIgXFxcIiRSX05TX0xJU1RFTkVSXFxcIjsgZG9cXG4rXFx0XFx0aXAgbmV0bnMgZGVsIFxcXCIkbnNcXFwiIDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXG4rXFx0ZG9uZVxcbitcXG4rXFx0dG90YWxfcGFzc2VkPSQodGNfc3RhdCAgICBcXFwiJGR1bXBfYnIxX3N3cDBcXFwiIFxcXCJwYXNzZWRcXFwiKVxcbitcXHR0b3RhbF9kaXNjYXJkZWQ9JCh0Y19zdGF0IFxcXCIkZHVtcF9icjFfc3dwMFxcXCIgXFxcImRpc2NhcmRlZFxcXCIpXFxuK1xcdGxvY2FsIHRhZ2xlc3NcXG4rXFx0dGFnbGVzcz0kKHRjX3N0YXQgICAgICAgICBcXFwiJGR1bXBfYnIxX3N3cDBcXFwiIFxcXCJ0YWdsZXNzXFxcIilcXG4rXFx0dG90YWxfZGlzY2FyZGVkPSQoKHRvdGFsX2Rpc2NhcmRlZCAtIHRhZ2xlc3MpKVxcbitcXG4rXFx0ZWNobyBcXFwiIyByZWxheSBlMmU6IHBpbmdfcmM9JHBpbmdfcmMgY2FwPSRjYXBfY291bnRcXFwiIFxcXFxcXG4rXFx0XFx0XFxcInBhc3NlZD0kdG90YWxfcGFzc2VkIGRpc2NhcmRlZD0kdG90YWxfZGlzY2FyZGVkXFxcIlxcbitcXG4rXFx0WyBcXFwiJHBpbmdfcmNcXFwiICAgICAgICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFx0WyBcXFwiJGNhcF9jb3VudFxcXCIgICAgICAgLWVxIFxcXCIkUElOR19DT1VOVFxcXCIgXSB8fCByZXN1bHQ9XFxcImZhaWxcXFwiXFxuK1xcdFsgXFxcIiR0b3RhbF9wYXNzZWRcXFwiICAgIC1nZSBcXFwiJFBJTkdfQ09VTlRcXFwiIF0gfHwgcmVzdWx0PVxcXCJmYWlsXFxcIlxcbitcXHRbIFxcXCIkdG90YWxfZGlzY2FyZGVkXFxcIiAtZ2UgXFxcIiRQSU5HX0NPVU5UXFxcIiBdIHx8IHJlc3VsdD1cXFwiZmFpbFxcXCJcXG4rXFxuK1xcdGlmIFsgXFxcIiRyZXN1bHRcXFwiID0gXFxcInBhc3NcXFwiIF07IHRoZW5cXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzIFxcXFxcXG4rXFx0XFx0XFx0XFxcInJlbGF5IGUyZTogcGluZyBPSywgY2FwPSRjYXBfY291bnQgXFxcIiBcXFxcXFxuK1xcdFxcdFxcdFxcXCJwYXNzZWQ9JHRvdGFsX3Bhc3NlZCBkaXNjYXJkZWQ9JHRvdGFsX2Rpc2NhcmRlZFxcXCJcXG4rXFx0ZWxzZVxcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXFxcXFxcbitcXHRcXHRcXHRcXFwicmVsYXkgZTJlOiBwaW5nX3JjPSRwaW5nX3JjIGNhcD0kY2FwX2NvdW50IFxcXCIgXFxcXFxcbitcXHRcXHRcXHRcXFwicGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWRcXFwiIFxcXFxcXG4rXFx0XFx0XFx0XFxcIihleHBlY3RlZCBwaW5nIE9LLCBjYXA9JFBJTkdfQ09VTlQsXFxcIiBcXFxcXFxuK1xcdFxcdFxcdFxcXCJwYXNzZWRcXHUwMDNlPSRQSU5HX0NPVU5ULCBkaXNjYXJkZWRcXHUwMDNlPSRQSU5HX0NPVU5UKVxcXCJcXG4rXFx0ZmlcXG4rfVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgTWFpblxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rbWFpbigpXFxuK3tcXG4rXFx0a3NmdF9wcmludF9oZWFkZXJcXG4rXFx0Y2hlY2tfcHJlcmVxdWlzaXRlc1xcbitcXHRsb2FkX21vZHVsZVxcbitcXHRzZXR1cF90b3BvbG9neVxcbitcXG4rXFx0aWYgISBjaGVja19mcmVyX2FjdGlvbjsgdGhlblxcbitcXHRcXHRrc2Z0X3NldF9wbGFuIFxcXCIkTlVNX1RFU1RTXFxcIlxcbitcXHRcXHRmb3IgaSBpbiAkKHNlcSAxIFxcXCIkTlVNX1RFU1RTXFxcIik7IGRvXFxuK1xcdFxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcXCJmcmVyIGFjdGlvbiBub3QgYXZhaWxhYmxlIGluIHRoaXMga2VybmVsICh0ZXN0ICRpKVxcXCJcXG4rXFx0XFx0ZG9uZVxcbitcXHRcXHRrc2Z0X3ByaW50X2NudHNcXG4rXFx0XFx0ZXhpdCBcXFwiJEtTRlRfU0tJUFxcXCJcXG4rXFx0ZmlcXG4rXFxuK1xcdGtzZnRfc2V0X3BsYW4gXFxcIiROVU1fVEVTVFNcXFwiXFxuK1xcbitcXHR0ZXN0X3B1c2hfdmVyaWZ5X2JvbmQgICAgICAgICMgVEVTVCAxOiBwdXNoIG9uIGEwL2IwLCBubyByZWNvdmVyLCBSLVRBRyBvbiBib3RoIHBhdGhzXFxuK1xcdHRlc3Rfc2hhcmVkX3JlY292ZXJfYm9uZCAgICAgIyBURVNUIDI6IHNoYXJlZCByZWNvdmVyLCBkZWR1cCwgcGluZyBzdWNjZWVkc1xcbitcXHR0ZXN0X2luZGl2aWR1YWxfcmVjb3Zlcl9ib25kICMgVEVTVCAzOiBpbmRpdmlkdWFsIHJlY292ZXIsIG5vIGRlZHVwLCBkb3VibGUgZnJhbWVzXFxuK1xcdHRlc3Rfbm9fdGFnX3BvcF9ib25kICAgICAgICAgIyBURVNUIDQ6IHNoYXJlZCByZWNvdmVyIHdpdGhvdXQgdGFnLXBvcCwgUi1UQUcgcHJlc2VydmVkXFxuK1xcdHRlc3Rfc2ltcGxlX3BvaW50X3RvX3BvaW50ICAgIyBURVNUIDU6IHNpbmdsZS1wYXRoIHAycCwgbm8gYm9uZFxcbitcXHR0ZXN0X3JlbGF5X2UyZSAgICAgICAgICAgICAgICMgVEVTVCA2OiByZWxheSBicmlkZ2UgdG9wb2xvZ3lcXG4rXFxuK1xcdGtzZnRfcHJpbnRfY250c1xcbitcXG4rXFx0WyBcXFwiJF9rc2Z0X2ZhaWxcXFwiIC1lcSAwIF0gXFx1MDAyNlxcdTAwMjYga3NmdF9leGl0X3Bhc3MgfHwga3NmdF9leGl0X2ZhaWxcXG4rfVxcbitcXG4rbWFpbiBcXFwiJEBcXFwiXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9mcmVyLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL2FjdGlvbnMvZnJlci5qc29uXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZDViZTZhZTE1NmY3OTRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2ZyZXIuanNvblxcbkBAIC0wLDAgKzEsNzg1IEBAXFxuK1tcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDAxXFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkNyZWF0ZSBmcmVyIHB1c2ggYWN0aW9uIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXJzXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAwMlxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgZnJlciBwdXNoIGFjdGlvbiB3aXRoIGV4cGxpY2l0IHRhZy10eXBlIHJ0YWdcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF1cXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMlxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMlxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcHVzaCB0YWctdHlwZSBydGFnIGluZGV4IDJcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCJcXG4rICAgIF1cXG4rICB9LFxcbisgIHtcXG4rICAgIFxcXCJpZFxcXCI6IFxcXCJmcmVyXzAwMDNcXFwiLFxcbisgICAgXFxcIm5hbWVcXFwiOiBcXFwiQ3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBkZWZhdWx0IHBhcmFtZXRlcnNcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF1cXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwXFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEwIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggWzAtOV0rIHJlc2V0LXRpbWUgWzAtOV0rXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjFcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDA0XFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggdmVjdG9yIGFsZ29yaXRobSBleHBsaWNpdFxcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXVxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBpbmRleCAxMVxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTFcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxMSBhbGcgdmVjdG9yXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjFcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDA1XFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggbWF0Y2ggYWxnb3JpdGhtXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgbWF0Y2ggaW5kZXggMTJcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEyXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTIgYWxnIG1hdGNoXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjFcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDA2XFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggaGlzdG9yeS1sZW5ndGggMTZcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF1cXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgaW5kZXggMTNcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEzXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTMgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNlxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAwN1xcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHJlc2V0LXRpbWUgMjAwMFxcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXVxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciByZXNldC10aW1lIDIwMDAgaW5kZXggMTRcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDE0XFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTQgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCBbMC05XSsgcmVzZXQtdGltZSAyMDAwXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjFcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDA4XFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggdGFnLXBvcCBmbGFnXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciB0YWctcG9wIGluZGV4IDE1XFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxNVxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDE1Lip0YWctcG9wXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjFcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDA5XFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggaW5kaXZpZHVhbCBmbGFnXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRpdmlkdWFsIGluZGV4IDE2XFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxNlxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDE2LippbmRpdmlkdWFsXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjFcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDEwXFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggdGFrZS1uby1zZXEgZmxhZ1xcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXVxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgdGFrZS1uby1zZXEgaW5kZXggMTdcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDE3XFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTcuKnRha2Utbm8tc2VxXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjFcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDExXFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggYWxsIHBhcmFtZXRlcnMgY29tYmluZWRcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF1cXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwIHRhZy1wb3AgaW5kaXZpZHVhbCBpbmRleCAyMFxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMjBcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAyMCBpbmRpdmlkdWFsIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwIHRhZy1wb3BcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCJcXG4rICAgIF1cXG4rICB9LFxcbisgIHtcXG4rICAgIFxcXCJpZFxcXCI6IFxcXCJmcmVyXzAwMTJcXFwiLFxcbisgICAgXFxcIm5hbWVcXFwiOiBcXFwiQ3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBtYXRjaCBhbGcgYW5kIGFsbCBmbGFnc1xcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXVxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIG1hdGNoIHRha2Utbm8tc2VxIHRhZy1wb3AgaW5kaXZpZHVhbCBpbmRleCAyMVxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMjFcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAyMSBpbmRpdmlkdWFsIGFsZyBtYXRjaCBoaXN0b3J5LWxlbmd0aCBbMC05XSsgcmVzZXQtdGltZSBbMC05XSsgdGFnLXBvcCB0YWtlLW5vLXNlcVxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAxM1xcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJTaG93IGZyZXIgcHVzaCBhY3Rpb24gU2VxR2VuIHN0YXRpc3RpY3MgKHplcm8gYWZ0ZXIgY3JlYXRlKVxcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXSxcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJTZXFHZW4gcGFja2V0czogMFxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAxNFxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJTaG93IGZyZXIgcmVjb3ZlciBhY3Rpb24gU3RhdGlzdGljcyBsaW5lICh6ZXJvIGFmdGVyIGNyZWF0ZSlcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF0sXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IHJlc2V0LXRpbWUgMTAwMCB0YWctcG9wIGluZGV4IDEwXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIC1zIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyAtcyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJTdGF0aXN0aWNzOiBwYXNzZWQ9MCBkaXNjYXJkZWQ9MCB0YWdsZXNzPTAgb3V0LW9mLW9yZGVyPTAgcm9ndWU9MCBsb3N0PTAgcmVzZXRzPTBcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCJcXG4rICAgIF1cXG4rICB9LFxcbisgIHtcXG4rICAgIFxcXCJpZFxcXCI6IFxcXCJmcmVyXzAwMTVcXFwiLFxcbisgICAgXFxcIm5hbWVcXFwiOiBcXFwiU2hvdyBmcmVyIHJlY292ZXIgYWN0aW9uIFN0YXRpc3RpY3MgZmllbGRzIHByZXNlbnRcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF0sXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAxMFxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyAtcyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiU3RhdGlzdGljczogcGFzc2VkPVswLTldKyBkaXNjYXJkZWQ9WzAtOV0rIHRhZ2xlc3M9WzAtOV0rIG91dC1vZi1vcmRlcj1bMC05XSsgcm9ndWU9WzAtOV0rIGxvc3Q9WzAtOV0rIHJlc2V0cz1bMC05XStcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCJcXG4rICAgIF1cXG4rICB9LFxcbisgIHtcXG4rICAgIFxcXCJpZFxcXCI6IFxcXCJmcmVyXzAwMTZcXFwiLFxcbisgICAgXFxcIm5hbWVcXFwiOiBcXFwiUmVwbGFjZSBmcmVyIHB1c2ggYWN0aW9uIChzYW1lIGluZGV4KVxcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXSxcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyByZXBsYWNlIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcHVzaCB0YWctdHlwZSBydGFnIGluZGV4IDFcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCJcXG4rICAgIF1cXG4rICB9LFxcbisgIHtcXG4rICAgIFxcXCJpZFxcXCI6IFxcXCJmcmVyXzAwMTdcXFwiLFxcbisgICAgXFxcIm5hbWVcXFwiOiBcXFwiUmVwbGFjZSBmcmVyIHJlY292ZXIgYWN0aW9uIGNoYW5naW5nIGFsZ29yaXRobSBmcm9tIHZlY3RvciB0byBtYXRjaFxcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXSxcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaW5kZXggMTBcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyByZXBsYWNlIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIG1hdGNoIGluZGV4IDEwXFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEwIGFsZyBtYXRjaFxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAxOFxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJEZWxldGUgZnJlciBwdXNoIGFjdGlvbiBieSBpbmRleFxcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXSxcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBkZWwgYWN0aW9uIGZyZXIgaW5kZXggMVxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXJcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJmcmVyIHB1c2ggdGFnLXR5cGUgcnRhZyBpbmRleCAxXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDE5XFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkZsdXNoIGFsbCBmcmVyIGFjdGlvbnNcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF0sXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXFxcIixcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwXFxcIixcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDExXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlclxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXFwiXFxuKyAgICBdXFxuKyAgfSxcXG4rICB7XFxuKyAgICBcXFwiaWRcXFwiOiBcXFwiZnJlcl8wMDIwXFxcIixcXG4rICAgIFxcXCJuYW1lXFxcIjogXFxcIkFkZCBkdXBsaWNhdGUgZnJlciBhY3Rpb24gaW5kZXggZmFpbHMgd2l0aG91dCByZXBsYWNlIGZsYWdcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF0sXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMjU1XFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAyMVxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgZnJlciBwdXNoIGFjdGlvbiB3aXRoIGNvbnRpbnVlIGNvbnRyb2wgYWN0aW9uXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxIGNvbnRpbnVlXFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMS4qY29udHJvbCBjb250aW51ZVxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAyMlxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHBpcGUgY29udHJvbCBhY3Rpb25cXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF1cXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwIHBpcGVcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTAuKmNvbnRyb2wgcGlwZVxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAyM1xcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiBoaXN0b3J5LWxlbmd0aCBtaW5pbXVtIGJvdW5kYXJ5ICgxKVxcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXVxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxIGluZGV4IDMwXFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAzMFxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDMwIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMVxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAyNFxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiBoaXN0b3J5LWxlbmd0aCBtYXhpbXVtIGJvdW5kYXJ5ICgzMilcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF1cXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMzIgaW5kZXggMzFcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDMxXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMzEgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAzMlxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAyNVxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHJlc2V0LXRpbWUgMCAodGltZXIgZGlzYWJsZWQpXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIHJlc2V0LXRpbWUgMCBpbmRleCAzMlxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMzJcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAzMiBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIFswLTldKyByZXNldC10aW1lIDBcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCJcXG4rICAgIF1cXG4rICB9LFxcbisgIHtcXG4rICAgIFxcXCJpZFxcXCI6IFxcXCJmcmVyXzAwMjZcXFwiLFxcbisgICAgXFxcIm5hbWVcXFwiOiBcXFwiTGlzdCBhbGwgZnJlciBhY3Rpb25zIHNob3dzIGNvcnJlY3QgY291bnRcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF0sXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXFxcIixcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaW5kZXggMTBcXFwiLFxcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIG1hdGNoIHRhZy1wb3AgaW5kZXggMTFcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyXFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlclxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXJcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiM1xcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCJcXG4rICAgIF1cXG4rICB9LFxcbisgIHtcXG4rICAgIFxcXCJpZFxcXCI6IFxcXCJmcmVyXzAwMjdcXFwiLFxcbisgICAgXFxcIm5hbWVcXFwiOiBcXFwiQmluZCBmcmVyIHB1c2ggYWN0aW9uIHRvIGVncmVzcyBjbHNhY3QgZmlsdGVyXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdLFxcbisgICAgICBcXFwiaXAgbGluayBkZWwgZnJlcl9kdW1teSAyXFx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXFxcIixcXG4rICAgICAgXFxcImlwIGxpbmsgYWRkIGZyZXJfZHVtbXkgdHlwZSBkdW1teVxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIHNldCBmcmVyX2R1bW15IHVwXFxcIixcXG4rICAgICAgXFxcIiRUQyBxZGlzYyBhZGQgZGV2IGZyZXJfZHVtbXkgY2xzYWN0XFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGZpbHRlciBhZGQgZGV2IGZyZXJfZHVtbXkgZWdyZXNzIHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBmaWx0ZXIgc2hvdyBkZXYgZnJlcl9kdW1teSBlZ3Jlc3NcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJmcmVyIHB1c2ggdGFnLXR5cGUgcnRhZyBpbmRleCAxXFxcIixcXG4rICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjFcXFwiLFxcbisgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgZnJlcl9kdW1teSBjbHNhY3RcXFwiLFxcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcXFwiLFxcbisgICAgICBcXFwiaXAgbGluayBkZWwgZnJlcl9kdW1teVxcXCJcXG4rICAgIF1cXG4rICB9LFxcbisgIHtcXG4rICAgIFxcXCJpZFxcXCI6IFxcXCJmcmVyXzAwMjhcXFwiLFxcbisgICAgXFxcIm5hbWVcXFwiOiBcXFwiQmluZCBmcmVyIHJlY292ZXIgYWN0aW9uIHRvIGluZ3Jlc3MgY2xzYWN0IGZpbHRlclxcXCIsXFxuKyAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgIFxcXCJhY3Rpb25zXFxcIixcXG4rICAgICAgXFxcImZyZXJcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICBbXFxuKyAgICAgICAgXFxcIm1vZHByb2JlIGFjdF9mcmVyXFxcIixcXG4rICAgICAgICAwLFxcbisgICAgICAgIDFcXG4rICAgICAgXSxcXG4rICAgICAgXFxcImlwIGxpbmsgZGVsIGZyZXJfZHVtbXkgMlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIGFkZCBmcmVyX2R1bW15IHR5cGUgZHVtbXlcXFwiLFxcbisgICAgICBcXFwiaXAgbGluayBzZXQgZnJlcl9kdW1teSB1cFxcXCIsXFxuKyAgICAgIFxcXCIkVEMgcWRpc2MgYWRkIGRldiBmcmVyX2R1bW15IGNsc2FjdFxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBmaWx0ZXIgYWRkIGRldiBmcmVyX2R1bW15IGluZ3Jlc3MgcHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiByZXNldC10aW1lIDEwMDAgdGFnLXBvcCBpbmRleCAxMFxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBmaWx0ZXIgc2hvdyBkZXYgZnJlcl9kdW1teSBpbmdyZXNzXFxcIixcXG4rICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwiZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTAgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiByZXNldC10aW1lIDEwMDBcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiBmcmVyX2R1bW15IGNsc2FjdFxcXCIsXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIGRlbCBmcmVyX2R1bW15XFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAyOVxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJTaGFyZSBmcmVyIHJlY292ZXIgYWN0aW9uIGFjcm9zcyB0d28gaW5ncmVzcyBmaWx0ZXJzIChyZWZjb3VudCBjaGVjaylcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF0sXFxuKyAgICAgIFxcXCJpcCBsaW5rIGRlbCBmcmVyX2EgMlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIGRlbCBmcmVyX2IgMlxcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIGFkZCBmcmVyX2EgdHlwZSBkdW1teVxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIGFkZCBmcmVyX2IgdHlwZSBkdW1teVxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIHNldCBmcmVyX2EgdXBcXFwiLFxcbisgICAgICBcXFwiaXAgbGluayBzZXQgZnJlcl9iIHVwXFxcIixcXG4rICAgICAgXFxcIiRUQyBxZGlzYyBhZGQgZGV2IGZyZXJfYSBjbHNhY3RcXFwiLFxcbisgICAgICBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgZnJlcl9iIGNsc2FjdFxcXCIsXFxuKyAgICAgIFxcXCIkVEMgZmlsdGVyIGFkZCBkZXYgZnJlcl9hIGluZ3Jlc3MgcHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiB0YWctcG9wIGluZGV4IDEwXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIGZpbHRlciBhZGQgZGV2IGZyZXJfYiBpbmdyZXNzIHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwXFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIC1zIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcInJlZiBbMi05XVswLTldKlxcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2IGZyZXJfYSBjbHNhY3RcXFwiLFxcbisgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgZnJlcl9iIGNsc2FjdFxcXCIsXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIGRlbCBmcmVyX2FcXFwiLFxcbisgICAgICBcXFwiaXAgbGluayBkZWwgZnJlcl9iXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAzMFxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJmcmVyIHB1c2ggYWN0aW9uIHJlZmNvdW50IGluY3JlbWVudHMgd2hlbiBib3VuZCB0byBmaWx0ZXJcXFwiLFxcbisgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICBcXFwiYWN0aW9uc1xcXCIsXFxuKyAgICAgIFxcXCJmcmVyXFxcIlxcbisgICAgXSxcXG4rICAgIFxcXCJzZXR1cFxcXCI6IFtcXG4rICAgICAgW1xcbisgICAgICAgIFxcXCJtb2Rwcm9iZSBhY3RfZnJlclxcXCIsXFxuKyAgICAgICAgMCxcXG4rICAgICAgICAxXFxuKyAgICAgIF0sXFxuKyAgICAgIFxcXCJpcCBsaW5rIGRlbCBmcmVyX2R1bW15IDJcXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcXFwiLFxcbisgICAgICBcXFwiaXAgbGluayBhZGQgZnJlcl9kdW1teSB0eXBlIGR1bW15XFxcIixcXG4rICAgICAgXFxcImlwIGxpbmsgc2V0IGZyZXJfZHVtbXkgdXBcXFwiLFxcbisgICAgICBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgZnJlcl9kdW1teSBjbHNhY3RcXFwiLFxcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBmaWx0ZXIgYWRkIGRldiBmcmVyX2R1bW15IGVncmVzcyBwcm90b2NvbCBpcCBmbG93ZXIgc2tpcF9odyBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcXFwiLFxcbisgICAgXFxcImV4cEV4aXRDb2RlXFxcIjogXFxcIjBcXFwiLFxcbisgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcXFwiLFxcbisgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJyZWYgWzItOV1bMC05XSpcXFwiLFxcbisgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMVxcXCIsXFxuKyAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgIFxcXCIkVEMgcWRpc2MgZGVsIGRldiBmcmVyX2R1bW15IGNsc2FjdFxcXCIsXFxuKyAgICAgIFxcXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclxcXCIsXFxuKyAgICAgIFxcXCJpcCBsaW5rIGRlbCBmcmVyX2R1bW15XFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAzMVxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJmcmVyIHB1c2ggb3V0cHV0IHNob3dzIG5vdF9pbl9odyBmbGFnXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdLFxcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwiY21kVW5kZXJUZXN0XFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVxcXCIsXFxuKyAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcIm5vdF9pbl9od1xcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH0sXFxuKyAge1xcbisgICAgXFxcImlkXFxcIjogXFxcImZyZXJfMDAzMlxcXCIsXFxuKyAgICBcXFwibmFtZVxcXCI6IFxcXCJmcmVyIHJlY292ZXIgb3V0cHV0IHNob3dzIG5vdF9pbl9odyBmbGFnXFxcIixcXG4rICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgXFxcImFjdGlvbnNcXFwiLFxcbisgICAgICBcXFwiZnJlclxcXCJcXG4rICAgIF0sXFxuKyAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgIFtcXG4rICAgICAgICBcXFwibW9kcHJvYmUgYWN0X2ZyZXJcXFwiLFxcbisgICAgICAgIDAsXFxuKyAgICAgICAgMVxcbisgICAgICBdLFxcbisgICAgICBcXFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggMTBcXFwiXFxuKyAgICBdLFxcbisgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXFxcIixcXG4rICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgIFxcXCJ2ZXJpZnlDbWRcXFwiOiBcXFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFxcXCIsXFxuKyAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcIm5vdF9pbl9od1xcXCIsXFxuKyAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgXFxcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXFxcIlxcbisgICAgXVxcbisgIH1cXG4rXVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwOTo0MDo1Ny44MzIyODU5NDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MjQyMTAxNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9BQ1RfRlJFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9mcmVyX2luaXRcIixcbiAgICBcInRjZl9mcmVyX2FjdFwiLFxuICAgIFwidGNmX2ZyZXJfZHVtcFwiLFxuICAgIFwidGNmX2ZyZXJfY2xlYW51cFwiLFxuICAgIFwiZnJlcl9ydGFnX3B1c2hcIixcbiAgICBcImZyZXJfcnRhZ19wb3BcIixcbiAgICBcImZyZXJfcnRhZ19kZWNvZGVcIixcbiAgICBcImZyZXJfdmVjdG9yX2FsZ1wiLFxuICAgIFwiZnJlcl9tYXRjaF9hbGdcIixcbiAgICBcImZyZXJfcmN2eV9ocnRpbWVyX2ZuXCIsXG4gICAgXCJmcmVyX3JjdnlfcmVzZXRfd29ya19mblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBgYWN0X2ZyZXJgIGZvciBJRUVFIDgwMi4xQ0IgRlJFUi4gSXQgaW5jbHVkZXMgcGFja2V0IG1hbmlwdWxhdGlvbiAocHVzaC9wb3Agb2YgUi1UQUcpIGFuZCBzZXF1ZW5jZSByZWNvdmVyeSBhbGdvcml0aG1zLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwOWQ5ZjYyMDc5MGZjMjllZWNhMDBmNTliYTliNmNhZDVlMGFkNjJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDk6NDA6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaCBiL2luY2x1ZGUvbmV0L2Zsb3dfb2ZmbG9hZC5oXG5pbmRleCA3MGEwMmVlMTQzMDgwNy4uOGQ5N2E1ZjI5M2U2ZDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9mbG93X29mZmxvYWQuaFxuKysrIGIvaW5jbHVkZS9uZXQvZmxvd19vZmZsb2FkLmhcbkBAIC0xODQsNiArMTg0LDcgQEAgZW51bSBmbG93X2FjdGlvbl9pZCB7XG4gXHRGTE9XX0FDVElPTl9WTEFOX1BVU0hfRVRILFxuIFx0RkxPV19BQ1RJT05fVkxBTl9QT1BfRVRILFxuIFx0RkxPV19BQ1RJT05fQ09OVElOVUUsXG4rXHRGTE9XX0FDVElPTl9GUkVSLFxuIFx0TlVNX0ZMT1dfQUNUSU9OUyxcbiB9O1xuIFxuQEAgLTMyOSw2ICszMzAsMTYgQEAgc3RydWN0IGZsb3dfYWN0aW9uX2VudHJ5IHtcbiBcdFx0c3RydWN0IHtcdFx0XHRcdC8qIEZMT1dfQUNUSU9OX1BQUE9FX1BVU0ggKi9cbiBcdFx0XHR1MTZcdFx0c2lkO1xuIFx0XHR9IHBwcG9lO1xuK1x0XHRzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxPV19BQ1RJT05fRlJFUiAqL1xuK1x0XHRcdHU4XHRcdGZ1bmM7XG4rXHRcdFx0dThcdFx0dGFnX3R5cGU7XG4rXHRcdFx0Ym9vbFx0XHRpbmRpdmlkdWFsO1xuK1x0XHRcdHU4XHRcdHJjdnlfYWxnO1xuK1x0XHRcdHU4XHRcdHJjdnlfaGlzdG9yeV9sZW47XG4rXHRcdFx0dTMyXHRcdHJjdnlfcmVzZXRfbXNlYztcbitcdFx0XHRib29sXHRcdHRhZ19wb3A7XG4rXHRcdFx0Ym9vbFx0XHR0YWtlX25vX3NlcTtcbitcdFx0fSBmcmVyO1xuIFx0fTtcbiBcdHN0cnVjdCBmbG93X2FjdGlvbl9jb29raWUgKnVzZXJfY29va2llOyAvKiB1c2VyIGRlZmluZWQgYWN0aW9uIGNvb2tpZSAqL1xuIH07XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2ZyZXIuaCBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19mcmVyLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNWY2ZjhjYTcwODEzYTBcbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19mcmVyLmhcbkBAIC0wLDAgKzEsNzEgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqL1xuKy8qIENvcHlyaWdodCAyMDI2IE5YUCAqL1xuK1xuKyNpZm5kZWYgX19ORVRfVENfRlJFUl9IXG4rI2RlZmluZSBfX05FVF9UQ19GUkVSX0hcbitcbisjaW5jbHVkZSBcdTAwM2NuZXQvYWN0X2FwaS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdGNfYWN0L3RjX2ZyZXIuaFx1MDAzZVxuK1xuKy8qKlxuKyAqIHN0cnVjdCBmcmVyX3NlcWdlbiAtIHNlcXVlbmNlIG51bWJlciBnZW5lcmF0b3Igc3RhdGUgKGVtYmVkZGVkIGluIHRjZl9mcmVyKVxuKyAqL1xuK3N0cnVjdCBmcmVyX3NlcWdlbiB7XG4rXHR1MzJcdFx0Z2VuX3NlcV9udW07XG4rXHR1NjRcdFx0c2VxX3NwYWNlO1x0LyogMSBcdTAwM2NcdTAwM2MgMTYgKi9cbitcdHNwaW5sb2NrX3RcdGxvY2s7XHRcdC8qIHByb3RlY3RzIGZyZXJfc2VxZ2VuIHN0YXRlICovXG4rXHR1NjRcdFx0c3RhdHNfcGt0cztcdC8qIGZyZXJDcHNTZXFHZW5QYWNrZXRzICovXG4rfTtcbitcbisvKipcbisgKiBzdHJ1Y3QgZnJlcl9yY3Z5IC0gc2VxdWVuY2UgcmVjb3Zlcnkgc3RhdGUgKGVtYmVkZGVkIGluIHRjZl9mcmVyKVxuKyAqXG4rICovXG4rc3RydWN0IGZyZXJfcmN2eSB7XG4rXHR1OFx0XHRhbGc7XG4rXHR1OFx0XHRoaXN0b3J5X2xlbjtcdC8qIDEtMzIgKi9cbitcdHUzMlx0XHRyZXNldF9tc2VjO1xuK1x0dTY0XHRcdHNlcV9zcGFjZTtcbitcdHUzMlx0XHRyY3Z5X3NlcV9udW07XG4rXHR1MzJcdFx0c2VxX2hpc3Rvcnk7XG4rXHRib29sXHRcdHRha2VfYW55O1xuK1x0Ym9vbFx0XHR0YWtlX25vX3NlcTtcbitcdHN0cnVjdCBocnRpbWVyXHRocnRpbWVyO1xuK1x0c3BpbmxvY2tfdFx0bG9jaztcdFx0LyogcHJvdGVjdHMgZnJlcl9yY3Z5IHN0YXRlICovXG4rXHQvKiBzdGF0aXN0aWNzICovXG4rXHR1NjRcdFx0c3RhdHNfdGFnbGVzc19wa3RzO1xuK1x0dTY0XHRcdHN0YXRzX291dF9vZl9vcmRlcl9wa3RzO1xuK1x0dTY0XHRcdHN0YXRzX3JvZ3VlX3BrdHM7XG4rXHR1NjRcdFx0c3RhdHNfbG9zdF9wa3RzO1xuK1x0dTY0XHRcdHN0YXRzX3Jlc2V0cztcbitcdHU2NFx0XHRzdGF0c19wYXNzZWRfcGt0cztcbitcdHU2NFx0XHRzdGF0c19kaXNjYXJkZWRfcGt0cztcbit9O1xuK1xuKy8qKlxuKyAqIHN0cnVjdCB0Y2ZfZnJlciAtIHBlciB0Y19hY3Rpb24gRlJFUiBwcml2YXRlIGRhdGFcbisgKi9cbitzdHJ1Y3QgdGNmX2ZyZXIge1xuK1x0c3RydWN0IHRjX2FjdGlvblx0Y29tbW9uO1xuK1x0dThcdFx0XHRmdW5jO1xuK1x0dThcdFx0XHR0YWdfdHlwZTtcbitcdGJvb2xcdFx0XHR0YWdfcG9wO1xuK1x0Ym9vbFx0XHRcdGluZGl2aWR1YWw7XHQvKiBJbmRpdmlkdWFsIFJlY292ZXJ5IGZsYWcgKi9cbitcdC8qIHB1c2ggcGF0aCAqL1xuK1x0c3RydWN0IGZyZXJfc2VxZ2VuXHRzZXFnZW47XG4rXHQvKiByZWNvdmVyIHBhdGggKi9cbitcdHN0cnVjdCBmcmVyX3JjdnlcdHJjdnk7XG4rfTtcbitcbisjZGVmaW5lIHRvX2ZyZXIoYSkgKChzdHJ1Y3QgdGNmX2ZyZXIgKikoYSkpXG4rXG4rc3RhdGljIGlubGluZSBib29sIGlzX3RjZl9mcmVyKGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEpXG4re1xuKyNpZmRlZiBDT05GSUdfTkVUX0NMU19BQ1RcbitcdGlmIChhLVx1MDAzZW9wcyBcdTAwMjZcdTAwMjYgYS1cdTAwM2VvcHMtXHUwMDNlaWQgPT0gVENBX0lEX0ZSRVIpXG4rXHRcdHJldHVybiB0cnVlO1xuKyNlbmRpZlxuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbisjZW5kaWYgLyogX19ORVRfVENfRlJFUl9IICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaFxuaW5kZXggZmI1ZWZjOGUwNmNjMTQuLjJkOTA5MDc4Y2RlMThkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmhcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oXG5AQCAtMTIyLDYgKzEyMiw3IEBAXG4gI2RlZmluZSBFVEhfUF9EU0FfODAyMVFcdDB4REFEQlx0XHQvKiBGYWtlIFZMQU4gSGVhZGVyIGZvciBEU0EgWyBOT1QgQU4gT0ZGSUNJQUxMWSBSRUdJU1RFUkVEIElEIF0gKi9cbiAjZGVmaW5lIEVUSF9QX0RTQV9BNVBTV1x0MHhFMDAxXHRcdC8qIEE1UFNXIFRhZyBWYWx1ZSBbIE5PVCBBTiBPRkZJQ0lBTExZIFJFR0lTVEVSRUQgSUQgXSAqL1xuICNkZWZpbmUgRVRIX1BfSUZFXHQweEVEM0VcdFx0LyogRm9yQ0VTIGludGVyLUZFIExGQiB0eXBlICovXG4rI2RlZmluZSBFVEhfUF9SVEFHXHQweEYxQzFcdFx0LyogUmVkdW5kYW5jeSBUYWcgKElFRUUgODAyLjFDQikgKi9cbiAjZGVmaW5lIEVUSF9QX0FGX0lVQ1YgICAweEZCRkJcdFx0LyogSUJNIGFmX2l1Y3YgWyBOT1QgQU4gT0ZGSUNJQUxMWSBSRUdJU1RFUkVEIElEIF0gKi9cbiAjZGVmaW5lIEVUSF9QX05YUF9ORVRDICAweEZEM0FcdFx0LyogTlhQIE5FVEMgRFNBIFsgTk9UIEFOIE9GRklDSUFMTFkgUkVHSVNURVJFRCBJRCBdICovXG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhcbmluZGV4IDI4ZDk0YjExZDFhYTE2Li45Yjg3ZjA0NTUxMTBkMyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhcbkBAIC0xMzksNiArMTM5LDcgQEAgZW51bSB0Y2FfaWQge1xuIFx0VENBX0lEX01QTFMsXG4gXHRUQ0FfSURfQ1QsXG4gXHRUQ0FfSURfR0FURSxcbitcdFRDQV9JRF9GUkVSLFxuIFx0Lyogb3RoZXIgYWN0aW9ucyBnbyBoZXJlICovXG4gXHRfX1RDQV9JRF9NQVggPSAyNTVcbiB9O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZnJlci5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19mcmVyLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjQxZTkwODI3ZTI2Mjhcbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZnJlci5oXG5AQCAtMCwwICsxLDg5IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovXG4rLyogQ29weXJpZ2h0IDIwMjYgTlhQICovXG4rXG4rI2lmbmRlZiBfX0xJTlVYX1RDX0ZSRVJfSFxuKyNkZWZpbmUgX19MSU5VWF9UQ19GUkVSX0hcbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wa3RfY2xzLmhcdTAwM2VcbitcbisvKiBCYXNlIHBhcmFtZXRlcnMgcGFzc2VkIGluIFRDQV9GUkVSX1BBUk1TICovXG4rc3RydWN0IHRjX2ZyZXIge1xuK1x0dGNfZ2VuO1xuK307XG4rXG4rLyoqXG4rICogZW51bSBUQ0FfRlJFUl8qIC0gbmV0bGluayBhdHRyaWJ1dGVzIGZvciB0aGUgRlJFUiB0YyBhY3Rpb25cbisgKlxuKyAqIEBUQ0FfRlJFUl9GVU5DOiAgICAgICAgICAgICBGdW5jdGlvbmFsIHN1Yi1jb21tYW5kICh0Y19mcmVyX2Z1bmMpLlxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnkuXG4rICogQFRDQV9GUkVSX1RBR19UWVBFOiAgICAgICAgIFJlZHVuZGFuY3kgdGFnIHR5cGUgKHRjX2ZyZXJfdGFnX3R5cGUpLlxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnkuXG4rICpcbisgKiBQdXNoLXNwZWNpZmljIGF0dHJpYnV0ZXMgKFRDQV9GUkVSX0ZVTkNfUFVTSCk6XG4rICogUmVjb3Zlci1zcGVjaWZpYyBhdHRyaWJ1dGVzIChUQ0FfRlJFUl9GVU5DX1JFQ09WRVIpOlxuKyAqIEBUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUw6ICBGbGFnLiBGb3JjZSBJbmRpdmlkdWFsIFJlY292ZXJ5LlxuKyAqIEBUQ0FfRlJFUl9SQ1ZZX0FMRzogICAgICAgICB1OC4gUmVjb3ZlcnkgYWxnb3JpdGhtICh0Y19mcmVyX3JjdnlfYWxnKS5cbisgKiBAVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTjogdTguIFNlcXVlbmNlSGlzdG9yeSB3aW5kb3cgc2l6ZSAoMS0zMikuXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcHMgdG8gZnJlclNlcVJjdnlIaXN0b3J5TGVuZ3RoLlxuKyAqIEBUQ0FfRlJFUl9SQ1ZZX1JFU0VUX01TRUM6ICB1MzIuIFJlc2V0IHRpbWVyIGluIG1pbGxpc2Vjb25kcy5cbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCBkaXNhYmxlcyB0aGUgdGltZXIuXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcHMgdG8gZnJlclNlcVJjdnlSZXNldE1TZWMuXG4rICogQFRDQV9GUkVSX1JDVllfVEFLRV9OT19TRVE6IEZsYWcuIEFjY2VwdCBmcmFtZXMgd2l0aG91dCBhIHJlZHVuZGFuY3lcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnIGFuZCBwYXNzIHRoZW0gdW5jb25kaXRpb25hbGx5LlxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBzIHRvIGZyZXJTZXFSY3Z5VGFrZU5vU2VxLlxuKyAqIEBUQ0FfRlJFUl9SQ1ZZX1RBR19QT1A6ICAgICBGbGFnLiBSZW1vdmUgdGhlIHJlZHVuZGFuY3kgdGFnIGZyb21cbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzIHRoYXQgcGFzcyB0aGUgcmVjb3ZlcnkgZnVuY3Rpb24uXG4rICpcbisgKiBSZWFkLW9ubHkgc3RhdGlzdGljcyAoZmlsbGVkIG9uIGR1bXAsIElFRUUgODAyLjFDQiBUYWJsZSAxMC0xKTpcbisgKiBAVENBX0ZSRVJfU1RBVFNfVEFHTEVTU19QS1RTOiAgICAgICBmcmVyQ3BzU2VxUmN2eVRhZ2xlc3NQYWNrZXRzXG4rICogQFRDQV9GUkVSX1NUQVRTX09VVF9PRl9PUkRFUl9QS1RTOiAgZnJlckNwc1NlcVJjdnlPdXRPZk9yZGVyUGFja2V0c1xuKyAqIEBUQ0FfRlJFUl9TVEFUU19ST0dVRV9QS1RTOiAgICAgICAgIGZyZXJDcHNTZXFSY3Z5Um9ndWVQYWNrZXRzXG4rICogQFRDQV9GUkVSX1NUQVRTX0xPU1RfUEtUUzogICAgICAgICAgZnJlckNwc1NlcVJjdnlMb3N0UGFja2V0c1xuKyAqIEBUQ0FfRlJFUl9TVEFUU19SRVNFVFM6ICAgICAgICAgICAgIGZyZXJDcHNTZXFSY3Z5UmVzZXRzXG4rICogQFRDQV9GUkVSX1NUQVRTX1BBU1NFRF9QS1RTOiAgICAgICAgZnJlckNwc1NlcVJjdnlQYXNzZWRQYWNrZXRzXG4rICogQFRDQV9GUkVSX1NUQVRTX0RJU0NBUkRFRF9QS1RTOiAgICAgZnJlckNwc1NlcVJjdnlEaXNjYXJkZWRQYWNrZXRzXG4rICogQFRDQV9GUkVSX1NUQVRTX1NFUUdFTl9QS1RTOiAgICAgICAgZnJlckNwc1NlcUdlblBhY2tldHNcbisgKi9cbitlbnVtIHtcbitcdFRDQV9GUkVSX1VOU1BFQyxcbitcdFRDQV9GUkVSX1RNLCAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IHRjZl90ICovXG4rXHRUQ0FfRlJFUl9QQVJNUywgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCB0Y19mcmVyICovXG4rXHRUQ0FfRlJFUl9QQUQsXG4rXHRUQ0FfRlJFUl9GVU5DLCAgICAgICAgICAgICAgICAgICAgIC8qIHU4OiB0Y19mcmVyX2Z1bmMgKi9cbitcdFRDQV9GUkVSX1RBR19UWVBFLCAgICAgICAgICAgICAgICAgLyogdTg6IHRjX2ZyZXJfdGFnX3R5cGUgKi9cbitcdFRDQV9GUkVSX1JDVllfSU5ESVZJRFVBTCwgICAgICAgICAgLyogTkxBX0ZMQUcgKi9cbitcdFRDQV9GUkVSX1JDVllfQUxHLCAgICAgICAgICAgICAgICAgLyogdTg6IHRjX2ZyZXJfcmN2eV9hbGcgKi9cbitcdFRDQV9GUkVSX1JDVllfSElTVE9SWV9MRU4sICAgICAgICAgLyogdTg6IDEtMzIgKi9cbitcdFRDQV9GUkVSX1JDVllfUkVTRVRfTVNFQywgICAgICAgICAgLyogdTMyICovXG4rXHRUQ0FfRlJFUl9SQ1ZZX1RBS0VfTk9fU0VRLCAgICAgICAgIC8qIE5MQV9GTEFHICovXG4rXHRUQ0FfRlJFUl9SQ1ZZX1RBR19QT1AsICAgICAgICAgICAgIC8qIE5MQV9GTEFHICovXG4rXHRUQ0FfRlJFUl9TVEFUU19UQUdMRVNTX1BLVFMsICAgICAgIC8qIHU2NCAqL1xuK1x0VENBX0ZSRVJfU1RBVFNfT1VUX09GX09SREVSX1BLVFMsICAvKiB1NjQgKi9cbitcdFRDQV9GUkVSX1NUQVRTX1JPR1VFX1BLVFMsICAgICAgICAgLyogdTY0ICovXG4rXHRUQ0FfRlJFUl9TVEFUU19MT1NUX1BLVFMsICAgICAgICAgIC8qIHU2NCAqL1xuK1x0VENBX0ZSRVJfU1RBVFNfUkVTRVRTLCAgICAgICAgICAgICAvKiB1NjQgKi9cbitcdFRDQV9GUkVSX1NUQVRTX1BBU1NFRF9QS1RTLCAgICAgICAgLyogdTY0ICovXG4rXHRUQ0FfRlJFUl9TVEFUU19ESVNDQVJERURfUEtUUywgICAgIC8qIHU2NCAqL1xuK1x0VENBX0ZSRVJfU1RBVFNfU0VRR0VOX1BLVFMsICAgICAgICAvKiB1NjQgKi9cbitcdF9fVENBX0ZSRVJfTUFYLFxuK307XG4rXG4rI2RlZmluZSBUQ0FfRlJFUl9NQVggKF9fVENBX0ZSRVJfTUFYIC0gMSlcbitcbitlbnVtIHRjX2ZyZXJfZnVuYyB7XG4rXHRUQ0FfRlJFUl9GVU5DX1BVU0ggICAgPSAxLFxuK1x0VENBX0ZSRVJfRlVOQ19SRUNPVkVSID0gMixcbit9O1xuK1xuK2VudW0gdGNfZnJlcl90YWdfdHlwZSB7XG4rXHRUQ0FfRlJFUl9UQUdfUlRBRyA9IDEsXG4rXHRUQ0FfRlJFUl9UQUdfSFNSLFxuK1x0VENBX0ZSRVJfVEFHX1BSUCxcbit9O1xuK1xuK2VudW0gdGNfZnJlcl9yY3Z5X2FsZyB7XG4rXHRUQ0FfRlJFUl9SQ1ZZX1ZFQ1RPUl9BTEcgPSAwLCAgLyogSUVFRSA4MDIuMUNCIDcuNC4zLjQgKi9cbitcdFRDQV9GUkVSX1JDVllfTUFUQ0hfQUxHICA9IDEsICAvKiBJRUVFIDgwMi4xQ0IgNy40LjMuNSAqL1xuK307XG4rXG4rI2VuZGlmIC8qIF9fTElOVVhfVENfRlJFUl9IICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL0tjb25maWcgYi9uZXQvc2NoZWQvS2NvbmZpZ1xuaW5kZXggNmRkZmYwMjhiODFhNDEuLjdjYTc5YjNlYjViMzRjIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL0tjb25maWdcbisrKyBiL25ldC9zY2hlZC9LY29uZmlnXG5AQCAtOTM5LDYgKzkzOSwyMiBAQCBjb25maWcgTkVUX0FDVF9HQVRFXG4gXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiBcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFjdF9nYXRlLlxuIFxuK2NvbmZpZyBORVRfQUNUX0ZSRVJcbitcdHRyaXN0YXRlIFwiSUVFRSA4MDIuMUNCIEZSRVIgdGMgYWN0aW9uXCJcbitcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcbitcdGhlbHBcbitcdCAgU2F5IFkgaGVyZSB0byBlbmFibGUgdGhlIElFRUUgODAyLjFDQiBGUkVSIHRjIGFjdGlvbi4gIFRoZSBhY3Rpb25cbitcdCAgaW1wbGVtZW50cyB0aGUgU2VxdWVuY2UgR2VuZXJhdGlvbiBGdW5jdGlvbiAoZWdyZXNzIFItVEFHIGluc2VydGlvblxuK1x0ICB3aXRoIHNoYXJlZCBwZXItc3RyZWFtIHNlcXVlbmNlIGNvdW50ZXIpIGFuZCB0aGUgU2VxdWVuY2UgUmVjb3ZlcnlcbitcdCAgRnVuY3Rpb24gKGluZ3Jlc3MgZHVwbGljYXRlIGRldGVjdGlvbiBhbmQgZWxpbWluYXRpb24pIGRlc2NyaWJlZCBpblxuK1x0ICBJRUVFIDgwMi4xQ0ItMjAxNy5cbitcbitcdCAgQm90aCBTZXF1ZW5jZSBSZWNvdmVyeSAoY3Jvc3MtcG9ydCBzaGFyZWQgc3RhdGUgdmlhIHJjdnktaWQpIGFuZFxuK1x0ICBJbmRpdmlkdWFsIFJlY292ZXJ5IChwZXItcG9ydCBpbmRlcGVuZGVudCBzdGF0ZSkgYXJlIHN1cHBvcnRlZC5cbitcbitcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuK1x0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2ZyZXIuXG4rXG4gY29uZmlnIE5FVF9JRkVfU0tCTUFSS1xuIFx0dHJpc3RhdGUgXCJTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb25cIlxuIFx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9NYWtlZmlsZSBiL25ldC9zY2hlZC9NYWtlZmlsZVxuaW5kZXggNTA3OGVhODRlNmFkN2EuLmQ5ZjYwNDM0ZTdkNzdmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL01ha2VmaWxlXG4rKysgYi9uZXQvc2NoZWQvTWFrZWZpbGVcbkBAIC0zMSw2ICszMSw3IEBAIG9iai0kKENPTkZJR19ORVRfSUZFX1NLQlRDSU5ERVgpXHQrPSBhY3RfbWV0YV9za2J0Y2luZGV4Lm9cbiBvYmotJChDT05GSUdfTkVUX0FDVF9UVU5ORUxfS0VZKSs9IGFjdF90dW5uZWxfa2V5Lm9cbiBvYmotJChDT05GSUdfTkVUX0FDVF9DVClcdCs9IGFjdF9jdC5vXG4gb2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCs9IGFjdF9nYXRlLm9cbitvYmotJChDT05GSUdfTkVUX0FDVF9GUkVSKVx0Kz0gYWN0X2ZyZXIub1xuIG9iai0kKENPTkZJR19ORVRfU0NIX0ZJRk8pXHQrPSBzY2hfZmlmby5vXG4gb2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVx0Kz0gc2NoX2h0Yi5vXG4gb2JqLSQoQ09ORklHX05FVF9TQ0hfSEZTQylcdCs9IHNjaF9oZnNjLm9cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2ZyZXIuYyBiL25ldC9zY2hlZC9hY3RfZnJlci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjdiNmRiNjQzNzg4ZGY3XG4tLS0gL2Rldi9udWxsXG4rKysgYi9uZXQvc2NoZWQvYWN0X2ZyZXIuY1xuQEAgLTAsMCArMSw4MzUgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuKy8qIENvcHlyaWdodCAyMDI2IE5YUCAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ydG5ldGxpbmsuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pZl92bGFuLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ocnRpbWVyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JrcXVldWUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9hY3RfYXBpLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0bGluay5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbmV0L3BrdF9jbHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC90Y19hY3QvdGNfZnJlci5oXHUwMDNlXG4rXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4rLyogUi1UQUcgd2lyZSBzdHJ1Y3R1cmVzIChJRUVFIDgwMi4xQ0IgNy44KSAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbitcbitzdHJ1Y3Qgcl90YWcge1xuK1x0X19iZTE2IHJlc2VydmVkO1xuK1x0X19iZTE2IHNlcXVlbmNlX25yO1xuK1x0X19iZTE2IGVuY2FwX3Byb3RvO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9mcmVyX29wcztcbitcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbisvKiBSZWNvdmVyeSByZXNldCBtYWNoaW5lcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4rXG4rc3RydWN0IGZyZXJfcmN2eV93b3JrIHtcbitcdHN0cnVjdCB3b3JrX3N0cnVjdFx0d29yaztcbitcdHN0cnVjdCBmcmVyX3JjdnlcdCpyY3Z5O1xuK307XG4rXG4rc3RhdGljIHZvaWQgZnJlcl9yY3Z5X3Jlc2V0KHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkpXG4re1xuK1x0aWYgKHJjdnktXHUwMDNlYWxnID09IFRDQV9GUkVSX1JDVllfVkVDVE9SX0FMRykge1xuK1x0XHRyY3Z5LVx1MDAzZXJjdnlfc2VxX251bSA9ICh1MzIpKHJjdnktXHUwMDNlc2VxX3NwYWNlIC0gMSk7XG4rXHRcdHJjdnktXHUwMDNlc2VxX2hpc3RvcnkgID0gMDtcbitcdH1cbitcdHJjdnktXHUwMDNldGFrZV9hbnkgPSB0cnVlO1xuK1x0cmN2eS1cdTAwM2VzdGF0c19yZXNldHMrKztcbit9XG4rXG4rc3RhdGljIHZvaWQgZnJlcl9yY3Z5X3Jlc2V0X3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3tcbitcdHN0cnVjdCBmcmVyX3Jjdnlfd29yayAqcncgPVxuK1x0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGZyZXJfcmN2eV93b3JrLCB3b3JrKTtcbitcdHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkgPSBydy1cdTAwM2VyY3Z5O1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnJjdnktXHUwMDNlbG9jayk7XG4rXHRmcmVyX3JjdnlfcmVzZXQocmN2eSk7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZyY3Z5LVx1MDAzZWxvY2spO1xuK1x0a2ZyZWUocncpO1xuK31cbitcbitzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgZnJlcl9yY3Z5X2hydGltZXJfZm4oc3RydWN0IGhydGltZXIgKnRpbWVyKVxuK3tcbitcdHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkgPVxuK1x0XHRjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCBmcmVyX3JjdnksIGhydGltZXIpO1xuK1x0c3RydWN0IGZyZXJfcmN2eV93b3JrICpydztcbitcbitcdC8qIEFsbG9jYXRlIGluIEdGUF9BVE9NSUMgY29udGV4dDsgaWYgaXQgZmFpbHMgdGhlIHN0YXRlIGlzIG5vdFxuK1x0ICogcmVzZXQgdGhpcyBjeWNsZSAtIHRoZSBuZXh0IGZyYW1lIHdpbGwgYXR0ZW1wdCBhZ2Fpbi5cbitcdCAqL1xuK1x0cncgPSBrbWFsbG9jX29iaigqcncpO1xuK1x0aWYgKHJ3KSB7XG4rXHRcdElOSVRfV09SSyhcdTAwMjZydy1cdTAwM2V3b3JrLCBmcmVyX3JjdnlfcmVzZXRfd29ya19mbik7XG4rXHRcdHJ3LVx1MDAzZXJjdnkgPSByY3Z5O1xuK1x0XHRzY2hlZHVsZV93b3JrKFx1MDAyNnJ3LVx1MDAzZXdvcmspO1xuK1x0fVxuK1x0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuK31cbitcbitzdGF0aWMgdm9pZCBmcmVyX3JjdnlfdGltZXJfcmVzdGFydChzdHJ1Y3QgZnJlcl9yY3Z5ICpyY3Z5KVxuK3tcbitcdGlmIChyY3Z5LVx1MDAzZXJlc2V0X21zZWMpXG4rXHRcdGhydGltZXJfc3RhcnQoXHUwMDI2cmN2eS1cdTAwM2VocnRpbWVyLFxuK1x0XHRcdCAgICAgIG1zX3RvX2t0aW1lKHJjdnktXHUwMDNlcmVzZXRfbXNlYyksXG4rXHRcdFx0ICAgICAgSFJUSU1FUl9NT0RFX1JFTF9TT0ZUKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgZnJlcl9yY3Z5X2luaXRfc3RhdGUoc3RydWN0IGZyZXJfcmN2eSAqcmN2eSwgdTggYWxnLFxuK1x0XHRcdFx0IHU4IGhpc3RvcnlfbGVuLCB1MzIgcmVzZXRfbXNlYyxcbitcdFx0XHRcdCBib29sIHRha2Vfbm9fc2VxKVxuK3tcbitcdHJjdnktXHUwMDNlYWxnICAgICAgICAgID0gYWxnO1xuK1x0cmN2eS1cdTAwM2VoaXN0b3J5X2xlbiAgPSBoaXN0b3J5X2xlbjtcbitcdHJjdnktXHUwMDNlcmVzZXRfbXNlYyAgID0gcmVzZXRfbXNlYztcbitcdHJjdnktXHUwMDNlc2VxX3NwYWNlICAgID0gMSBcdTAwM2NcdTAwM2MgMTY7XG4rXHRyY3Z5LVx1MDAzZXRha2Vfbm9fc2VxICA9IHRha2Vfbm9fc2VxO1xuK1x0cmN2eS1cdTAwM2V0YWtlX2FueSAgICAgPSB0cnVlO1xuK1x0cmN2eS1cdTAwM2VyY3Z5X3NlcV9udW0gPSAodTMyKShyY3Z5LVx1MDAzZXNlcV9zcGFjZSAtIDEpO1xuK1x0cmN2eS1cdTAwM2VzZXFfaGlzdG9yeSAgPSAwO1xuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cmN2eS1cdTAwM2Vsb2NrKTtcbitcdGhydGltZXJfc2V0dXAoXHUwMDI2cmN2eS1cdTAwM2VocnRpbWVyLCBmcmVyX3JjdnlfaHJ0aW1lcl9mbiwgQ0xPQ0tfTU9OT1RPTklDLFxuK1x0XHQgICAgICBIUlRJTUVSX01PREVfUkVMX1NPRlQpO1xuK31cbitcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbisvKiBSLVRBRyBoZWxwZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4rXG4rc3RhdGljIGludCBmcmVyX3J0YWdfcHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgc2VxX251bSlcbit7XG4rXHR1bnNpZ25lZCBjaGFyICpuZXdfbWFjX2hlYWRlcjtcbitcdHVuc2lnbmVkIGludCBkYXRhX29mZnNldDtcbitcdHVuc2lnbmVkIGludCBoZWFkX2xlbjtcbitcdHN0cnVjdCB2bGFuX2V0aGhkciAqdmg7XG4rXHRzdHJ1Y3QgZXRoaGRyICplaDtcbitcdHN0cnVjdCByX3RhZyAqcnRhZztcbitcdF9fYmUxNiAqcHJvdG9fcHRyO1xuK1x0X19iZTE2IHNhdmVkX3Byb3RvO1xuK1xuK1x0aWYgKCFza2JfbWFjX2hlYWRlcl93YXNfc2V0KHNrYikpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0ZGF0YV9vZmZzZXQgPSBza2ItXHUwMDNlZGF0YSAtIHNrYl9tYWNfaGVhZGVyKHNrYik7XG4rXG4rXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgZGF0YV9vZmZzZXQgKyBzaXplb2YoKnJ0YWcpKSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRpZiAoZGF0YV9vZmZzZXQgXHUwMDNlIDApXG4rXHRcdHNrYl9wdXNoKHNrYiwgZGF0YV9vZmZzZXQpO1xuK1xuK1x0ZWggPSBldGhfaGRyKHNrYik7XG4rXHRpZiAoZXRoX3R5cGVfdmxhbihlaC1cdTAwM2VoX3Byb3RvKSkge1xuK1x0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2YoKnZoKSkpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdGVoID0gZXRoX2hkcihza2IpO1xuK1x0XHR2aCA9IChzdHJ1Y3Qgdmxhbl9ldGhoZHIgKillaDtcbitcdFx0cHJvdG9fcHRyID0gXHUwMDI2dmgtXHUwMDNlaF92bGFuX2VuY2Fwc3VsYXRlZF9wcm90bztcbitcdFx0aGVhZF9sZW4gPSBzaXplb2YoKnZoKTtcbitcdH0gZWxzZSB7XG4rXHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZigqZWgpKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0ZWggPSBldGhfaGRyKHNrYik7XG4rXHRcdHByb3RvX3B0ciA9IFx1MDAyNmVoLVx1MDAzZWhfcHJvdG87XG4rXHRcdGhlYWRfbGVuID0gc2l6ZW9mKCplaCk7XG4rXHR9XG4rXG4rXHRzYXZlZF9wcm90byA9ICpwcm90b19wdHI7XG4rXHQqcHJvdG9fcHRyID0gaHRvbnMoRVRIX1BfUlRBRyk7XG4rXG4rXHRza2JfcHVzaChza2IsIHNpemVvZigqcnRhZykpO1xuK1x0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbitcbitcdG5ld19tYWNfaGVhZGVyID0gc2tiX21hY19oZWFkZXIoc2tiKTtcbitcdG1lbW1vdmUobmV3X21hY19oZWFkZXIsICh1bnNpZ25lZCBjaGFyICopZWgsIGhlYWRfbGVuKTtcbitcbitcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGh0b25zKEVUSF9QX1JUQUcpO1xuK1x0c2tiX3NldF9uZXR3b3JrX2hlYWRlcihza2IsIGhlYWRfbGVuKTtcbitcdGlmIChkYXRhX29mZnNldCBcdTAwM2UgMClcbitcdFx0c2tiX3B1bGwoc2tiLCBkYXRhX29mZnNldCk7XG4rXG4rXHQvKiBXcml0ZSBSLVRBRyBhZnRlciB0aGUgRXRoZXJuZXQgLyBWTEFOIGhlYWRlciAqL1xuK1x0cnRhZyA9IChzdHJ1Y3Qgcl90YWcgKikobmV3X21hY19oZWFkZXIgKyBoZWFkX2xlbik7XG4rXHRydGFnLVx1MDAzZXJlc2VydmVkICAgID0gMDtcbitcdHJ0YWctXHUwMDNlc2VxdWVuY2VfbnIgPSBodG9ucyhzZXFfbnVtKTtcbitcdHJ0YWctXHUwMDNlZW5jYXBfcHJvdG8gPSBzYXZlZF9wcm90bztcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBmcmVyX3J0YWdfcG9wKHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0dW5zaWduZWQgY2hhciAqbmV3X21hY19oZWFkZXI7XG4rXHR1bnNpZ25lZCBpbnQgZGF0YV9vZmZzZXQ7XG4rXHR1bnNpZ25lZCBpbnQgaGVhZF9sZW47XG4rXHRzdHJ1Y3Qgdmxhbl9ldGhoZHIgKnZoO1xuK1x0c3RydWN0IGV0aGhkciAqZWg7XG4rXHRzdHJ1Y3Qgcl90YWcgKnJ0YWc7XG4rXHRfX2JlMTYgKnByb3RvX3B0cjtcbitcbitcdGRhdGFfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2JfbWFjX2hlYWRlcihza2IpO1xuK1x0aWYgKGRhdGFfb2Zmc2V0IFx1MDAzZSAwKVxuK1x0XHRza2JfcHVzaChza2IsIGRhdGFfb2Zmc2V0KTtcbitcbitcdGVoID0gZXRoX2hkcihza2IpO1xuK1x0aWYgKGV0aF90eXBlX3ZsYW4oZWgtXHUwMDNlaF9wcm90bykpIHtcbitcdFx0dmggPSAoc3RydWN0IHZsYW5fZXRoaGRyICopZWg7XG4rXHRcdHByb3RvX3B0ciA9IFx1MDAyNnZoLVx1MDAzZWhfdmxhbl9lbmNhcHN1bGF0ZWRfcHJvdG87XG4rXHRcdGhlYWRfbGVuID0gc2l6ZW9mKCp2aCk7XG4rXHR9IGVsc2Uge1xuK1x0XHRwcm90b19wdHIgPSBcdTAwMjZlaC1cdTAwM2VoX3Byb3RvO1xuK1x0XHRoZWFkX2xlbiA9IHNpemVvZigqZWgpO1xuK1x0fVxuK1xuK1x0aWYgKCpwcm90b19wdHIgIT0gaHRvbnMoRVRIX1BfUlRBRykpXG4rXHRcdHJldHVybjtcbitcbitcdHJ0YWcgPSAoc3RydWN0IHJfdGFnICopKCh1bnNpZ25lZCBjaGFyICopZWggKyBoZWFkX2xlbik7XG4rXHQqcHJvdG9fcHRyID0gcnRhZy1cdTAwM2VlbmNhcF9wcm90bztcbitcbitcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IHJ0YWctXHUwMDNlZW5jYXBfcHJvdG87XG4rXG4rXHRza2JfcG9zdHB1bGxfcmNzdW0oc2tiLCBydGFnLCBzaXplb2Yoc3RydWN0IHJfdGFnKSk7XG4rXHRza2JfcHVsbChza2IsIHNpemVvZigqcnRhZykpO1xuK1x0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbitcbitcdG5ld19tYWNfaGVhZGVyID0gc2tiX21hY19oZWFkZXIoc2tiKTtcbitcdG1lbW1vdmUobmV3X21hY19oZWFkZXIsICh1bnNpZ25lZCBjaGFyICopZWgsIGhlYWRfbGVuKTtcbitcbitcdHNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCBoZWFkX2xlbik7XG4rXHRpZiAoZGF0YV9vZmZzZXQgXHUwMDNlIDApXG4rXHRcdHNrYl9wdWxsKHNrYiwgZGF0YV9vZmZzZXQpO1xuK31cbitcbitzdGF0aWMgaW50IGZyZXJfcnRhZ19kZWNvZGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpzZXEpXG4re1xuK1x0dW5zaWduZWQgaW50IGRhdGFfb2Zmc2V0O1xuK1x0c3RydWN0IHZsYW5fZXRoaGRyICp2aDtcbitcdHVuc2lnbmVkIGludCBoZWFkX2xlbjtcbitcdHN0cnVjdCBldGhoZHIgKmVoO1xuK1x0c3RydWN0IHJfdGFnICpydGFnO1xuK1x0X19iZTE2ICpwcm90b19wdHI7XG4rXG4rXHRpZiAoIXNrYl9tYWNfaGVhZGVyX3dhc19zZXQoc2tiKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRkYXRhX29mZnNldCA9IHNrYi1cdTAwM2VkYXRhIC0gc2tiX21hY19oZWFkZXIoc2tiKTtcbitcbitcdGlmIChza2JfY293X2hlYWQoc2tiLCBkYXRhX29mZnNldCkpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0aWYgKGRhdGFfb2Zmc2V0IFx1MDAzZSAwKVxuK1x0XHRza2JfcHVzaChza2IsIGRhdGFfb2Zmc2V0KTtcbitcbitcdGVoID0gZXRoX2hkcihza2IpO1xuK1x0aWYgKGV0aF90eXBlX3ZsYW4oZWgtXHUwMDNlaF9wcm90bykpIHtcbitcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKCp2aCkgKyBzaXplb2YoKnJ0YWcpKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0ZWggPSBldGhfaGRyKHNrYik7XG4rXHRcdHZoID0gKHN0cnVjdCB2bGFuX2V0aGhkciAqKWVoO1xuK1x0XHRwcm90b19wdHIgPSBcdTAwMjZ2aC1cdTAwM2VoX3ZsYW5fZW5jYXBzdWxhdGVkX3Byb3RvO1xuK1x0XHRoZWFkX2xlbiA9IHNpemVvZigqdmgpO1xuK1x0fSBlbHNlIHtcbitcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKCplaCkgKyBzaXplb2YoKnJ0YWcpKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0ZWggPSBldGhfaGRyKHNrYik7XG4rXHRcdHByb3RvX3B0ciA9IFx1MDAyNmVoLVx1MDAzZWhfcHJvdG87XG4rXHRcdGhlYWRfbGVuID0gc2l6ZW9mKCplaCk7XG4rXHR9XG4rXG4rXHRpZiAoZGF0YV9vZmZzZXQgXHUwMDNlIDApXG4rXHRcdHNrYl9wdWxsKHNrYiwgZGF0YV9vZmZzZXQpO1xuK1xuK1x0aWYgKCpwcm90b19wdHIgIT0gaHRvbnMoRVRIX1BfUlRBRykpIHtcbitcdFx0KnNlcSA9IC0xO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbitcdHJ0YWcgPSAoc3RydWN0IHJfdGFnICopKCh1bnNpZ25lZCBjaGFyICopZWggKyBoZWFkX2xlbik7XG4rXG4rXHQqc2VxID0gKGludCludG9ocyhydGFnLVx1MDAzZXNlcXVlbmNlX25yKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbisvKiBSZWNvdmVyeSBhbGdvcml0aG1zIChjYWxsZWQgd2l0aCByY3Z5LVx1MDAzZWxvY2sgaGVsZCkgICAgICAgICAgICAgICAgICAqL1xuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuK1xuKy8qIFJldHVybnMgdHJ1ZSA9IHBhc3MgZnJhbWUsIGZhbHNlID0gZGlzY2FyZCBmcmFtZS5cbisgKiBAaW5kaXZpZHVhbDogd2hlbiB0cnVlLCByZXN0YXJ0IHRoZSByZXNldCB0aW1lciBldmVuIG9uIGRpc2NhcmRlZCBmcmFtZXNcbisgKiAgIChyb2d1ZS9kdXBsaWNhdGUpLCBhcyByZXF1aXJlZCBmb3IgSW5kaXZpZHVhbCBSZWNvdmVyeSAoSUVFRSA4MDIuMUNCIDcuNSkuXG4rICovXG4rc3RhdGljIGJvb2wgZnJlcl92ZWN0b3JfYWxnKHN0cnVjdCBmcmVyX3JjdnkgKnJjdnksIGludCBzZXEsIGJvb2wgaW5kaXZpZHVhbClcbit7XG4rXHRpbnQgZGVsdGE7XG4rXHRib29sIHJlc3RhcnRfdGltZXIgPSBmYWxzZTtcbitcdGJvb2wgcGFzcztcbitcbitcdGlmIChzZXEgXHUwMDNjIDApIHtcbitcdFx0LyogTm8gUi1UQUcgcHJlc2VudCAqL1xuK1x0XHRyY3Z5LVx1MDAzZXN0YXRzX3RhZ2xlc3NfcGt0cysrO1xuK1x0XHRpZiAocmN2eS1cdTAwM2V0YWtlX25vX3NlcSkge1xuK1x0XHRcdHJlc3RhcnRfdGltZXIgPSB0cnVlO1xuK1x0XHRcdHBhc3MgPSB0cnVlO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHBhc3MgPSBmYWxzZTtcbitcdFx0fVxuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGlmIChyY3Z5LVx1MDAzZXRha2VfYW55KSB7XG4rXHRcdC8qIEZpcnN0IGZyYW1lIGFmdGVyIHJlc2V0OiBhY2NlcHQgdW5jb25kaXRpb25hbGx5ICovXG4rXHRcdHJjdnktXHUwMDNldGFrZV9hbnkgICAgID0gZmFsc2U7XG4rXHRcdHJjdnktXHUwMDNlcmN2eV9zZXFfbnVtID0gKHUzMilzZXE7XG4rXHRcdHJjdnktXHUwMDNlc2VxX2hpc3RvcnkgID0gQklUKDApO1xuK1x0XHRyZXN0YXJ0X3RpbWVyID0gdHJ1ZTtcbitcdFx0cGFzcyA9IHRydWU7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0ZGVsdGEgPSAoc2VxIC0gKGludClyY3Z5LVx1MDAzZXJjdnlfc2VxX251bSkgXHUwMDI2XG4rXHRcdChpbnQpKHJjdnktXHUwMDNlc2VxX3NwYWNlIC0gMSk7XG4rXHQvKiBNYXAgZGVsdGEgXHUwMDNlIHNlcV9zcGFjZS8yIHRvIG5lZ2F0aXZlIChzaWduZWQgd3JhcCkgKi9cbitcdGlmICgodTMyKWRlbHRhIFx1MDAyNiAodTMyKShyY3Z5LVx1MDAzZXNlcV9zcGFjZSAvIDIpKVxuK1x0XHRkZWx0YSAtPSAoaW50KXJjdnktXHUwMDNlc2VxX3NwYWNlO1xuK1xuK1x0aWYgKGRlbHRhIFx1MDAzZT0gKGludClyY3Z5LVx1MDAzZWhpc3RvcnlfbGVuIHx8XG4rXHQgICAgZGVsdGEgXHUwMDNjPSAtKGludClyY3Z5LVx1MDAzZWhpc3RvcnlfbGVuKSB7XG4rXHRcdC8qIFBhY2tldCBpcyBvdXQtb2YtcmFuZ2UgKHJvZ3VlKS4gKi9cbitcdFx0cmN2eS1cdTAwM2VzdGF0c19yb2d1ZV9wa3RzKys7XG4rXHRcdGlmIChpbmRpdmlkdWFsKVxuK1x0XHRcdHJlc3RhcnRfdGltZXIgPSB0cnVlO1xuK1x0XHRwYXNzID0gZmFsc2U7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0aWYgKGRlbHRhIFx1MDAzYz0gMCkge1xuK1x0XHQvKiBQYWNrZXQgaXMgb2xkOiBjaGVjayB3aGV0aGVyIGFscmVhZHkgc2Vlbi4gKi9cbitcdFx0aWYgKHJjdnktXHUwMDNlc2VxX2hpc3RvcnkgXHUwMDI2IEJJVCgtZGVsdGEpKSB7XG4rXHRcdFx0aWYgKGluZGl2aWR1YWwpXG4rXHRcdFx0XHRyZXN0YXJ0X3RpbWVyID0gdHJ1ZTtcbitcdFx0XHQvKiBBbHJlYWR5IHJlY2VpdmVkICovXG4rXHRcdFx0cGFzcyA9IGZhbHNlO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdC8qIE91dC1vZi1vcmRlciBidXQgbm90IHlldCBzZWVuICovXG4rXHRcdFx0cmN2eS1cdTAwM2VzZXFfaGlzdG9yeSB8PSBCSVQoLWRlbHRhKTtcbitcdFx0XHRyY3Z5LVx1MDAzZXN0YXRzX291dF9vZl9vcmRlcl9wa3RzKys7XG4rXHRcdFx0cmVzdGFydF90aW1lciA9IHRydWU7XG4rXHRcdFx0cGFzcyA9IHRydWU7XG4rXHRcdH1cbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rXHQvKiBkZWx0YSBcdTAwM2UgMDogZnJhbWUgaXMgbmV3ZXIgdGhhbiBleHBlY3RlZCAqL1xuK1x0aWYgKGRlbHRhICE9IDEpXG4rXHRcdHJjdnktXHUwMDNlc3RhdHNfb3V0X29mX29yZGVyX3BrdHMrKztcbitcbitcdC8qIFNoaWZ0IGhpc3RvcnkgZm9yd2FyZCwgY291bnRpbmcgYW55IGdhcHMgYXMgbG9zdCAqL1xuK1x0d2hpbGUgKC0tZGVsdGEpIHtcbitcdFx0aWYgKCEocmN2eS1cdTAwM2VzZXFfaGlzdG9yeSBcdTAwMjYgQklUKHJjdnktXHUwMDNlaGlzdG9yeV9sZW4gLSAxKSkpXG4rXHRcdFx0cmN2eS1cdTAwM2VzdGF0c19sb3N0X3BrdHMrKztcbitcdFx0cmN2eS1cdTAwM2VzZXFfaGlzdG9yeSBcdTAwM2NcdTAwM2M9IDE7XG4rXHR9XG4rXHRpZiAoIShyY3Z5LVx1MDAzZXNlcV9oaXN0b3J5IFx1MDAyNiBCSVQocmN2eS1cdTAwM2VoaXN0b3J5X2xlbiAtIDEpKSlcbitcdFx0cmN2eS1cdTAwM2VzdGF0c19sb3N0X3BrdHMrKztcbitcdHJjdnktXHUwMDNlc2VxX2hpc3RvcnkgPSAocmN2eS1cdTAwM2VzZXFfaGlzdG9yeSBcdTAwM2NcdTAwM2MgMSkgfCBCSVQoMCk7XG4rXHRyY3Z5LVx1MDAzZXJjdnlfc2VxX251bSA9ICh1MzIpc2VxO1xuK1x0cmVzdGFydF90aW1lciA9IHRydWU7XG4rXHRwYXNzID0gdHJ1ZTtcbitcbitvdXQ6XG4rXHRpZiAocmVzdGFydF90aW1lcilcbitcdFx0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XG4rXHRyZXR1cm4gcGFzcztcbit9XG4rXG4rc3RhdGljIGJvb2wgZnJlcl9tYXRjaF9hbGcoc3RydWN0IGZyZXJfcmN2eSAqcmN2eSwgaW50IHNlcSwgYm9vbCBpbmRpdmlkdWFsKVxuK3tcbitcdGlmIChzZXEgXHUwMDNjIDApIHtcbitcdFx0LyogTm8gUi1UQUc6IE1hdGNoIGFsZyBjYW5ub3QgZGVkdXBsaWNhdGUsIGFsd2F5cyBwYXNzLiAqL1xuK1x0XHRyY3Z5LVx1MDAzZXN0YXRzX3RhZ2xlc3NfcGt0cysrO1xuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdH1cbitcbitcdGlmIChyY3Z5LVx1MDAzZXRha2VfYW55KSB7XG4rXHRcdHJjdnktXHUwMDNldGFrZV9hbnkgICAgID0gZmFsc2U7XG4rXHRcdHJjdnktXHUwMDNlcmN2eV9zZXFfbnVtID0gKHUzMilzZXE7XG4rXHRcdGZyZXJfcmN2eV90aW1lcl9yZXN0YXJ0KHJjdnkpO1xuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdH1cbitcbitcdGlmICgodTMyKXNlcSA9PSByY3Z5LVx1MDAzZXJjdnlfc2VxX251bSkge1xuK1x0XHQvKiBEdXBsaWNhdGUgKi9cbitcdFx0aWYgKGluZGl2aWR1YWwpXG4rXHRcdFx0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdC8qIE5ldyBzZXF1ZW5jZSBudW1iZXI6IGFjY2VwdCBhbmQgdXBkYXRlICovXG4rXHRpZiAoKHUzMilzZXEgIT0gKChyY3Z5LVx1MDAzZXJjdnlfc2VxX251bSArIDEpICUgcmN2eS1cdTAwM2VzZXFfc3BhY2UpKVxuK1x0XHRyY3Z5LVx1MDAzZXN0YXRzX291dF9vZl9vcmRlcl9wa3RzKys7XG4rXHRyY3Z5LVx1MDAzZXJjdnlfc2VxX251bSA9ICh1MzIpc2VxO1xuK1x0ZnJlcl9yY3Z5X3RpbWVyX3Jlc3RhcnQocmN2eSk7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4rLyogTmV0bGluayBwb2xpY3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBmcmVyX3BvbGljeVtUQ0FfRlJFUl9NQVggKyAxXSA9IHtcbitcdFtUQ0FfRlJFUl9QQVJNU10gICAgICAgICAgICA9IE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKHNpemVvZihzdHJ1Y3QgdGNfZnJlcikpLFxuK1x0W1RDQV9GUkVSX0ZVTkNdICAgICAgICAgICAgID0geyAudHlwZSA9IE5MQV9VOCB9LFxuK1x0W1RDQV9GUkVSX1RBR19UWVBFXSAgICAgICAgID0geyAudHlwZSA9IE5MQV9VOCB9LFxuK1x0W1RDQV9GUkVSX1JDVllfSU5ESVZJRFVBTF0gID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG4rXHRbVENBX0ZSRVJfUkNWWV9BTEddICAgICAgICAgPSB7IC50eXBlID0gTkxBX1U4IH0sXG4rXHRbVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTl0gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgMSwgMzIpLFxuK1x0W1RDQV9GUkVSX1JDVllfUkVTRVRfTVNFQ10gID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbitcdFtUQ0FfRlJFUl9SQ1ZZX1RBS0VfTk9fU0VRXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxuK1x0W1RDQV9GUkVSX1JDVllfVEFHX1BPUF0gICAgID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG4rfTtcbitcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbisvKiBBY3Rpb24gaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4rXG4rc3RhdGljIGludCB0Y2ZfZnJlcl9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLFxuK1x0XHRcdCBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKiphLFxuK1x0XHRcdCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdTMyIGZsYWdzLFxuK1x0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4re1xuK1x0c3RydWN0IHRjX2FjdGlvbl9uZXQgKnRuID0gbmV0X2dlbmVyaWMobmV0LCBhY3RfZnJlcl9vcHMubmV0X2lkKTtcbitcdGJvb2wgYmluZCA9IGZsYWdzIFx1MDAyNiBUQ0FfQUNUX0ZMQUdTX0JJTkQ7XG4rXHRzdHJ1Y3QgbmxhdHRyICp0YltUQ0FfRlJFUl9NQVggKyAxXTtcbitcdHN0cnVjdCB0Y2ZfY2hhaW4gKmdvdG9fY2ggPSBOVUxMO1xuK1x0c3RydWN0IHRjZl9mcmVyICpmO1xuK1x0c3RydWN0IHRjX2ZyZXIgKnBhcm07XG4rXHRib29sIGV4aXN0cyA9IGZhbHNlO1xuK1x0aW50IHJldCA9IDAsIGVyciwgaW5kZXg7XG4rXHR1OCBmdW5jLCB0YWdfdHlwZTtcbitcbitcdGlmICghbmxhKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiZnJlcjogYXR0cmlidXRlcyByZXF1aXJlZFwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBUQ0FfRlJFUl9NQVgsIG5sYSwgZnJlcl9wb2xpY3ksIGV4dGFjayk7XG4rXHRpZiAoZXJyIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0aWYgKCF0YltUQ0FfRlJFUl9QQVJNU10pIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJmcmVyOiBUQ0FfRlJFUl9QQVJNUyBtaXNzaW5nXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcdGlmICghdGJbVENBX0ZSRVJfRlVOQ10pIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJmcmVyOiBUQ0FfRlJFUl9GVU5DIG1pc3NpbmdcIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1x0aWYgKCF0YltUQ0FfRlJFUl9UQUdfVFlQRV0pIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJmcmVyOiBUQ0FfRlJFUl9UQUdfVFlQRSBtaXNzaW5nXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdGZ1bmMgICAgID0gbmxhX2dldF91OCh0YltUQ0FfRlJFUl9GVU5DXSk7XG4rXHR0YWdfdHlwZSA9IG5sYV9nZXRfdTgodGJbVENBX0ZSRVJfVEFHX1RZUEVdKTtcbitcbitcdGlmIChmdW5jICE9IFRDQV9GUkVSX0ZVTkNfUFVTSCBcdTAwMjZcdTAwMjYgZnVuYyAhPSBUQ0FfRlJFUl9GVU5DX1JFQ09WRVIpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJmcmVyOiB1bmtub3duIGZ1bmNcIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1x0aWYgKHRhZ190eXBlICE9IFRDQV9GUkVSX1RBR19SVEFHKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiZnJlcjogb25seSBydGFnIHN1cHBvcnRlZFwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0cGFybSAgPSBubGFfZGF0YSh0YltUQ0FfRlJFUl9QQVJNU10pO1xuK1x0aW5kZXggPSBwYXJtLVx1MDAzZWluZGV4O1xuK1xuK1x0ZXJyID0gdGNmX2lkcl9jaGVja19hbGxvYyh0biwgXHUwMDI2aW5kZXgsIGEsIGJpbmQpO1xuK1x0aWYgKGVyciBcdTAwM2MgMClcbitcdFx0cmV0dXJuIGVycjtcbitcdGV4aXN0cyA9IGVycjtcbitcbitcdGlmIChleGlzdHMgXHUwMDI2XHUwMDI2IGJpbmQpXG4rXHRcdHJldHVybiBBQ1RfUF9CT1VORDtcbitcbitcdGlmICghZXhpc3RzKSB7XG4rXHRcdHJldCA9IHRjZl9pZHJfY3JlYXRlX2Zyb21fZmxhZ3ModG4sIGluZGV4LCBlc3QsIGEsXG4rXHRcdFx0XHRcdFx0XHUwMDI2YWN0X2ZyZXJfb3BzLCBiaW5kLCBmbGFncyk7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHR0Y2ZfaWRyX2NsZWFudXAodG4sIGluZGV4KTtcbitcdFx0XHRyZXR1cm4gcmV0O1xuK1x0XHR9XG4rXHRcdHJldCA9IEFDVF9QX0NSRUFURUQ7XG4rXHR9IGVsc2UgaWYgKCEoZmxhZ3MgXHUwMDI2IFRDQV9BQ1RfRkxBR1NfUkVQTEFDRSkpIHtcbitcdFx0dGNmX2lkcl9yZWxlYXNlKCphLCBiaW5kKTtcbitcdFx0cmV0dXJuIC1FRVhJU1Q7XG4rXHR9XG4rXG4rXHRlcnIgPSB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QocGFybS1cdTAwM2VhY3Rpb24sIHRwLCBcdTAwMjZnb3RvX2NoLCBleHRhY2spO1xuK1x0aWYgKGVyciBcdTAwM2MgMClcbitcdFx0Z290byByZWxlYXNlX2lkcjtcbitcbitcdGYgPSB0b19mcmVyKCphKTtcbitcbitcdHNwaW5fbG9ja19iaChcdTAwMjZmLVx1MDAzZXRjZl9sb2NrKTtcbitcdGdvdG9fY2ggPSB0Y2ZfYWN0aW9uX3NldF9jdHJsYWN0KCphLCBwYXJtLVx1MDAzZWFjdGlvbiwgZ290b19jaCk7XG4rXHRmLVx1MDAzZWZ1bmMgICAgID0gZnVuYztcbitcdGYtXHUwMDNldGFnX3R5cGUgPSB0YWdfdHlwZTtcbitcdGYtXHUwMDNldGFnX3BvcCAgPSAhIXRiW1RDQV9GUkVSX1JDVllfVEFHX1BPUF07XG4rXG4rXHRpZiAoZnVuYyA9PSBUQ0FfRlJFUl9GVU5DX1BVU0gpIHtcbitcdFx0aWYgKHJldCA9PSBBQ1RfUF9DUkVBVEVEKSB7XG4rXHRcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Zi1cdTAwM2VzZXFnZW4ubG9jayk7XG4rXHRcdFx0Zi1cdTAwM2VzZXFnZW4uc2VxX3NwYWNlID0gMSBcdTAwM2NcdTAwM2MgMTY7XG4rXHRcdH1cbitcdFx0LyogZ2VuX3NlcV9udW0gc3RhcnRzIGF0IDAgb24gY3JlYXRpb247IHByZXNlcnZlZCBvbiByZXBsYWNlICovXG4rXHR9IGVsc2Uge1xuK1x0XHR1OCBhbGcgPSB0YltUQ0FfRlJFUl9SQ1ZZX0FMR10gP1xuK1x0XHRcdCBubGFfZ2V0X3U4KHRiW1RDQV9GUkVSX1JDVllfQUxHXSkgOlxuK1x0XHRcdCBUQ0FfRlJFUl9SQ1ZZX1ZFQ1RPUl9BTEc7XG4rXHRcdHU4IGhpc3RvcnlfbGVuID0gdGJbVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTl0gP1xuK1x0XHRcdFx0IG5sYV9nZXRfdTgodGJbVENBX0ZSRVJfUkNWWV9ISVNUT1JZX0xFTl0pIDogMzI7XG4rXHRcdHUzMiByZXNldF9tc2VjID0gdGJbVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDXSA/XG4rXHRcdFx0XHQgbmxhX2dldF91MzIodGJbVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDXSkgOiAwO1xuK1x0XHRib29sIHRha2Vfbm9fc2VxID0gISF0YltUQ0FfRlJFUl9SQ1ZZX1RBS0VfTk9fU0VRXTtcbitcbitcdFx0aWYgKGFsZyAhPSBUQ0FfRlJFUl9SQ1ZZX1ZFQ1RPUl9BTEcgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBhbGcgIT0gVENBX0ZSRVJfUkNWWV9NQVRDSF9BTEcpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZmLVx1MDAzZXRjZl9sb2NrKTtcbitcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcImZyZXI6IHVua25vd24gcmVjb3ZlcnkgYWxnb3JpdGhtXCIpO1xuK1x0XHRcdGVyciA9IC1FSU5WQUw7XG4rXHRcdFx0Z290byByZWxlYXNlX2lkcjtcbitcdFx0fVxuK1xuK1x0XHRmLVx1MDAzZWluZGl2aWR1YWwgPSAhIXRiW1RDQV9GUkVSX1JDVllfSU5ESVZJRFVBTF07XG4rXG4rXHRcdC8qIENhbmNlbCBhbnkgcnVubmluZyByZXNldCB0aW1lciBiZWZvcmUgcmUtaW5pdGlhbGlzaW5nLiAqL1xuK1x0XHRpZiAocmV0ICE9IEFDVF9QX0NSRUFURUQgXHUwMDI2XHUwMDI2IGYtXHUwMDNlcmN2eS5yZXNldF9tc2VjKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Zi1cdTAwM2V0Y2ZfbG9jayk7XG4rXHRcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2Zi1cdTAwM2VyY3Z5LmhydGltZXIpO1xuK1x0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZmLVx1MDAzZXRjZl9sb2NrKTtcbitcdFx0fVxuK1xuK1x0XHRmcmVyX3JjdnlfaW5pdF9zdGF0ZShcdTAwMjZmLVx1MDAzZXJjdnksIGFsZywgaGlzdG9yeV9sZW4sXG4rXHRcdFx0XHQgICAgIHJlc2V0X21zZWMsIHRha2Vfbm9fc2VxKTtcbitcdH1cbitcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmYtXHUwMDNldGNmX2xvY2spO1xuK1xuK1x0aWYgKGdvdG9fY2gpXG4rXHRcdHRjZl9jaGFpbl9wdXRfYnlfYWN0KGdvdG9fY2gpO1xuK1xuK1x0cmV0dXJuIHJldDtcbitcbityZWxlYXNlX2lkcjpcbitcdHRjZl9pZHJfcmVsZWFzZSgqYSwgYmluZCk7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbisvKiBEYXRhIHBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4rXG4rc3RhdGljIGludCB0Y2ZfZnJlcl9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbitcdFx0XHRzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKVxuK3tcbitcdHN0cnVjdCB0Y2ZfZnJlciAqZiA9IHRvX2ZyZXIoYSk7XG4rXHRpbnQgcmV0dmFsO1xuK1xuK1x0dGNmX2xhc3R1c2VfdXBkYXRlKFx1MDAyNmYtXHUwMDNldGNmX3RtKTtcbitcdHRjZl9hY3Rpb25fdXBkYXRlX2JzdGF0cyhcdTAwMjZmLVx1MDAzZWNvbW1vbiwgc2tiKTtcbitcdHJldHZhbCA9IFJFQURfT05DRShmLVx1MDAzZXRjZl9hY3Rpb24pO1xuK1xuK1x0aWYgKGYtXHUwMDNlZnVuYyA9PSBUQ0FfRlJFUl9GVU5DX1BVU0gpIHtcbitcdFx0c3RydWN0IGZyZXJfc2VxZ2VuICpzZyA9IFx1MDAyNmYtXHUwMDNlc2VxZ2VuO1xuK1x0XHR1MTYgc2VxO1xuK1xuK1x0XHRzcGluX2xvY2soXHUwMDI2c2ctXHUwMDNlbG9jayk7XG4rXHRcdHNlcSA9ICh1MTYpc2ctXHUwMDNlZ2VuX3NlcV9udW07XG4rXHRcdGlmICgrK3NnLVx1MDAzZWdlbl9zZXFfbnVtIFx1MDAzZT0gc2ctXHUwMDNlc2VxX3NwYWNlKVxuK1x0XHRcdHNnLVx1MDAzZWdlbl9zZXFfbnVtID0gMDtcbitcdFx0c2ctXHUwMDNlc3RhdHNfcGt0cysrO1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZzZy1cdTAwM2Vsb2NrKTtcbitcbitcdFx0aWYgKGZyZXJfcnRhZ19wdXNoKHNrYiwgc2VxKSBcdTAwM2MgMCkge1xuK1x0XHRcdHRjZl9hY3Rpb25faW5jX2Ryb3BfcXN0YXRzKFx1MDAyNmYtXHUwMDNlY29tbW9uKTtcbitcdFx0XHRyZXR1cm4gVENfQUNUX1NIT1Q7XG4rXHRcdH1cbitcdH0gZWxzZSB7XG4rXHRcdHN0cnVjdCBmcmVyX3JjdnkgKnJjdnkgPSBcdTAwMjZmLVx1MDAzZXJjdnk7XG4rXHRcdGJvb2wgcGFzcztcbitcdFx0aW50IHNlcTtcbitcbitcdFx0aWYgKGZyZXJfcnRhZ19kZWNvZGUoc2tiLCBcdTAwMjZzZXEpIFx1MDAzYyAwKSB7XG4rXHRcdFx0dGNmX2FjdGlvbl9pbmNfZHJvcF9xc3RhdHMoXHUwMDI2Zi1cdTAwM2Vjb21tb24pO1xuK1x0XHRcdHJldHVybiBUQ19BQ1RfU0hPVDtcbitcdFx0fVxuK1xuK1x0XHRzcGluX2xvY2soXHUwMDI2cmN2eS1cdTAwM2Vsb2NrKTtcbitcdFx0aWYgKHJjdnktXHUwMDNlYWxnID09IFRDQV9GUkVSX1JDVllfVkVDVE9SX0FMRylcbitcdFx0XHRwYXNzID0gZnJlcl92ZWN0b3JfYWxnKHJjdnksIHNlcSwgZi1cdTAwM2VpbmRpdmlkdWFsKTtcbitcdFx0ZWxzZVxuK1x0XHRcdHBhc3MgPSBmcmVyX21hdGNoX2FsZyhyY3Z5LCBzZXEsIGYtXHUwMDNlaW5kaXZpZHVhbCk7XG4rXG4rXHRcdGlmIChwYXNzKSB7XG4rXHRcdFx0cmN2eS1cdTAwM2VzdGF0c19wYXNzZWRfcGt0cysrO1xuK1x0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnJjdnktXHUwMDNlbG9jayk7XG4rXHRcdFx0aWYgKGYtXHUwMDNldGFnX3BvcClcbitcdFx0XHRcdGZyZXJfcnRhZ19wb3Aoc2tiKTtcbitcdFx0XHRyZXR1cm4gcmV0dmFsO1xuK1x0XHR9XG4rXG4rXHRcdHJjdnktXHUwMDNlc3RhdHNfZGlzY2FyZGVkX3BrdHMrKztcbitcdFx0c3Bpbl91bmxvY2soXHUwMDI2cmN2eS1cdTAwM2Vsb2NrKTtcbitcdFx0cmV0dXJuIFRDX0FDVF9TSE9UO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHJldHZhbDtcbit9XG4rXG4rLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4rLyogRHVtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuK1xuK3N0YXRpYyBpbnQgdGNmX2ZyZXJfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuK1x0XHRcdCBpbnQgYmluZCwgaW50IHJlZilcbit7XG4rXHR1bnNpZ25lZCBjaGFyICpiID0gc2tiX3RhaWxfcG9pbnRlcihza2IpO1xuK1x0c3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhKTtcbitcdHN0cnVjdCB0Y19mcmVyIG9wdCA9IHtcbitcdFx0LmluZGV4ICAgPSBmLVx1MDAzZXRjZl9pbmRleCxcbitcdFx0LnJlZmNudCAgPSByZWZjb3VudF9yZWFkKFx1MDAyNmYtXHUwMDNldGNmX3JlZmNudCkgLSByZWYsXG4rXHRcdC5iaW5kY250ID0gYXRvbWljX3JlYWQoXHUwMDI2Zi1cdTAwM2V0Y2ZfYmluZGNudCkgLSBiaW5kLFxuK1x0fTtcbitcdHN0cnVjdCB0Y2ZfdCB0O1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmYtXHUwMDNldGNmX2xvY2spO1xuK1x0b3B0LmFjdGlvbiA9IGYtXHUwMDNldGNmX2FjdGlvbjtcbitcbitcdGlmIChubGFfcHV0KHNrYiwgVENBX0ZSRVJfUEFSTVMsIHNpemVvZihvcHQpLCBcdTAwMjZvcHQpKVxuK1x0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcdGlmIChubGFfcHV0X3U4KHNrYiwgVENBX0ZSRVJfRlVOQywgZi1cdTAwM2VmdW5jKSlcbitcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRpZiAobmxhX3B1dF91OChza2IsIFRDQV9GUkVSX1RBR19UWVBFLCBmLVx1MDAzZXRhZ190eXBlKSlcbitcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRpZiAoZi1cdTAwM2V0YWdfcG9wIFx1MDAyNlx1MDAyNiBubGFfcHV0X2ZsYWcoc2tiLCBUQ0FfRlJFUl9SQ1ZZX1RBR19QT1ApKVxuK1x0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcbitcdGlmIChmLVx1MDAzZWZ1bmMgPT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7XG4rXHRcdHNwaW5fbG9jayhcdTAwMjZmLVx1MDAzZXNlcWdlbi5sb2NrKTtcbitcdFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfU0VRR0VOX1BLVFMsXG4rXHRcdFx0XHQgICAgICBmLVx1MDAzZXNlcWdlbi5zdGF0c19wa3RzLCBUQ0FfRlJFUl9QQUQpKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2Zi1cdTAwM2VzZXFnZW4ubG9jayk7XG4rXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRcdH1cbitcdFx0c3Bpbl91bmxvY2soXHUwMDI2Zi1cdTAwM2VzZXFnZW4ubG9jayk7XG4rXHR9IGVsc2Uge1xuK1x0XHR1NjQgdGFnbGVzcywgb29vLCByb2d1ZSwgbG9zdCwgcmVzZXRzLCBwYXNzZWQsIGRpc2NhcmRlZDtcbitcdFx0c3RydWN0IGZyZXJfcmN2eSAqcmN2eSA9IFx1MDAyNmYtXHUwMDNlcmN2eTtcbitcbitcdFx0c3Bpbl9sb2NrKFx1MDAyNnJjdnktXHUwMDNlbG9jayk7XG4rXHRcdHRhZ2xlc3MgICAgPSByY3Z5LVx1MDAzZXN0YXRzX3RhZ2xlc3NfcGt0cztcbitcdFx0b29vICAgICAgICA9IHJjdnktXHUwMDNlc3RhdHNfb3V0X29mX29yZGVyX3BrdHM7XG4rXHRcdHJvZ3VlICAgICAgPSByY3Z5LVx1MDAzZXN0YXRzX3JvZ3VlX3BrdHM7XG4rXHRcdGxvc3QgICAgICAgPSByY3Z5LVx1MDAzZXN0YXRzX2xvc3RfcGt0cztcbitcdFx0cmVzZXRzICAgICA9IHJjdnktXHUwMDNlc3RhdHNfcmVzZXRzO1xuK1x0XHRwYXNzZWQgICAgID0gcmN2eS1cdTAwM2VzdGF0c19wYXNzZWRfcGt0cztcbitcdFx0ZGlzY2FyZGVkICA9IHJjdnktXHUwMDNlc3RhdHNfZGlzY2FyZGVkX3BrdHM7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnJjdnktXHUwMDNlbG9jayk7XG4rXG4rXHRcdGlmIChmLVx1MDAzZWluZGl2aWR1YWwgXHUwMDI2XHUwMDI2IG5sYV9wdXRfZmxhZyhza2IsIFRDQV9GUkVSX1JDVllfSU5ESVZJRFVBTCkpXG4rXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRcdGlmIChubGFfcHV0X3U4KHNrYiwgVENBX0ZSRVJfUkNWWV9BTEcsIHJjdnktXHUwMDNlYWxnKSlcbitcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcdFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBUQ0FfRlJFUl9SQ1ZZX0hJU1RPUllfTEVOLCByY3Z5LVx1MDAzZWhpc3RvcnlfbGVuKSlcbitcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcdFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgVENBX0ZSRVJfUkNWWV9SRVNFVF9NU0VDLCByY3Z5LVx1MDAzZXJlc2V0X21zZWMpKVxuK1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuK1x0XHRpZiAocmN2eS1cdTAwM2V0YWtlX25vX3NlcSBcdTAwMjZcdTAwMjYgbmxhX3B1dF9mbGFnKHNrYiwgVENBX0ZSRVJfUkNWWV9UQUtFX05PX1NFUSkpXG4rXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX1RBR0xFU1NfUEtUUyxcbitcdFx0XHRcdCAgICAgIHRhZ2xlc3MsIFRDQV9GUkVSX1BBRCkpXG4rXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX09VVF9PRl9PUkRFUl9QS1RTLFxuK1x0XHRcdFx0ICAgICAgb29vLCBUQ0FfRlJFUl9QQUQpKVxuK1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuK1x0XHRpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9TVEFUU19ST0dVRV9QS1RTLFxuK1x0XHRcdFx0ICAgICAgcm9ndWUsIFRDQV9GUkVSX1BBRCkpXG4rXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX0xPU1RfUEtUUyxcbitcdFx0XHRcdCAgICAgIGxvc3QsIFRDQV9GUkVSX1BBRCkpXG4rXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX1JFU0VUUyxcbitcdFx0XHRcdCAgICAgIHJlc2V0cywgVENBX0ZSRVJfUEFEKSlcbitcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcdFx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgVENBX0ZSRVJfU1RBVFNfUEFTU0VEX1BLVFMsXG4rXHRcdFx0XHQgICAgICBwYXNzZWQsIFRDQV9GUkVSX1BBRCkpXG4rXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4rXHRcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFRDQV9GUkVSX1NUQVRTX0RJU0NBUkRFRF9QS1RTLFxuK1x0XHRcdFx0ICAgICAgZGlzY2FyZGVkLCBUQ0FfRlJFUl9QQUQpKVxuK1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuK1x0fVxuK1xuK1x0dGNmX3RtX2R1bXAoXHUwMDI2dCwgXHUwMDI2Zi1cdTAwM2V0Y2ZfdG0pO1xuK1x0aWYgKG5sYV9wdXRfNjRiaXQoc2tiLCBUQ0FfRlJFUl9UTSwgc2l6ZW9mKHQpLCBcdTAwMjZ0LCBUQ0FfRlJFUl9QQUQpKVxuK1x0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmYtXHUwMDNldGNmX2xvY2spO1xuK1x0cmV0dXJuIHNrYi1cdTAwM2VsZW47XG4rXG4rbmxhX3B1dF9mYWlsdXJlOlxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Zi1cdTAwM2V0Y2ZfbG9jayk7XG4rXHRubG1zZ190cmltKHNrYiwgYik7XG4rXHRyZXR1cm4gLTE7XG4rfVxuK1xuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuKy8qIENsZWFudXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbitcbitzdGF0aWMgdm9pZCB0Y2ZfZnJlcl9jbGVhbnVwKHN0cnVjdCB0Y19hY3Rpb24gKmEpXG4re1xuK1x0c3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhKTtcbitcbitcdGlmIChmLVx1MDAzZWZ1bmMgPT0gVENBX0ZSRVJfRlVOQ19SRUNPVkVSKVxuK1x0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZmLVx1MDAzZXJjdnkuaHJ0aW1lcik7XG4rfVxuK1xuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuKy8qIFdhbGtlciAvIHNlYXJjaCAvIHN0YXRzIC8gZmlsbC1zaXplIC8gb2ZmbG9hZCAgICAgICAgICAgICAgICAgICAgICAqL1xuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuK1xuK3N0YXRpYyBpbnQgdGNmX2ZyZXJfd2Fsa2VyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbitcdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsIGludCB0eXBlLFxuK1x0XHRcdCAgIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb25fb3BzICpvcHMsXG4rXHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCB0Y19hY3Rpb25fbmV0ICp0biA9IG5ldF9nZW5lcmljKG5ldCwgYWN0X2ZyZXJfb3BzLm5ldF9pZCk7XG4rXG4rXHRyZXR1cm4gdGNmX2dlbmVyaWNfd2Fsa2VyKHRuLCBza2IsIGNiLCB0eXBlLCBvcHMsIGV4dGFjayk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRjZl9mcmVyX3N0YXRzX3VwZGF0ZShzdHJ1Y3QgdGNfYWN0aW9uICphLCB1NjQgYnl0ZXMsIHU2NCBwYWNrZXRzLFxuK1x0XHRcdFx0ICB1NjQgZHJvcHMsIHU2NCBsYXN0dXNlLCBib29sIGh3KVxuK3tcbitcdHN0cnVjdCB0Y2ZfZnJlciAqZiA9IHRvX2ZyZXIoYSk7XG4rXHRzdHJ1Y3QgdGNmX3QgKnRtID0gXHUwMDI2Zi1cdTAwM2V0Y2ZfdG07XG4rXG4rXHR0Y2ZfYWN0aW9uX3VwZGF0ZV9zdGF0cyhhLCBieXRlcywgcGFja2V0cywgZHJvcHMsIGh3KTtcbitcdHRtLVx1MDAzZWxhc3R1c2UgPSBtYXhfdCh1NjQsIHRtLVx1MDAzZWxhc3R1c2UsIGxhc3R1c2UpO1xuK31cbitcbitzdGF0aWMgc2l6ZV90IHRjZl9mcmVyX2dldF9maWxsX3NpemUoY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYWN0KVxuK3tcbitcdHJldHVybiBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHRjX2ZyZXIpKSAvKiBUQ0FfRlJFUl9QQVJNUyAqL1xuK1x0XHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIFRDQV9GUkVSX0ZVTkMgKi9cbitcdFx0KyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBUQ0FfRlJFUl9UQUdfVFlQRSAqL1xuK1x0XHQrIG5sYV90b3RhbF9zaXplKDApIC8qIFRDQV9GUkVSX1JDVllfVEFHX1BPUCAoZmxhZykgKi9cbitcdFx0KyBubGFfdG90YWxfc2l6ZSgwKSAvKiBUQ0FfRlJFUl9SQ1ZZX0lORElWSURVQUwgKGZsYWcpICovXG4rXHRcdCsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHU4KSkgLyogVENBX0ZSRVJfUkNWWV9BTEcgKi9cbitcdFx0KyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBUQ0FfRlJFUl9SQ1ZZX0hJU1RPUllfTEVOICovXG4rXHRcdCsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpIC8qIFRDQV9GUkVSX1JDVllfUkVTRVRfTVNFQyAqL1xuK1x0XHQrIG5sYV90b3RhbF9zaXplKDApIC8qIFRDQV9GUkVSX1JDVllfVEFLRV9OT19TRVEgKGZsYWcpICovXG4rXHRcdCsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX1RBR0xFU1NfUEtUUyAqL1xuK1x0XHQrIG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19PVVRfT0ZfT1JERVJfUEtUUyAqL1xuK1x0XHQrIG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19ST0dVRV9QS1RTICovXG4rXHRcdCsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIFRDQV9GUkVSX1NUQVRTX0xPU1RfUEtUUyAqL1xuK1x0XHQrIG5sYV90b3RhbF9zaXplXzY0Yml0KHNpemVvZih1NjQpKSAvKiBUQ0FfRlJFUl9TVEFUU19SRVNFVFMgKi9cbitcdFx0KyBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2YodTY0KSkgLyogVENBX0ZSRVJfU1RBVFNfUEFTU0VEX1BLVFMgKi9cbitcdFx0KyBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2YodTY0KSkgLyogVENBX0ZSRVJfU1RBVFNfRElTQ0FSREVEX1BLVFMgKi9cbitcdFx0KyBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2Yoc3RydWN0IHRjZl90KSk7IC8qIFRDQV9GUkVSX1RNICovXG4rfVxuK1xuK3N0YXRpYyBpbnQgdGNmX2ZyZXJfb2ZmbG9hZF9hY3Rfc2V0dXAoc3RydWN0IHRjX2FjdGlvbiAqYWN0LCB2b2lkICplbnRyeV9kYXRhLFxuK1x0XHRcdFx0ICAgICAgdTMyICppbmRleF9pbmMsIGJvb2wgYmluZCxcbitcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbit7XG4rXHRpZiAoYmluZCkge1xuK1x0XHRzdHJ1Y3QgZmxvd19hY3Rpb25fZW50cnkgKmVudHJ5ID0gZW50cnlfZGF0YTtcbitcdFx0c3RydWN0IHRjZl9mcmVyICpmID0gdG9fZnJlcihhY3QpO1xuK1xuK1x0XHRlbnRyeS1cdTAwM2VpZCAgICAgICAgICAgID0gRkxPV19BQ1RJT05fRlJFUjtcbitcdFx0ZW50cnktXHUwMDNlZnJlci5mdW5jICAgICA9IGYtXHUwMDNlZnVuYztcbitcdFx0ZW50cnktXHUwMDNlZnJlci50YWdfdHlwZSA9IGYtXHUwMDNldGFnX3R5cGU7XG4rXHRcdGVudHJ5LVx1MDAzZWZyZXIudGFnX3BvcCAgPSBmLVx1MDAzZXRhZ19wb3A7XG4rXG4rXHRcdGlmIChmLVx1MDAzZWZ1bmMgIT0gVENBX0ZSRVJfRlVOQ19QVVNIKSB7XG4rXHRcdFx0ZW50cnktXHUwMDNlZnJlci5pbmRpdmlkdWFsICAgICAgID0gZi1cdTAwM2VpbmRpdmlkdWFsO1xuK1x0XHRcdGVudHJ5LVx1MDAzZWZyZXIucmN2eV9hbGcgICAgICAgICA9IGYtXHUwMDNlcmN2eS5hbGc7XG4rXHRcdFx0ZW50cnktXHUwMDNlZnJlci5yY3Z5X2hpc3RvcnlfbGVuID0gZi1cdTAwM2VyY3Z5Lmhpc3RvcnlfbGVuO1xuK1x0XHRcdGVudHJ5LVx1MDAzZWZyZXIucmN2eV9yZXNldF9tc2VjICA9IGYtXHUwMDNlcmN2eS5yZXNldF9tc2VjO1xuK1x0XHRcdGVudHJ5LVx1MDAzZWZyZXIudGFrZV9ub19zZXEgICAgICA9IGYtXHUwMDNlcmN2eS50YWtlX25vX3NlcTtcbitcdFx0fVxuK1x0XHQqaW5kZXhfaW5jID0gMTtcbitcdH0gZWxzZSB7XG4rXHRcdHN0cnVjdCBmbG93X29mZmxvYWRfYWN0aW9uICpmbF9hY3Rpb24gPSBlbnRyeV9kYXRhO1xuK1xuK1x0XHRmbF9hY3Rpb24tXHUwMDNlaWQgPSBGTE9XX0FDVElPTl9GUkVSO1xuK1x0fVxuK1x0cmV0dXJuIDA7XG4rfVxuK1xuKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuKy8qIE1vZHVsZSBnbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbitcbitzdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0X2ZyZXJfb3BzID0ge1xuK1x0LmtpbmRcdFx0ICAgID0gXCJmcmVyXCIsXG4rXHQuaWRcdFx0ICAgID0gVENBX0lEX0ZSRVIsXG4rXHQub3duZXJcdFx0ICAgID0gVEhJU19NT0RVTEUsXG4rXHQuYWN0XHRcdCAgICA9IHRjZl9mcmVyX2FjdCxcbitcdC5pbml0XHRcdCAgICA9IHRjZl9mcmVyX2luaXQsXG4rXHQuY2xlYW51cFx0ICAgID0gdGNmX2ZyZXJfY2xlYW51cCxcbitcdC5kdW1wXHRcdCAgICA9IHRjZl9mcmVyX2R1bXAsXG4rXHQud2Fsa1x0XHQgICAgPSB0Y2ZfZnJlcl93YWxrZXIsXG4rXHQuc3RhdHNfdXBkYXRlXHQgICAgPSB0Y2ZfZnJlcl9zdGF0c191cGRhdGUsXG4rXHQuZ2V0X2ZpbGxfc2l6ZVx0ICAgID0gdGNmX2ZyZXJfZ2V0X2ZpbGxfc2l6ZSxcbitcdC5vZmZsb2FkX2FjdF9zZXR1cCAgPSB0Y2ZfZnJlcl9vZmZsb2FkX2FjdF9zZXR1cCxcbitcdC5zaXplXHRcdCAgICA9IHNpemVvZihzdHJ1Y3QgdGNmX2ZyZXIpLFxuK307XG4rXG4rc3RhdGljIF9fbmV0X2luaXQgaW50IGZyZXJfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxuK3tcbitcdHN0cnVjdCB0Y19hY3Rpb25fbmV0ICp0biA9IG5ldF9nZW5lcmljKG5ldCwgYWN0X2ZyZXJfb3BzLm5ldF9pZCk7XG4rXG4rXHRyZXR1cm4gdGNfYWN0aW9uX25ldF9pbml0KG5ldCwgdG4sIFx1MDAyNmFjdF9mcmVyX29wcyk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZnJlcl9leGl0X25ldChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfbGlzdClcbit7XG4rXHR0Y19hY3Rpb25fbmV0X2V4aXQobmV0X2xpc3QsIGFjdF9mcmVyX29wcy5uZXRfaWQpO1xuK31cbitcbitzdGF0aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIGZyZXJfbmV0X29wcyA9IHtcbitcdC5pbml0ICAgICAgID0gZnJlcl9pbml0X25ldCxcbitcdC5leGl0X2JhdGNoID0gZnJlcl9leGl0X25ldCxcbitcdC5pZCAgICAgICAgID0gXHUwMDI2YWN0X2ZyZXJfb3BzLm5ldF9pZCxcbitcdC5zaXplICAgICAgID0gc2l6ZW9mKHN0cnVjdCB0Y19hY3Rpb25fbmV0KSxcbit9O1xuK1xuK3N0YXRpYyBpbnQgX19pbml0IGZyZXJfaW5pdF9tb2R1bGUodm9pZClcbit7XG4rXHRyZXR1cm4gdGNmX3JlZ2lzdGVyX2FjdGlvbihcdTAwMjZhY3RfZnJlcl9vcHMsIFx1MDAyNmZyZXJfbmV0X29wcyk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIF9fZXhpdCBmcmVyX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4re1xuK1x0dGNmX3VucmVnaXN0ZXJfYWN0aW9uKFx1MDAyNmFjdF9mcmVyX29wcywgXHUwMDI2ZnJlcl9uZXRfb3BzKTtcbit9XG4rXG4rbW9kdWxlX2luaXQoZnJlcl9pbml0X21vZHVsZSk7XG4rbW9kdWxlX2V4aXQoZnJlcl9jbGVhbnVwX21vZHVsZSk7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4rTU9EVUxFX0RFU0NSSVBUSU9OKFwiSUVFRSA4MDIuMUNCIEZSRVIgdGMgYWN0aW9uXCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuaW5kZXggNmExOTBhNTI1YTM5MTcuLjY3Yjg5NjYxMWYwODY1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbkBAIC0zOCw2ICszOCw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcbiBcdGZpYl9ydWxlX3Rlc3RzLnNoIFxcXG4gXHRmaWJfdGVzdHMuc2ggXFxcbiBcdGZpbl9hY2tfbGF0LnNoIFxcXG4rXHRmcmVyX3Rlc3Quc2ggXFxcbiBcdGZxX2JhbmRfcGt0bGltaXQuc2ggXFxcbiBcdGdyZV9nc28uc2ggXFxcbiBcdGdyZV9pcHY2X2xsYWRkci5zaCBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mcmVyX3Rlc3Quc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZnJlcl90ZXN0LnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmVjZDg4OTUyZjQ5NTgxXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZnJlcl90ZXN0LnNoXG5AQCAtMCwwICsxLDEwMTMgQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjIENvcHlyaWdodCAyMDI2IE5YUFxuKyNcbisjIGZyZXJfdGVzdC5zaCAtIElFRUUgODAyLjFDQiBGUkVSIHRjIGFjdGlvbiBrc2VsZnRlc3RcbisjXG4rIyBUb3BvbG9neSBmb3IgdGVzdHMgMS00OlxuKyNcbisjICAgbnNfdGFsa2VyICBib25kMCAodmV0aF9hMCArIHZldGhfYjApICBcdTAwM2MtLS1cdTAwM2UgIGJvbmQxICh2ZXRoX2ExICsgdmV0aF9iMSkgIG5zX2xpc3RlbmVyXG4rI1xuKyMgICBJUF9TUkMgYXNzaWduZWQgdG8gYm9uZDA7ICBJUF9EU1QgYXNzaWduZWQgdG8gYm9uZDFcbisjXG4rIyAgIGJvbmQgbW9kZTogYmFsYW5jZS1yciAocm91bmQtcm9iaW4pLCBzbyBmcmFtZXMgYXJlIGRpc3RyaWJ1dGVkIGFjcm9zc1xuKyMgICAgICAgICAgICAgIGJvdGggc2xhdmVzLiAgRlJFUiBwdXNoIGlzIGNvbmZpZ3VyZWQgb24gYm90aCB2ZXRoX2EwIGFuZFxuKyMgICAgICAgICAgICAgIHZldGhfYjAgZWdyZXNzIHdpdGggY3Jvc3MtbWlycm9yIHNvIGV2ZXJ5IGZyYW1lIHNlbnQgYnkgZWl0aGVyXG4rIyAgICAgICAgICAgICAgc2xhdmUgY2FycmllcyBhbiBSLVRBRyBhbmQgYSBtaXJyb3JlZCBjb3B5IHJlYWNoZXMgdGhlIHBlZXIuXG4rIyAgIEZSRVIgcmVjb3ZlcjogdmV0aF9hMS92ZXRoX2IxIGluZ3Jlc3MsIHNoYXJlZCBvciBpbmRpdmlkdWFsIHJlY292ZXIgcGVyIHRlc3RcbisjXG4rIyAgIFBpbmcgcnVucyBmcm9tIGJvbmQwIHRvIGJvbmQxOyB0Y3BkdW1wIGNhcHR1cmVzIG9uIGJvbmQxIChvciBvbiBpbmRpdmlkdWFsXG4rIyAgIHNsYXZlIGludGVyZmFjZXMgZm9yIHRlc3RzIHdoZXJlIGJvdGggY29waWVzIG11c3QgYmUgb2JzZXJ2YWJsZSkuXG4rI1xuKyMgVGVzdCA1OiBzaW1wbGUgcG9pbnQtdG8tcG9pbnQsIHNlbGYtY29udGFpbmVkIHRvcG9sb2d5IChubyBib25kKS5cbisjIFRlc3QgNjogcmVsYXkgc3lzdGVtLCBzZWxmLWNvbnRhaW5lZCB0b3BvbG9neS5cbisjXG4rIyBBbGwgbmFtZXNwYWNlcywgdmV0aCBwYWlycywgYm9uZCBpbnRlcmZhY2VzLCB0YyBydWxlcyBhbmQgYWRkcmVzc2VzIGFyZVxuKyMgY3JlYXRlZCBhbmQgZGVzdHJveWVkIHdpdGhpbiB0aGlzIHNjcmlwdC4gIEV4dGVybmFsIGRlcGVuZGVuY2llczpcbisjICAgLSBrZXJuZWwgd2l0aCBDT05GSUdfTkVUX0FDVF9GUkVSIGFuZCBDT05GSUdfQk9ORElOR1xuKyMgICAtIGlwcm91dGUyIHRjIHdpdGggZnJlciBhY3Rpb24gc3VwcG9ydFxuKyMgICAtIHRjcGR1bXAsIHBpbmdcbisjICAgLSByb290IHByaXZpbGVnZXNcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIGtzZWxmdGVzdCBsaWJyYXJ5OiBUQVAgb3V0cHV0ICsgZXhpdC1jb2RlIGNvbnN0YW50c1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK2tzZnRfbGliPVwiJHtLU0ZUX0xJQjotJChkaXJuYW1lIFwiJDBcIikvLi4va3NlbGZ0ZXN0L2xpYi5zaH1cIlxuK2lmIFsgLWYgXCIka3NmdF9saWJcIiBdOyB0aGVuXG4rXHQjIHNoZWxsY2hlY2sgc291cmNlPS9kZXYvbnVsbFxuK1x0LiBcIiRrc2Z0X2xpYlwiXG4rZWxzZVxuK1x0IyBNaW5pbWFsIGZhbGxiYWNrIHdoZW4gcnVuIG91dHNpZGUgdGhlIGtzZWxmdGVzdCB0cmVlXG4rXHRLU0ZUX1BBU1M9MFxuK1x0S1NGVF9GQUlMPTFcbitcdEtTRlRfU0tJUD00XG4rXHRfa3NmdF9jb3VudD0wXG4rXHRfa3NmdF9wYXNzPTBcbitcdF9rc2Z0X2ZhaWw9MFxuK1x0X2tzZnRfc2tpcD0wXG4rXG4rXHRrc2Z0X3ByaW50X2hlYWRlcigpIHsgZWNobyBcIlRBUCB2ZXJzaW9uIDEzXCI7IH1cbitcdGtzZnRfc2V0X3BsYW4oKSAgICAgeyBlY2hvIFwiMS4uJDFcIjsgfVxuK1x0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCkge1xuK1x0XHRfa3NmdF9jb3VudD0kKChfa3NmdF9jb3VudCArIDEpKTsgX2tzZnRfcGFzcz0kKChfa3NmdF9wYXNzICsgMSkpXG4rXHRcdGVjaG8gXCJvayAkX2tzZnRfY291bnQgLSAkKlwiXG4rXHR9XG4rXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoKSB7XG4rXHRcdF9rc2Z0X2NvdW50PSQoKF9rc2Z0X2NvdW50ICsgMSkpOyBfa3NmdF9mYWlsPSQoKF9rc2Z0X2ZhaWwgKyAxKSlcbitcdFx0ZWNobyBcIm5vdCBvayAkX2tzZnRfY291bnQgLSAkKlwiXG4rXHR9XG4rXHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoKSB7XG4rXHRcdF9rc2Z0X2NvdW50PSQoKF9rc2Z0X2NvdW50ICsgMSkpOyBfa3NmdF9za2lwPSQoKF9rc2Z0X3NraXAgKyAxKSlcbitcdFx0ZWNobyBcIm9rICRfa3NmdF9jb3VudCAtICQqICMgU0tJUFwiXG4rXHR9XG4rXHRrc2Z0X3ByaW50X2NudHMoKSB7XG4rXHRcdGVjaG8gXCIjIFRvdGFsczogcGFzcz0kX2tzZnRfcGFzcyBmYWlsPSRfa3NmdF9mYWlsIHNraXA9JF9rc2Z0X3NraXBcIlxuK1x0fVxuK1x0a3NmdF9leGl0X3Bhc3MoKSAgICAgeyBleGl0ICRLU0ZUX1BBU1M7IH1cbitcdGtzZnRfZXhpdF9mYWlsKCkgICAgIHsgZXhpdCAkS1NGVF9GQUlMOyB9XG4rXHRrc2Z0X2V4aXRfZmFpbF9tc2coKSB7IGVjaG8gXCIjIEZBVEFMOiAkKlwiIFx1MDAzZVx1MDAyNjI7IGV4aXQgJEtTRlRfRkFJTDsgfVxuK2ZpXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBDb25maWd1cmF0aW9uIChvdmVycmlkZSB2aWEgZW52aXJvbm1lbnQpXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rVEM9XCIke1RDOi10Y31cIlxuK1BJTkc9XCIke1BJTkc6LXBpbmd9XCJcbitUQ1BEVU1QPVwiJHtUQ1BEVU1QOi10Y3BkdW1wfVwiXG4rUElOR19DT1VOVD1cIiR7UElOR19DT1VOVDotNX1cIlxuK1BJTkdfVElNRU9VVD1cIiR7UElOR19USU1FT1VUOi0yfVwiXG4rU0tJUF9NT0RQUk9CRT1cIiR7U0tJUF9NT0RQUk9CRTotMH1cIlxuK1xuKyMgQm9uZCB0b3BvbG9neSBpbnRlcmZhY2VzICh0ZXN0cyAxLTQpXG4rcmVhZG9ubHkgVkVUSF9BMD1cImZyZXJfYTBcIlxuK3JlYWRvbmx5IFZFVEhfQTE9XCJmcmVyX2ExXCJcbityZWFkb25seSBWRVRIX0IwPVwiZnJlcl9iMFwiXG4rcmVhZG9ubHkgVkVUSF9CMT1cImZyZXJfYjFcIlxuK3JlYWRvbmx5IEJPTkQwPVwiZnJlcl9ib25kMFwiXG4rcmVhZG9ubHkgQk9ORDE9XCJmcmVyX2JvbmQxXCJcbitcbityZWFkb25seSBOU19UQUxLRVI9XCJmcmVyX25zX3RhbGtlclwiXG4rcmVhZG9ubHkgTlNfTElTVEVORVI9XCJmcmVyX25zX2xpc3RlbmVyXCJcbitcbityZWFkb25seSBJUF9TUkM9XCIxMC4wLjAuMVwiXG4rcmVhZG9ubHkgSVBfRFNUPVwiMTAuMC4wLjJcIlxuK1xuKyMgUG9pbnQtdG8tcG9pbnQgdG9wb2xvZ3kgaW50ZXJmYWNlcyAodGVzdCA1KVxuK3JlYWRvbmx5IFAyUF9OU19TUkM9XCJmcmVyX3AycF9zcmNcIlxuK3JlYWRvbmx5IFAyUF9OU19EU1Q9XCJmcmVyX3AycF9kc3RcIlxuK3JlYWRvbmx5IFAyUF9WRVRIX0EwPVwiZnJlcl9wMnBfYTBcIlxuK3JlYWRvbmx5IFAyUF9WRVRIX0ExPVwiZnJlcl9wMnBfYTFcIlxuK3JlYWRvbmx5IElQX1AyUF9TUkM9XCIxMC4wLjEuMVwiXG4rcmVhZG9ubHkgSVBfUDJQX0RTVD1cIjEwLjAuMS4yXCJcbitcbisjIFJlbGF5IHRvcG9sb2d5IGludGVyZmFjZXMgKHRlc3QgNilcbisjXG4rIyAgIG5zX3RhbGtlciAodGFsa2VyX2V0aC4xMDApIC0tIHRhbGtlcl9ldGgvYnIwX3VwbGluayAtLSBicmlkZ2UwIChicl9yMClcbisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0gYnIwX3N3cDAvYnIxX3N3cDAgLS1cXFxuKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcLS0gYnIwX3N3cDEvYnIxX3N3cDEgLS0rLS1cXFxuKyNcdFx0YnJpZGdlMSAoYnJfcjEpIC0tIGJyMV9kb3dubGluay9saXN0ZW5lcl9ldGggLS0gbnNfbGlzdGVuZXJcbisjXG4rIyBicmlkZ2UwIGFjdHMgYXMgc2VxdWVuY2UgZ2VuZXJhdG9yIChmcmVyIHB1c2ggKyByZXBsaWNhdGUgdG8gYm90aCBwYXRocykuXG4rIyBicmlkZ2UxIGFjdHMgYXMgZWxpbWluYXRvciAoZnJlciByZWNvdmVyLCBzaGFyZWQsIHRhZy1wb3ApLlxuK3JlYWRvbmx5IFJfTlNfVEFMS0VSPVwiZnJlcl9yX3RhbGtlclwiXG4rcmVhZG9ubHkgUl9OU19CUklER0UwPVwiZnJlcl9yX2JyaWRnZTBcIlxuK3JlYWRvbmx5IFJfTlNfQlJJREdFMT1cImZyZXJfcl9icmlkZ2UxXCJcbityZWFkb25seSBSX05TX0xJU1RFTkVSPVwiZnJlcl9yX2xpc3RlbmVyXCJcbityZWFkb25seSBSX1RBTEtFUl9FVEg9XCJyX3Rsa19ldGhcIiAgICAgICAjIHRhbGtlci1zaWRlIHBoeXNpY2FsIHBvcnRcbityZWFkb25seSBSX0JSMF9VUExJTks9XCJyX2JyMF91cGxpbmtcIiAgICAjIGJyaWRnZTAgdXBsaW5rIGZhY2luZyB0YWxrZXJcbityZWFkb25seSBSX0JSMF9TV1AwPVwicl9icjBfc3dwMFwiICAgICAgICAjIGJyaWRnZTAgcmVkdW5kYW50IHBhdGggcG9ydCAwXG4rcmVhZG9ubHkgUl9CUjBfU1dQMT1cInJfYnIwX3N3cDFcIiAgICAgICAgIyBicmlkZ2UwIHJlZHVuZGFudCBwYXRoIHBvcnQgMVxuK3JlYWRvbmx5IFJfQlIxX1NXUDA9XCJyX2JyMV9zd3AwXCIgICAgICAgICMgYnJpZGdlMSByZWR1bmRhbnQgcGF0aCBwb3J0IDBcbityZWFkb25seSBSX0JSMV9TV1AxPVwicl9icjFfc3dwMVwiICAgICAgICAjIGJyaWRnZTEgcmVkdW5kYW50IHBhdGggcG9ydCAxXG4rcmVhZG9ubHkgUl9CUjFfRE9XTkxJTks9XCJyX2JyMV9kd25sbmtcIiAgIyBicmlkZ2UxIGRvd25saW5rIGZhY2luZyBsaXN0ZW5lclxuK3JlYWRvbmx5IFJfTElTVEVORVJfRVRIPVwicl9sc3RfZXRoXCIgICAgICMgbGlzdGVuZXItc2lkZSBwaHlzaWNhbCBwb3J0XG4rcmVhZG9ubHkgUl9CUjA9XCJicl9yMFwiXG4rcmVhZG9ubHkgUl9CUjE9XCJicl9yMVwiXG4rcmVhZG9ubHkgUl9WTEFOPTEwMFxuK3JlYWRvbmx5IFJfSVBfVEFMS0VSPVwiMTAuMS4wLjFcIlxuK3JlYWRvbmx5IFJfSVBfTElTVEVORVI9XCIxMC4xLjAuMlwiXG4rXG4rIyBGUkVSIGFjdGlvbiBpbmRleCBjb25zdGFudHNcbityZWFkb25seSBJRFhfUFVTSD0xXG4rcmVhZG9ubHkgSURYX1NIQVJFRF9SQ1ZZPTEwXG4rcmVhZG9ubHkgSURYX0lORFZfUkNWWV9BPTIwXG4rcmVhZG9ubHkgSURYX0lORFZfUkNWWV9CPTIxXG4rcmVhZG9ubHkgSURYX05PX1BPUD0zMFxuK3JlYWRvbmx5IElEWF9QMlBfUkNWWT00MFxuK3JlYWRvbmx5IElEWF9SRUxBWV9QVVNIPTUwXG4rcmVhZG9ubHkgSURYX1JFTEFZX1JDVlk9NjBcbitcbityZWFkb25seSBOVU1fVEVTVFM9NlxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgUHJlcmVxdWlzaXRlIGNoZWNrXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rY2hlY2tfcHJlcmVxdWlzaXRlcygpXG4re1xuK1x0bG9jYWwgbWlzc2luZz0wXG4rXG4rXHRbIFwiJChpZCAtdSlcIiAtZXEgMCBdIHx8IHsgZWNobyBcIiMgTXVzdCBiZSBydW4gYXMgcm9vdFwiIFx1MDAzZVx1MDAyNjI7IG1pc3Npbmc9MTsgfVxuK1xuK1x0Zm9yIGNtZCBpbiBpcCBcIiRUQ1wiIFwiJFRDUERVTVBcIiBcIiRQSU5HXCI7IGRvXG4rXHRcdGNvbW1hbmQgLXYgXCIkY21kXCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIHx8IHtcbitcdFx0XHRlY2hvIFwiIyBNaXNzaW5nIGNvbW1hbmQ6ICRjbWRcIiBcdTAwM2VcdTAwMjYyXG4rXHRcdFx0bWlzc2luZz0xXG4rXHRcdH1cbitcdGRvbmVcbitcbitcdGlmIFsgXCIkbWlzc2luZ1wiIC1uZSAwIF07IHRoZW5cbitcdFx0a3NmdF9zZXRfcGxhbiBcIiROVU1fVEVTVFNcIlxuK1x0XHRmb3IgaSBpbiAkKHNlcSAxIFwiJE5VTV9URVNUU1wiKTsgZG9cbitcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAgXCJwcmVyZXF1aXNpdGVzIG5vdCBtZXQgKHRlc3QgJGkpXCJcbitcdFx0ZG9uZVxuK1x0XHRrc2Z0X3ByaW50X2NudHNcbitcdFx0ZXhpdCBcIiRLU0ZUX1NLSVBcIlxuK1x0Zmlcbit9XG4rXG4rbG9hZF9tb2R1bGUoKVxuK3tcbitcdFsgXCIkU0tJUF9NT0RQUk9CRVwiID0gXCIxXCIgXSBcdTAwMjZcdTAwMjYgcmV0dXJuXG4rXHRpZiAhIG1vZHByb2JlIGFjdF9mcmVyIDJcdTAwM2UvZGV2L251bGw7IHRoZW5cbitcdFx0ZWNobyBcIiMgbW9kcHJvYmUgYWN0X2ZyZXIgZmFpbGVkIC0gbWF5IGJlIGJ1aWx0LWluIG9yIHVuYXZhaWxhYmxlXCIgXHUwMDNlXHUwMDI2MlxuK1x0ZmlcbitcdGlmICEgbW9kcHJvYmUgYm9uZGluZyAyXHUwMDNlL2Rldi9udWxsOyB0aGVuXG4rXHRcdGVjaG8gXCIjIG1vZHByb2JlIGJvbmRpbmcgZmFpbGVkIC0gbWF5IGJlIGJ1aWx0LWluIG9yIHVuYXZhaWxhYmxlXCIgXHUwMDNlXHUwMDI2MlxuK1x0Zmlcbit9XG4rXG4rY2hlY2tfZnJlcl9hY3Rpb24oKVxuK3tcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfVEFMS0VSXCIgXFxcbitcdFx0JFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggOTk5IDJcdTAwM2UvZGV2L251bGwgfHwgcmV0dXJuIDFcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfVEFMS0VSXCIgXFxcbitcdFx0JFRDIGFjdGlvbnMgZGVsIGFjdGlvbiBmcmVyIGluZGV4IDk5OSAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcdHJldHVybiAwXG4rfVxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgQm9uZCB0b3BvbG9neSBzZXR1cCAvIHRlYXJkb3duICh1c2VkIGJ5IHRlc3RzIDEtNClcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitzZXR1cF90b3BvbG9neSgpXG4re1xuK1x0Zm9yIG4gaW4gXCIkTlNfVEFMS0VSXCIgXCIkTlNfTElTVEVORVJcIjsgZG9cbitcdFx0aXAgbmV0bnMgYWRkIFwiJG5cIlxuK1x0ZG9uZVxuK1xuK1x0aXAgbGluayBhZGQgXCIkVkVUSF9BMFwiIHR5cGUgdmV0aCBwZWVyIG5hbWUgXCIkVkVUSF9BMVwiXG4rXHRpcCBsaW5rIHNldCBcIiRWRVRIX0EwXCIgbmV0bnMgXCIkTlNfVEFMS0VSXCJcbitcdGlwIGxpbmsgc2V0IFwiJFZFVEhfQTFcIiBuZXRucyBcIiROU19MSVNURU5FUlwiXG4rXG4rXHRpcCBsaW5rIGFkZCBcIiRWRVRIX0IwXCIgdHlwZSB2ZXRoIHBlZXIgbmFtZSBcIiRWRVRIX0IxXCJcbitcdGlwIGxpbmsgc2V0IFwiJFZFVEhfQjBcIiBuZXRucyBcIiROU19UQUxLRVJcIlxuK1x0aXAgbGluayBzZXQgXCIkVkVUSF9CMVwiIG5ldG5zIFwiJE5TX0xJU1RFTkVSXCJcbitcbitcdCMgbnNfdGFsa2VyOiBjcmVhdGUgYm9uZDAgKGJhbGFuY2UtcnIpLCBmcmFtZXMgcm91bmQtcm9iaW4gYWNyb3NzIGJvdGggc2xhdmVzLlxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiBpcCBsaW5rIHNldCBsbyB1cFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiBpcCBsaW5rIGFkZCBcIiRCT05EMFwiIHR5cGUgYm9uZCBtb2RlIGJhbGFuY2UtcnIgbWlpbW9uIDEwMFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiBpcCBsaW5rIHNldCBcIiRWRVRIX0EwXCIgbWFzdGVyIFwiJEJPTkQwXCJcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfVEFMS0VSXCIgaXAgbGluayBzZXQgXCIkVkVUSF9CMFwiIG1hc3RlciBcIiRCT05EMFwiXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX1RBTEtFUlwiIGlwIGxpbmsgc2V0IFwiJFZFVEhfQTBcIiB1cFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiBpcCBsaW5rIHNldCBcIiRWRVRIX0IwXCIgdXBcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfVEFMS0VSXCIgaXAgbGluayBzZXQgXCIkQk9ORDBcIiB1cFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiBpcCBhZGRyIGFkZCBcIiR7SVBfU1JDfS8yNFwiIGRldiBcIiRCT05EMFwiXG4rXG4rXHQjIG5zX2xpc3RlbmVyOiBjcmVhdGUgYm9uZDEgKGJhbGFuY2UtcnIpLlxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19MSVNURU5FUlwiIGlwIGxpbmsgc2V0IGxvIHVwXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgaXAgbGluayBhZGQgXCIkQk9ORDFcIiB0eXBlIGJvbmQgbW9kZSBiYWxhbmNlLXJyIG1paW1vbiAxMDBcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiBpcCBsaW5rIHNldCBcIiRWRVRIX0ExXCIgbWFzdGVyIFwiJEJPTkQxXCJcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiBpcCBsaW5rIHNldCBcIiRWRVRIX0IxXCIgbWFzdGVyIFwiJEJPTkQxXCJcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiBpcCBsaW5rIHNldCBcIiRWRVRIX0ExXCIgdXBcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiBpcCBsaW5rIHNldCBcIiRWRVRIX0IxXCIgdXBcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiBpcCBsaW5rIHNldCBcIiRCT05EMVwiIHVwXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgaXAgYWRkciBhZGQgXCIke0lQX0RTVH0vMjRcIiBkZXYgXCIkQk9ORDFcIlxuK1xuK1x0IyBTdGF0aWMgQVJQIHNvIEwyIGZvcndhcmRpbmcgd29ya3Mgd2l0aG91dCBBUlAgYnJvYWRjYXN0cy5cbitcdCMgV2l0aCBiYWxhbmNlLXJyIGJvdGggc2xhdmVzIHNoYXJlIHRoZSBib25kIE1BQy5cbitcdGxvY2FsIG1hY19ib25kMCBtYWNfYm9uZDFcbitcdG1hY19ib25kMD0kKGlwIG5ldG5zIGV4ZWMgXCIkTlNfVEFMS0VSXCIgICBjYXQgL3N5cy9jbGFzcy9uZXQvXCIkQk9ORDBcIi9hZGRyZXNzKVxuK1x0bWFjX2JvbmQxPSQoaXAgbmV0bnMgZXhlYyBcIiROU19MSVNURU5FUlwiIGNhdCAvc3lzL2NsYXNzL25ldC9cIiRCT05EMVwiL2FkZHJlc3MpXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX1RBTEtFUlwiICAgaXAgbmVpZ2ggYWRkIFwiJElQX0RTVFwiIGxsYWRkciBcIiRtYWNfYm9uZDFcIiBkZXYgXCIkQk9ORDBcIlxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19MSVNURU5FUlwiIGlwIG5laWdoIGFkZCBcIiRJUF9TUkNcIiBsbGFkZHIgXCIkbWFjX2JvbmQwXCIgZGV2IFwiJEJPTkQxXCJcbit9XG4rXG4rY2xlYW51cCgpXG4re1xuK1x0Zm9yIG4gaW4gXCIkTlNfVEFMS0VSXCIgXCIkTlNfTElTVEVORVJcIiBcXFxuK1x0XHRcIiRQMlBfTlNfU1JDXCIgXCIkUDJQX05TX0RTVFwiIFxcXG4rXHRcdFwiJFJfTlNfVEFMS0VSXCIgXCIkUl9OU19CUklER0UwXCIgXCIkUl9OU19CUklER0UxXCIgXCIkUl9OU19MSVNURU5FUlwiOyBkb1xuK1x0XHRpcCBuZXRucyBkZWwgXCIkblwiIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1x0ZG9uZVxuK31cbit0cmFwIGNsZWFudXAgRVhJVFxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVEMgcnVsZSBoZWxwZXJzXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rIyBQdXNoIG9uIGJvdGggdmV0aF9hMCBhbmQgdmV0aF9iMCBlZ3Jlc3MgdXNpbmcgdGhlIHNhbWUgc2hhcmVkIGZyZXIgcHVzaFxuKyMgYWN0aW9uIChJRFhfUFVTSCkuICBFYWNoIHNsYXZlIGFsc28gbWlycm9ycyB0byB0aGUgb3RoZXIgc28gdGhhdCBldmVyeVxuKyMgb3V0Z29pbmcgZnJhbWUgaXMgcmVwbGljYXRlZCBvbnRvIGJvdGggcGF0aHMgcmVnYXJkbGVzcyBvZiB3aGljaCBzbGF2ZSB0aGVcbisjIGJvbmQgY3VycmVudGx5IHNlbGVjdHMuICBUaGlzIHByZXZlbnRzIHBhY2tldCBsb3NzIGR1cmluZyBib25kIGxpbmsgY2hhbmdlcy5cbitzZXR1cF9wdXNoX21pcnJvcigpXG4re1xuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiAkVEMgcWRpc2MgYWRkIGRldiBcIiRWRVRIX0EwXCIgY2xzYWN0XG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX1RBTEtFUlwiICRUQyBmaWx0ZXIgYWRkIGRldiBcIiRWRVRIX0EwXCIgZWdyZXNzIFxcXG4rXHRcdHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IFxcXG4rXHRcdGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggJElEWF9QVVNIIFxcXG4rXHRcdGFjdGlvbiBtaXJyZWQgZWdyZXNzIG1pcnJvciBkZXYgXCIkVkVUSF9CMFwiXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX1RBTEtFUlwiICRUQyBxZGlzYyBhZGQgZGV2IFwiJFZFVEhfQjBcIiBjbHNhY3RcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfVEFMS0VSXCIgJFRDIGZpbHRlciBhZGQgZGV2IFwiJFZFVEhfQjBcIiBlZ3Jlc3MgXFxcbitcdFx0cHJvdG9jb2wgaXAgZmxvd2VyIHNraXBfaHcgXFxcbitcdFx0YWN0aW9uIGZyZXIgcHVzaCBpbmRleCAkSURYX1BVU0ggXFxcbitcdFx0YWN0aW9uIG1pcnJlZCBlZ3Jlc3MgbWlycm9yIGRldiBcIiRWRVRIX0EwXCJcbit9XG4rXG4rdGVhcmRvd25fdGMoKVxuK3tcbitcdGZvciBkZXYgaW4gXCIkVkVUSF9BMFwiIFwiJFZFVEhfQjBcIjsgZG9cbitcdFx0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiAkVEMgcWRpc2MgZGVsIGRldiBcIiRkZXZcIiBjbHNhY3QgXFxcbitcdFx0XHQyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcdGRvbmVcbitcdGZvciBkZXYgaW4gXCIkVkVUSF9BMVwiIFwiJFZFVEhfQjFcIjsgZG9cbitcdFx0aXAgbmV0bnMgZXhlYyBcIiROU19MSVNURU5FUlwiICRUQyBxZGlzYyBkZWwgZGV2IFwiJGRldlwiIGNsc2FjdCBcXFxuK1x0XHRcdDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1x0ZG9uZVxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiAgICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19MSVNURU5FUlwiICRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK31cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFBhY2tldC1jYXB0dXJlIGhlbHBlcnNcbisjXG4rIyBjYXB0dXJlX3N0YXJ0X29uIE5TIElGQUNFIFBDQVAgW0JQRl9GSUxURVJdXG4rIyAgIFN0YXJ0cyB0Y3BkdW1wIGluIG5hbWVzcGFjZSBOUyBvbiBJRkFDRSwgd3JpdGluZyB0byBQQ0FQLlxuKyMgICBTdG9yZXMgUElEIGluIF9DQVBfUElELlxuKyNcbisjIGNhcHR1cmVfc3RvcFxuKyMgICBXYWl0cyBmb3IgdGNwZHVtcCAoc3RvcmVkIGluIF9DQVBfUElEKSB0byBmaW5pc2guXG4rI1xuKyMgY2FwdHVyZV9jb3VudF9vbiBOUyBQQ0FQXG4rIyAgIFByaW50cyB0aGUgbnVtYmVyIG9mIGNhcHR1cmVkIHBhY2tldHMuXG4rI1xuKyMgQ29udmVuaWVuY2Ugd3JhcHBlcnMgY2FwdHVyZV9zdGFydCAvIGNhcHR1cmVfY291bnQgdGFyZ2V0IGJvbmQxIGluXG4rIyBOU19MSVNURU5FUiAodGhlIHByaW1hcnkgb2JzZXJ2YXRpb24gcG9pbnQgZm9yIHRlc3RzIDIgYW5kIDQpLlxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK19DQVBfUElEPVwiXCJcbitcbitjYXB0dXJlX3N0YXJ0X29uKClcbit7XG4rXHRsb2NhbCBucz1cIiQxXCIgaWZhY2U9XCIkMlwiIHBjYXA9XCIkM1wiIGZpbHRlcj1cIiR7NDotfVwiXG4rXG4rXHRpZiBbIC1uIFwiJGZpbHRlclwiIF07IHRoZW5cbitcdFx0aXAgbmV0bnMgZXhlYyBcIiRuc1wiIHRpbWVvdXQgNCBcXFxuK1x0XHRcdCRUQ1BEVU1QIC1pIFwiJGlmYWNlXCIgLXcgXCIkcGNhcFwiIFxcXG4rXHRcdFx0LS1pbW1lZGlhdGUtbW9kZSAtWiByb290IC15IEVOMTBNQiBcXFxuK1x0XHRcdCRmaWx0ZXIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIFx1MDAyNlxuK1x0ZWxzZVxuK1x0XHRpcCBuZXRucyBleGVjIFwiJG5zXCIgdGltZW91dCA0IFxcXG4rXHRcdFx0JFRDUERVTVAgLWkgXCIkaWZhY2VcIiAtdyBcIiRwY2FwXCIgXFxcbitcdFx0XHQtLWltbWVkaWF0ZS1tb2RlIC1aIHJvb3QgLXkgRU4xME1CIFxcXG4rXHRcdFx0XHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIFx1MDAyNlxuK1x0ZmlcbitcdF9DQVBfUElEPSQhXG4rXG4rXHQjIFdhaXQgdW50aWwgdGNwZHVtcCBvcGVucyBhIHBhY2tldCBzb2NrZXQgKG1heCB+Mi41IHMpLlxuK1x0bG9jYWwgdHJpZXM9MFxuK1x0d2hpbGUgWyAkdHJpZXMgLWx0IDUwIF07IGRvXG4rXHRcdGlwIG5ldG5zIGV4ZWMgXCIkbnNcIiBncmVwIC1xIFwiJGlmYWNlXCIgL3Byb2MvbmV0L3BhY2tldCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBicmVha1xuK1x0XHRzbGVlcCAwLjA1XG4rXHRcdHRyaWVzPSQoKHRyaWVzICsgMSkpXG4rXHRkb25lXG4rfVxuK1xuK2NhcHR1cmVfc3RvcCgpXG4re1xuK1x0WyAtbiBcIiRfQ0FQX1BJRFwiIF0gfHwgcmV0dXJuIDBcbitcdHdhaXQgXCIkX0NBUF9QSURcIiAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcdF9DQVBfUElEPVwiXCJcbit9XG4rXG4rY2FwdHVyZV9jb3VudF9vbigpXG4re1xuK1x0bG9jYWwgbnM9XCIkMVwiIHBjYXA9XCIkMlwiXG4rXHRpcCBuZXRucyBleGVjIFwiJG5zXCIgXFxcbitcdFx0JFRDUERVTVAgLXIgXCIkcGNhcFwiIC0tbm8tcHJvbWlzY3VvdXMtbW9kZSAyXHUwMDNlL2Rldi9udWxsIFxcXG4rXHRcdHwgZ3JlcCAtYyBcIl5bMC05XVwiIHx8IHRydWVcbit9XG4rXG4rIyBDb252ZW5pZW5jZSB3cmFwcGVyczogZGVmYXVsdCB0byBib25kMSBpbiBOU19MSVNURU5FUlxuK2NhcHR1cmVfc3RhcnQoKSB7IGNhcHR1cmVfc3RhcnRfb24gXCIkTlNfTElTVEVORVJcIiBcIiRCT05EMVwiIFwiJEBcIjsgfVxuK2NhcHR1cmVfY291bnQoKSB7IGNhcHR1cmVfY291bnRfb24gXCIkTlNfTElTVEVORVJcIiBcIiQxXCI7IH1cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFBpbmcgaGVscGVyXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rZG9fcGluZygpXG4re1xuK1x0bG9jYWwgcmM9MFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiBcXFxuK1x0XHQkUElORyAtYyBcIiRQSU5HX0NPVU5UXCIgLVcgXCIkUElOR19USU1FT1VUXCIgLWkgMC4yIC1xIFxcXG4rXHRcdFwiJElQX0RTVFwiIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSB8fCByYz0kP1xuK1x0cmV0dXJuICRyY1xuK31cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIHRjIHN0YXRpc3RpY3MgcGFyc2VyXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rdGNfc3RhdCgpXG4re1xuK1x0bG9jYWwgZHVtcD1cIiQxXCIgZmllbGQ9XCIkMlwiXG4rXHRlY2hvIFwiJGR1bXBcIiB8IGF3ayAtRlwiJHtmaWVsZH09XCIgJ05GXHUwMDNlMXtzcGxpdCgkMixhLFwiIFwiKTtwcmludCBhWzFdO2V4aXR9JyB8fCBlY2hvIFwiMFwiXG4rfVxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVEVTVCAxOiBQVVNIIFZFUklGWSAoYm9uZCB0b3BvbG9neSlcbisjXG4rIyBPbmx5IHB1c2ggaXMgY29uZmlndXJlZCBvbiB0aGUgdGFsa2VyIHNpZGU7IG5vIHJlY292ZXIgb24gdGhlIGxpc3RlbmVyLlxuKyMgVGhlIHB1c2ggYWN0aW9uIG9uIHZldGhfYTAgZWdyZXNzIGluc2VydHMgYW4gUi1UQUcgYW5kIG1pcnJvcnMgYSBjb3B5IHRvXG4rIyB2ZXRoX2IwLCBzbyBib3RoIGxpc3RlbmVyIHNsYXZlcyAodmV0aF9hMSBhbmQgdmV0aF9iMSkgcmVjZWl2ZSBhIGZyYW1lXG4rIyB3aXRoIEV0aGVyVHlwZSAweEYxQzEuICBDYXB0dXJlcyBydW4gc2VxdWVudGlhbGx5IG9uIGVhY2ggc2xhdmUgdG8gdmVyaWZ5XG4rIyB0aGF0IGJvdGggcGF0aHMgY2FycnkgUi1UQUcgZnJhbWVzLlxuKyNcbisjIFBhc3MgY3JpdGVyaWE6XG4rIyAgIC0gdmV0aF9hMSBjYXB0dXJlcyBcdTAwM2U9IDEgUi1UQUcgZnJhbWVcbisjICAgLSB2ZXRoX2IxIGNhcHR1cmVzIFx1MDAzZT0gMSBSLVRBRyBmcmFtZVxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK3Rlc3RfcHVzaF92ZXJpZnlfYm9uZCgpXG4re1xuK1x0bG9jYWwgcGNhcF9hIHBjYXBfYiBjYXBfYSBjYXBfYlxuK1x0bG9jYWwgcmVzdWx0PVwicGFzc1wiXG4rXG4rXHRzZXR1cF9wdXNoX21pcnJvclxuK1xuK1x0IyBDYXB0dXJlIDE6IFItVEFHIGZyYW1lcyBvbiB2ZXRoX2ExIChwYXRoIEEpXG4rXHRwY2FwX2E9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfcHVzaF9hX1hYWFhYWC5wY2FwKVxuK1x0Y2FwdHVyZV9zdGFydF9vbiBcIiROU19MSVNURU5FUlwiIFwiJFZFVEhfQTFcIiBcIiRwY2FwX2FcIiBcImV0aGVyIHByb3RvIDB4ZjFjMVwiXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX1RBTEtFUlwiIFxcXG4rXHRcdCRQSU5HIC1jIDMgLVcgMSAtaSAwLjIgLXEgXCIkSVBfRFNUXCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIHx8IHRydWVcbitcdGNhcHR1cmVfc3RvcFxuK1x0Y2FwX2E9JChjYXB0dXJlX2NvdW50X29uIFwiJE5TX0xJU1RFTkVSXCIgXCIkcGNhcF9hXCIpXG4rXHRybSAtZiBcIiRwY2FwX2FcIlxuK1xuK1x0IyBDYXB0dXJlIDI6IFItVEFHIGZyYW1lcyBvbiB2ZXRoX2IxIChwYXRoIEIsIG1pcnJvcmVkIGNvcHkpXG4rXHRwY2FwX2I9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfcHVzaF9iX1hYWFhYWC5wY2FwKVxuK1x0Y2FwdHVyZV9zdGFydF9vbiBcIiROU19MSVNURU5FUlwiIFwiJFZFVEhfQjFcIiBcIiRwY2FwX2JcIiBcImV0aGVyIHByb3RvIDB4ZjFjMVwiXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX1RBTEtFUlwiIFxcXG4rXHRcdCRQSU5HIC1jIDMgLVcgMSAtaSAwLjIgLXEgXCIkSVBfRFNUXCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIHx8IHRydWVcbitcdGNhcHR1cmVfc3RvcFxuK1x0Y2FwX2I9JChjYXB0dXJlX2NvdW50X29uIFwiJE5TX0xJU1RFTkVSXCIgXCIkcGNhcF9iXCIpXG4rXHRybSAtZiBcIiRwY2FwX2JcIlxuK1xuK1x0dGVhcmRvd25fdGNcbitcbitcdGVjaG8gXCIjIGJvbmQgcHVzaCB2ZXJpZnk6IHZldGhfYTEgUi1UQUc9JGNhcF9hIHZldGhfYjEgUi1UQUc9JGNhcF9iXCJcbitcbitcdFsgXCIkY2FwX2FcIiAtZ2UgMSBdIHx8IHJlc3VsdD1cImZhaWxcIlxuK1x0WyBcIiRjYXBfYlwiIC1nZSAxIF0gfHwgcmVzdWx0PVwiZmFpbFwiXG4rXG4rXHRpZiBbIFwiJHJlc3VsdFwiID0gXCJwYXNzXCIgXTsgdGhlblxuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MgXFxcbitcdFx0XHRcImJvbmQgcHVzaCB2ZXJpZnk6IFItVEFHIG9uIGJvdGggcGF0aHMgKGExPSRjYXBfYSBiMT0kY2FwX2IpXCJcbitcdGVsc2VcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFxcXG4rXHRcdFx0XCJib25kIHB1c2ggdmVyaWZ5OiBleHBlY3RlZCBSLVRBRyBvbiBib3RoIHBhdGhzIChhMT0kY2FwX2EgYjE9JGNhcF9iKVwiXG4rXHRmaVxuK31cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFRFU1QgMjogU0hBUkVEIFJFQ09WRVIgRTJFIChib25kIHRvcG9sb2d5KVxuKyNcbisjIHZldGhfYTEgYW5kIHZldGhfYjEgaW5ncmVzcyBzaGFyZSBvbmUgcmVjb3ZlciBhY3Rpb24gKGlkeD0xMCkgd2l0aCB0YWctcG9wLlxuKyMgVGhlIGxpc3RlbmVyIHJlY2VpdmVzIHR3byBSLVRBRyBjb3BpZXMgcGVyIHJlcXVlc3Q7IHRoZSBzaGFyZWQgcmVjb3ZlciBwYXNzZXNcbisjIGV4YWN0bHkgb25lIGFuZCBkaXNjYXJkcyB0aGUgb3RoZXIuICBUaGUgcmVjb3ZlcmVkIHBsYWluIElDTVAgcmVhY2hlcyBib25kMSdzXG4rIyBJUCBzdGFjayBhbmQgYSByZXBseSBpcyBzZW50LCBtYWtpbmcgcGluZyBzdWNjZWVkLlxuKyNcbisjIFBhc3MgY3JpdGVyaWE6XG4rIyAgIC0gcGluZyBzdWNjZWVkcyAocmM9MClcbisjICAgLSB0Y3BkdW1wIG9uIGJvbmQxIGNhcHR1cmVzIGV4YWN0bHkgUElOR19DT1VOVCBJQ01QIGVjaG8tcmVxdWVzdCBmcmFtZXNcbisjICAgICAoZmlsdGVyIGlzIHJlc3RyaWN0ZWQgdG8gdHlwZT04IHRvIGV4Y2x1ZGUgZWNobyByZXBsaWVzLCB3aGljaCB3b3VsZFxuKyMgICAgIGRvdWJsZSB0aGUgY291bnQgc2luY2UgYm9uZDEgYWxzbyBvcmlnaW5hdGVzIHRoZSByZXBseSBwYWNrZXRzKVxuKyMgICAtIHRjIHN0YXRzIG9uIHZldGhfYTE6IHBhc3NlZCBcdTAwM2U9IFBJTkdfQ09VTlQsIGRpc2NhcmRlZCBcdTAwM2U9IFBJTkdfQ09VTlRcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbit0ZXN0X3NoYXJlZF9yZWNvdmVyX2JvbmQoKVxuK3tcbitcdGxvY2FsIHBjYXAgY2FwX2NvdW50IHBpbmdfcmM9MFxuK1x0bG9jYWwgZHVtcF9hXG4rXHRsb2NhbCB0b3RhbF9wYXNzZWQgdG90YWxfZGlzY2FyZGVkIHRhZ2xlc3NcbitcdGxvY2FsIHJlc3VsdD1cInBhc3NcIlxuK1xuK1x0c2V0dXBfcHVzaF9taXJyb3JcbitcbitcdCMgdmV0aF9hMSBpbmdyZXNzOiBjcmVhdGUgc2hhcmVkIHJlY292ZXIgYWN0aW9uIHdpdGggdGFnLXBvcFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19MSVNURU5FUlwiICRUQyBxZGlzYyBhZGQgZGV2IFwiJFZFVEhfQTFcIiBjbHNhY3RcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXCIkVkVUSF9BMVwiIGluZ3Jlc3MgXFxcbitcdFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXG4rXHRcdGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcXFxuK1x0XHRcdHJlc2V0LXRpbWUgMjAwMCB0YWctcG9wIGluZGV4ICRJRFhfU0hBUkVEX1JDVllcbitcbitcdCMgdmV0aF9iMSBpbmdyZXNzOiBiaW5kIHRvIHRoZSBzYW1lIHNoYXJlZCBhY3Rpb24gYnkgaW5kZXhcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiAkVEMgcWRpc2MgYWRkIGRldiBcIiRWRVRIX0IxXCIgY2xzYWN0XG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgJFRDIGZpbHRlciBhZGQgZGV2IFwiJFZFVEhfQjFcIiBpbmdyZXNzIFxcXG4rXHRcdHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcXFxuK1x0XHRhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4ICRJRFhfU0hBUkVEX1JDVllcbitcbitcdHBjYXA9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfc2hhcmVkX1hYWFhYWC5wY2FwKVxuK1x0Y2FwdHVyZV9zdGFydCBcIiRwY2FwXCIgXCJpY21wW2ljbXB0eXBlXSA9PSBpY21wLWVjaG9cIlxuK1xuK1x0ZG9fcGluZyB8fCBwaW5nX3JjPSQ/XG4rXG4rXHRjYXB0dXJlX3N0b3BcbitcbitcdGNhcF9jb3VudD0kKGNhcHR1cmVfY291bnQgXCIkcGNhcFwiKVxuK1x0cm0gLWYgXCIkcGNhcFwiXG4rXG4rXHRkdW1wX2E9JChpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgXFxcbitcdFx0JFRDIC1zIGZpbHRlciBzaG93IGRldiBcIiRWRVRIX0ExXCIgaW5ncmVzcyAyXHUwMDNlL2Rldi9udWxsKVxuK1xuK1x0dGVhcmRvd25fdGNcbitcbitcdHRvdGFsX3Bhc3NlZD0kKHRjX3N0YXQgICAgXCIkZHVtcF9hXCIgXCJwYXNzZWRcIilcbitcdHRvdGFsX2Rpc2NhcmRlZD0kKHRjX3N0YXQgXCIkZHVtcF9hXCIgXCJkaXNjYXJkZWRcIilcbitcdHRhZ2xlc3M9JCh0Y19zdGF0ICAgICAgICAgXCIkZHVtcF9hXCIgXCJ0YWdsZXNzXCIpXG4rXHR0b3RhbF9kaXNjYXJkZWQ9JCgodG90YWxfZGlzY2FyZGVkIC0gdGFnbGVzcykpXG4rXG4rXHRlY2hvIFwiIyBib25kIHNoYXJlZCByZWNvdmVyOiBwaW5nX3JjPSRwaW5nX3JjIGNhcD0kY2FwX2NvdW50XCIgXFxcbitcdFx0XCJwYXNzZWQ9JHRvdGFsX3Bhc3NlZCBkaXNjYXJkZWQ9JHRvdGFsX2Rpc2NhcmRlZFwiXG4rXG4rXHRbIFwiJHBpbmdfcmNcIiAgICAgICAgIC1lcSAwIF0gICAgICAgICAgICB8fCByZXN1bHQ9XCJmYWlsXCJcbitcdFsgXCIkY2FwX2NvdW50XCIgICAgICAgLWVxIFwiJFBJTkdfQ09VTlRcIiBdIHx8IHJlc3VsdD1cImZhaWxcIlxuK1x0WyBcIiR0b3RhbF9wYXNzZWRcIiAgICAtZ2UgXCIkUElOR19DT1VOVFwiIF0gfHwgcmVzdWx0PVwiZmFpbFwiXG4rXHRbIFwiJHRvdGFsX2Rpc2NhcmRlZFwiIC1nZSBcIiRQSU5HX0NPVU5UXCIgXSB8fCByZXN1bHQ9XCJmYWlsXCJcbitcbitcdGlmIFsgXCIkcmVzdWx0XCIgPSBcInBhc3NcIiBdOyB0aGVuXG4rXHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyBcXFxuK1x0XHRcdFwiYm9uZCBzaGFyZWQgcmVjb3ZlcjogcGluZyBPSywgY2FwPSRjYXBfY291bnRcIiBcXFxuK1x0XHRcdFwicGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWRcIlxuK1x0ZWxzZVxuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXFxcbitcdFx0XHRcImJvbmQgc2hhcmVkIHJlY292ZXI6IHBpbmdfcmM9JHBpbmdfcmMgY2FwPSRjYXBfY291bnRcIiBcXFxuK1x0XHRcdFwicGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWRcIiBcXFxuK1x0XHRcdFwiKGV4cGVjdGVkIHBpbmcgT0ssIGNhcD0kUElOR19DT1VOVCxcIiBcXFxuK1x0XHRcdFwicGFzc2VkXHUwMDNlPSRQSU5HX0NPVU5ULCBkaXNjYXJkZWRcdTAwM2U9JFBJTkdfQ09VTlQpXCJcbitcdGZpXG4rfVxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVEVTVCAzOiBJTkRJVklEVUFMIFJFQ09WRVIgKGJvbmQgdG9wb2xvZ3kpXG4rI1xuKyMgdmV0aF9hMSBhbmQgdmV0aF9iMSB1c2UgaW5kZXBlbmRlbnQgcmVjb3ZlciBhY3Rpb25zIChpZHg9MjAgYW5kIGlkeD0yMSkuXG4rIyBFYWNoIHBvcnQgbWFpbnRhaW5zIGl0cyBvd24gc2VxdWVuY2UgaGlzdG9yeSBzbyBib3RoIGNvcGllcyBvZiBldmVyeSBmcmFtZVxuKyMgYXJlIHBhc3NlZCAobm8gY3Jvc3MtcG9ydCBkZWR1cGxpY2F0aW9uKS4gIFdpdGggYWN0aXZlLWJhY2t1cCBib25kMSwgb25seVxuKyMgdGhlIGFjdGl2ZSBzbGF2ZSdzICh2ZXRoX2ExKSByZWNvdmVyZWQgZnJhbWUgcmVhY2hlcyBib25kMSdzIElQIHN0YWNrLCBzb1xuKyMgcGluZyBzdWNjZWVkcy4gIFRoZSBhYnNlbmNlIG9mIGRlZHVwbGljYXRpb24gaXMgdmVyaWZpZWQgdmlhIHBlci1zbGF2ZVxuKyMgdGNwZHVtcCAoZWFjaCBzbGF2ZSBzaG91bGQgY2FwdHVyZSBQSU5HX0NPVU5UIElDTVAgZnJhbWVzKSBhbmQgdGMgc3RhdHMuXG4rI1xuKyMgUGFzcyBjcml0ZXJpYTpcbisjICAgLSBwaW5nIHN1Y2NlZWRzXG4rIyAgIC0gdmV0aF9hMSBjYXB0dXJlcyBQSU5HX0NPVU5UIElDTVAgZnJhbWVzIChwYXNzZWQsIG5vdCBkaXNjYXJkZWQpXG4rIyAgIC0gdmV0aF9iMSBjYXB0dXJlcyBQSU5HX0NPVU5UIElDTVAgZnJhbWVzIChwYXNzZWQgaW5kZXBlbmRlbnRseSlcbisjICAgLSB0YyBzdGF0czogdmV0aF9hMSBwYXNzZWQ9UElOR19DT1VOVCBkaXNjYXJkZWQ9MFxuKyMgICAgICAgICAgICAgICB2ZXRoX2IxIHBhc3NlZD1QSU5HX0NPVU5UIGRpc2NhcmRlZD0wXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rdGVzdF9pbmRpdmlkdWFsX3JlY292ZXJfYm9uZCgpXG4re1xuK1x0bG9jYWwgcGNhcF9hIHBjYXBfYiBjYXBfYSBjYXBfYiBwaW5nX3JjPTBcbitcdGxvY2FsIGR1bXBfYSBkdW1wX2JcbitcdGxvY2FsIHBhc3NlZF9hIGRpc2NhcmRlZF9hIHBhc3NlZF9iIGRpc2NhcmRlZF9iIHRhZ2xlc3NfYSB0YWdsZXNzX2JcbitcdGxvY2FsIHJlc3VsdD1cInBhc3NcIlxuK1xuK1x0c2V0dXBfcHVzaF9taXJyb3JcbitcbitcdCMgdmV0aF9hMSBpbmdyZXNzOiBpbmRpdmlkdWFsIHJlY292ZXIgaWR4PTIwIChpbmRlcGVuZGVudCBzdGF0ZSlcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiAkVEMgcWRpc2MgYWRkIGRldiBcIiRWRVRIX0ExXCIgY2xzYWN0XG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgJFRDIGZpbHRlciBhZGQgZGV2IFwiJFZFVEhfQTFcIiBpbmdyZXNzIFxcXG4rXHRcdHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcXFxuK1x0XHRhY3Rpb24gZnJlciByZWNvdmVyIGluZGl2aWR1YWwgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcXFxuK1x0XHRcdHJlc2V0LXRpbWUgMjAwMCB0YWctcG9wIGluZGV4ICRJRFhfSU5EVl9SQ1ZZX0FcbitcbitcdCMgdmV0aF9iMSBpbmdyZXNzOiBpbmRpdmlkdWFsIHJlY292ZXIgaWR4PTIxIChzZXBhcmF0ZSBpbmRlcGVuZGVudCBzdGF0ZSlcbitcdGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiAkVEMgcWRpc2MgYWRkIGRldiBcIiRWRVRIX0IxXCIgY2xzYWN0XG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgJFRDIGZpbHRlciBhZGQgZGV2IFwiJFZFVEhfQjFcIiBpbmdyZXNzIFxcXG4rXHRcdHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBcXFxuK1x0XHRhY3Rpb24gZnJlciByZWNvdmVyIGluZGl2aWR1YWwgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcXFxuK1x0XHRcdHJlc2V0LXRpbWUgMjAwMCB0YWctcG9wIGluZGV4ICRJRFhfSU5EVl9SQ1ZZX0JcbitcbitcdCMgUGVyLXNsYXZlIGNhcHR1cmUgQTogdmVyaWZ5IHZldGhfYTEgcGFzc2VzIGZyYW1lczsgYWxzbyB1c2UgdGhpcyBydW5cbitcdCMgZm9yIHRoZSBvdmVyYWxsIHBpbmdfcmMgY2hlY2sgKGRvX3BpbmcgdGFyZ2V0cyBib25kMC1cdTAwM2Vib25kMSkuXG4rXHRwY2FwX2E9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfaW5kdl9hX1hYWFhYWC5wY2FwKVxuK1x0Y2FwdHVyZV9zdGFydF9vbiBcIiROU19MSVNURU5FUlwiIFwiJFZFVEhfQTFcIiBcIiRwY2FwX2FcIiBcImljbXBcIlxuK1x0ZG9fcGluZyB8fCBwaW5nX3JjPSQ/XG4rXHRjYXB0dXJlX3N0b3BcbitcdGNhcF9hPSQoY2FwdHVyZV9jb3VudF9vbiBcIiROU19MSVNURU5FUlwiIFwiJHBjYXBfYVwiKVxuK1x0cm0gLWYgXCIkcGNhcF9hXCJcbitcbitcdCMgUGVyLXNsYXZlIGNhcHR1cmUgQjogdmVyaWZ5IHZldGhfYjEgYWxzbyBwYXNzZXMgZnJhbWVzIChiYWxhbmNlLXJyXG4rXHQjIGRpc3RyaWJ1dGVzIGVncmVzcyBhY3Jvc3MgYm90aCBzbGF2ZXMsIHNvIGJvdGggcGF0aHMgY2FycnkgdHJhZmZpYykuXG4rXHRwY2FwX2I9JChta3RlbXAgL3RtcC9mcmVyX2JvbmRfaW5kdl9iX1hYWFhYWC5wY2FwKVxuK1x0Y2FwdHVyZV9zdGFydF9vbiBcIiROU19MSVNURU5FUlwiIFwiJFZFVEhfQjFcIiBcIiRwY2FwX2JcIiBcImljbXBcIlxuK1x0ZG9fcGluZyB8fCB0cnVlXG4rXHRjYXB0dXJlX3N0b3BcbitcdGNhcF9iPSQoY2FwdHVyZV9jb3VudF9vbiBcIiROU19MSVNURU5FUlwiIFwiJHBjYXBfYlwiKVxuK1x0cm0gLWYgXCIkcGNhcF9iXCJcbitcbitcdGR1bXBfYT0kKGlwIG5ldG5zIGV4ZWMgXCIkTlNfTElTVEVORVJcIiBcXFxuK1x0XHQkVEMgLXMgZmlsdGVyIHNob3cgZGV2IFwiJFZFVEhfQTFcIiBpbmdyZXNzIDJcdTAwM2UvZGV2L251bGwpXG4rXHRkdW1wX2I9JChpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgXFxcbitcdFx0JFRDIC1zIGZpbHRlciBzaG93IGRldiBcIiRWRVRIX0IxXCIgaW5ncmVzcyAyXHUwMDNlL2Rldi9udWxsKVxuK1xuK1x0dGVhcmRvd25fdGNcbitcbitcdHBhc3NlZF9hPSQodGNfc3RhdCAgICBcIiRkdW1wX2FcIiBcInBhc3NlZFwiKVxuK1x0ZGlzY2FyZGVkX2E9JCh0Y19zdGF0IFwiJGR1bXBfYVwiIFwiZGlzY2FyZGVkXCIpXG4rXHR0YWdsZXNzX2E9JCh0Y19zdGF0ICAgXCIkZHVtcF9hXCIgXCJ0YWdsZXNzXCIpXG4rXHRwYXNzZWRfYj0kKHRjX3N0YXQgICAgXCIkZHVtcF9iXCIgXCJwYXNzZWRcIilcbitcdGRpc2NhcmRlZF9iPSQodGNfc3RhdCBcIiRkdW1wX2JcIiBcImRpc2NhcmRlZFwiKVxuK1x0dGFnbGVzc19iPSQodGNfc3RhdCAgIFwiJGR1bXBfYlwiIFwidGFnbGVzc1wiKVxuK1x0ZGlzY2FyZGVkX2E9JCgoZGlzY2FyZGVkX2EgLSB0YWdsZXNzX2EpKVxuK1x0ZGlzY2FyZGVkX2I9JCgoZGlzY2FyZGVkX2IgLSB0YWdsZXNzX2IpKVxuK1xuK1x0ZWNobyBcIiMgYm9uZCBpbmRpdmlkdWFsIHJlY292ZXI6IHBpbmdfcmM9JHBpbmdfcmNcIiBcXFxuK1x0XHRcImExOiBjYXA9JGNhcF9hIHBhc3NlZD0kcGFzc2VkX2EgZGlzY2FyZGVkPSRkaXNjYXJkZWRfYVwiIFxcXG4rXHRcdFwiYjE6IGNhcD0kY2FwX2IgcGFzc2VkPSRwYXNzZWRfYiBkaXNjYXJkZWQ9JGRpc2NhcmRlZF9iXCJcbitcbitcdFsgXCIkcGluZ19yY1wiICAgLWVxIDAgXSAgICAgICAgICAgIHx8IHJlc3VsdD1cImZhaWxcIlxuK1x0WyBcIiRjYXBfYVwiICAgICAtZ2UgXCIkUElOR19DT1VOVFwiIF0gfHwgcmVzdWx0PVwiZmFpbFwiXG4rXHRbIFwiJGNhcF9iXCIgICAgIC1nZSBcIiRQSU5HX0NPVU5UXCIgXSB8fCByZXN1bHQ9XCJmYWlsXCJcbitcdFsgXCIkcGFzc2VkX2FcIiAgLWdlIFwiJFBJTkdfQ09VTlRcIiBdIHx8IHJlc3VsdD1cImZhaWxcIlxuK1x0WyBcIiRwYXNzZWRfYlwiICAtZ2UgXCIkUElOR19DT1VOVFwiIF0gfHwgcmVzdWx0PVwiZmFpbFwiXG4rXHRbIFwiJGRpc2NhcmRlZF9hXCIgLWVxIDAgXSAgICAgICAgICAgfHwgcmVzdWx0PVwiZmFpbFwiXG4rXHRbIFwiJGRpc2NhcmRlZF9iXCIgLWVxIDAgXSAgICAgICAgICAgfHwgcmVzdWx0PVwiZmFpbFwiXG4rXG4rXHRpZiBbIFwiJHJlc3VsdFwiID0gXCJwYXNzXCIgXTsgdGhlblxuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MgXFxcbitcdFx0XHRcImJvbmQgaW5kaXZpZHVhbCByZWNvdmVyOiBwaW5nIE9LXCIgXFxcbitcdFx0XHRcImExOiBjYXA9JGNhcF9hIHBhc3NlZD0kcGFzc2VkX2EvMFwiIFxcXG4rXHRcdFx0XCJiMTogY2FwPSRjYXBfYiBwYXNzZWQ9JHBhc3NlZF9iLzBcIlxuK1x0ZWxzZVxuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwgXFxcbitcdFx0XHRcImJvbmQgaW5kaXZpZHVhbCByZWNvdmVyOiBwaW5nX3JjPSRwaW5nX3JjXCIgXFxcbitcdFx0XHRcImExOiBjYXA9JGNhcF9hIHBhc3NlZD0kcGFzc2VkX2EgZGlzY2FyZGVkPSRkaXNjYXJkZWRfYVwiIFxcXG4rXHRcdFx0XCJiMTogY2FwPSRjYXBfYiBwYXNzZWQ9JHBhc3NlZF9iIGRpc2NhcmRlZD0kZGlzY2FyZGVkX2JcIlxuK1x0Zmlcbit9XG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBURVNUIDQ6IE5PIFRBRy1QT1AgKGJvbmQgdG9wb2xvZ3kpXG4rI1xuKyMgU2hhcmVkIHJlY292ZXIgcnVucyB3aXRob3V0IHRhZy1wb3A7IHBhc3NlZCBmcmFtZXMgc3RpbGwgY2FycnkgdGhlIFItVEFHXG4rIyB3aGVuIHRoZXkgcmVhY2ggYm9uZDEuXG4rI1xuKyMgUGFzcyBjcml0ZXJpYTpcbisjICAgLSB0Y3BkdW1wIG9uIGJvbmQxIHdpdGggXCJldGhlciBwcm90byAweGYxYzFcIiBjYXB0dXJlcyBcdTAwM2U9IDEgUi1UQUcgZnJhbWVcbisjICAgLSB0Y3BkdW1wIG9uIGJvbmQxIHdpdGggXCJpY21wXCIgY2FwdHVyZXMgMCBmcmFtZXMgKG91dGVyIEV0aGVyVHlwZSBpc1xuKyMgICAgIDB4RjFDMSwgbm90IDB4MDgwMCwgc28gcGxhaW4tSVAgSUNNUCBmaWx0ZXIgZG9lcyBub3QgbWF0Y2gpXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rdGVzdF9ub190YWdfcG9wX2JvbmQoKVxuK3tcbitcdGxvY2FsIHBjYXBfcnRhZyBwY2FwX2ljbXAgcnRhZ19jb3VudCBpY21wX2NvdW50XG4rXHRsb2NhbCByZXN1bHQ9XCJwYXNzXCJcbitcbitcdHNldHVwX3B1c2hfbWlycm9yXG4rXG4rXHQjIHZldGhfYTEgaW5ncmVzczogc2hhcmVkIHJlY292ZXIgV0lUSE9VVCB0YWctcG9wXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgJFRDIHFkaXNjIGFkZCBkZXYgXCIkVkVUSF9BMVwiIGNsc2FjdFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19MSVNURU5FUlwiICRUQyBmaWx0ZXIgYWRkIGRldiBcIiRWRVRIX0ExXCIgaW5ncmVzcyBcXFxuK1x0XHRwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXFxcbitcdFx0YWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXG4rXHRcdFx0cmVzZXQtdGltZSAyMDAwIGluZGV4ICRJRFhfTk9fUE9QXG4rXG4rXHQjIHZldGhfYjEgaW5ncmVzczogYmluZCB0byB0aGUgc2FtZSBzaGFyZWQgYWN0aW9uXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX0xJU1RFTkVSXCIgJFRDIHFkaXNjIGFkZCBkZXYgXCIkVkVUSF9CMVwiIGNsc2FjdFxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19MSVNURU5FUlwiICRUQyBmaWx0ZXIgYWRkIGRldiBcIiRWRVRIX0IxXCIgaW5ncmVzcyBcXFxuK1x0XHRwcm90b2NvbCBhbGwgZmxvd2VyIHNraXBfaHcgXFxcbitcdFx0YWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAkSURYX05PX1BPUFxuK1xuK1x0IyBDYXB0dXJlIDE6IGZyYW1lcyB3aXRoIFItVEFHIEV0aGVyVHlwZSBvbiBib25kMSAoZXhwZWN0IFx1MDAzZT0gMSlcbitcdHBjYXBfcnRhZz0kKG1rdGVtcCAvdG1wL2ZyZXJfYm9uZF9ub3BvcF9ydGFnX1hYWFhYWC5wY2FwKVxuK1x0Y2FwdHVyZV9zdGFydCBcIiRwY2FwX3J0YWdcIiBcImV0aGVyIHByb3RvIDB4ZjFjMVwiXG4rXHRpcCBuZXRucyBleGVjIFwiJE5TX1RBTEtFUlwiIFxcXG4rXHRcdCRQSU5HIC1jIDMgLVcgMSAtaSAwLjIgLXEgXCIkSVBfRFNUXCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIHx8IHRydWVcbitcdGNhcHR1cmVfc3RvcFxuK1x0cnRhZ19jb3VudD0kKGNhcHR1cmVfY291bnQgXCIkcGNhcF9ydGFnXCIpXG4rXHRybSAtZiBcIiRwY2FwX3J0YWdcIlxuK1xuK1x0IyBDYXB0dXJlIDI6IHBsYWluIElDTVAgZnJhbWVzIG9uIGJvbmQxIChleHBlY3QgMClcbitcdHBjYXBfaWNtcD0kKG1rdGVtcCAvdG1wL2ZyZXJfYm9uZF9ub3BvcF9pY21wX1hYWFhYWC5wY2FwKVxuK1x0Y2FwdHVyZV9zdGFydCBcIiRwY2FwX2ljbXBcIiBcImljbXBcIlxuK1x0aXAgbmV0bnMgZXhlYyBcIiROU19UQUxLRVJcIiBcXFxuK1x0XHQkUElORyAtYyAzIC1XIDEgLWkgMC4yIC1xIFwiJElQX0RTVFwiIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSB8fCB0cnVlXG4rXHRjYXB0dXJlX3N0b3BcbitcdGljbXBfY291bnQ9JChjYXB0dXJlX2NvdW50IFwiJHBjYXBfaWNtcFwiKVxuK1x0cm0gLWYgXCIkcGNhcF9pY21wXCJcbitcbitcdHRlYXJkb3duX3RjXG4rXG4rXHRlY2hvIFwiIyBib25kIG5vIHRhZy1wb3A6IHJ0YWc9JHJ0YWdfY291bnQgKGV4cGVjdGVkIFx1MDAzZT0xKSBpY21wPSRpY21wX2NvdW50IChleHBlY3RlZCAwKVwiXG4rXG4rXHRbIFwiJHJ0YWdfY291bnRcIiAtZ2UgMSBdIHx8IHJlc3VsdD1cImZhaWxcIlxuK1x0WyBcIiRpY21wX2NvdW50XCIgLWVxIDAgXSB8fCByZXN1bHQ9XCJmYWlsXCJcbitcbitcdGlmIFsgXCIkcmVzdWx0XCIgPSBcInBhc3NcIiBdOyB0aGVuXG4rXHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyBcXFxuK1x0XHRcdFwiYm9uZCBubyB0YWctcG9wOiBSLVRBRyBwcmVzZW50IG9uIGJvbmQxIFwiIFxcXG4rXHRcdFx0XCIocnRhZz0kcnRhZ19jb3VudCksIElDTVAgYWJzZW50IChpY21wPSRpY21wX2NvdW50KVwiXG4rXHRlbHNlXG4rXHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbCBcXFxuK1x0XHRcdFwiYm9uZCBubyB0YWctcG9wOiBydGFnPSRydGFnX2NvdW50IGljbXA9JGljbXBfY291bnQgXCIgXFxcbitcdFx0XHRcIihleHBlY3RlZCBydGFnXHUwMDNlPTEgaWNtcD0wKVwiXG4rXHRmaVxuK31cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFRFU1QgNTogU0lNUExFIFBPSU5ULVRPLVBPSU5UIChubyBib25kKVxuKyNcbisjIFNlbGYtY29udGFpbmVkIHNpbmdsZS1wYXRoIHRvcG9sb2d5OiBwdXNoIG9uIHAycF9hMCBlZ3Jlc3MsIGluZGl2aWR1YWxcbisjIHJlY292ZXIgKHdpdGggdGFnLXBvcCkgb24gcDJwX2ExIGluZ3Jlc3MuICBJUCBpcyBhc3NpZ25lZCBkaXJlY3RseSB0byB0aGVcbisjIHZldGggaW50ZXJmYWNlcyAobm8gYm9uZCkuXG4rI1xuKyMgUGFzcyBjcml0ZXJpYTpcbisjICAgLSBwaW5nIHN1Y2NlZWRzIChyYz0wKVxuKyMgICAtIHZldGhfYTEgcmVjb3ZlciBzdGF0czogcGFzc2VkIFx1MDAzZT0gUElOR19DT1VOVCwgZGlzY2FyZGVkID0gMFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK3Rlc3Rfc2ltcGxlX3BvaW50X3RvX3BvaW50KClcbit7XG4rXHRsb2NhbCBwaW5nX3JjPTBcbitcdGxvY2FsIGR1bXBfYTEgcGFzc2VkIGRpc2NhcmRlZFxuK1x0bG9jYWwgcmVzdWx0PVwicGFzc1wiXG4rXG4rXHQjIENyZWF0ZSBzZWxmLWNvbnRhaW5lZCBwMnAgbmFtZXNwYWNlc1xuK1x0aXAgbmV0bnMgYWRkIFwiJFAyUF9OU19TUkNcIlxuK1x0aXAgbmV0bnMgYWRkIFwiJFAyUF9OU19EU1RcIlxuK1xuK1x0aXAgbGluayBhZGQgXCIkUDJQX1ZFVEhfQTBcIiB0eXBlIHZldGggcGVlciBuYW1lIFwiJFAyUF9WRVRIX0ExXCJcbitcdGlwIGxpbmsgc2V0IFwiJFAyUF9WRVRIX0EwXCIgbmV0bnMgXCIkUDJQX05TX1NSQ1wiXG4rXHRpcCBsaW5rIHNldCBcIiRQMlBfVkVUSF9BMVwiIG5ldG5zIFwiJFAyUF9OU19EU1RcIlxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfU1JDXCIgaXAgbGluayBzZXQgbG8gdXBcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUDJQX05TX1NSQ1wiIGlwIGxpbmsgc2V0IFwiJFAyUF9WRVRIX0EwXCIgdXBcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUDJQX05TX1NSQ1wiIGlwIGFkZHIgYWRkIFwiJHtJUF9QMlBfU1JDfS8yNFwiIGRldiBcIiRQMlBfVkVUSF9BMFwiXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJFAyUF9OU19EU1RcIiBpcCBsaW5rIHNldCBsbyB1cFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfRFNUXCIgaXAgbGluayBzZXQgXCIkUDJQX1ZFVEhfQTFcIiB1cFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfRFNUXCIgaXAgYWRkciBhZGQgXCIke0lQX1AyUF9EU1R9LzI0XCIgZGV2IFwiJFAyUF9WRVRIX0ExXCJcbitcbitcdGxvY2FsIG1hY19hMCBtYWNfYTFcbitcdG1hY19hMD0kKGlwIG5ldG5zIGV4ZWMgXCIkUDJQX05TX1NSQ1wiIGNhdCAvc3lzL2NsYXNzL25ldC9cIiRQMlBfVkVUSF9BMFwiL2FkZHJlc3MpXG4rXHRtYWNfYTE9JChpcCBuZXRucyBleGVjIFwiJFAyUF9OU19EU1RcIiBjYXQgL3N5cy9jbGFzcy9uZXQvXCIkUDJQX1ZFVEhfQTFcIi9hZGRyZXNzKVxuK1x0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfU1JDXCIgaXAgbmVpZ2ggYWRkIFwiJElQX1AyUF9EU1RcIiBsbGFkZHIgXCIkbWFjX2ExXCIgZGV2IFwiJFAyUF9WRVRIX0EwXCJcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUDJQX05TX0RTVFwiIGlwIG5laWdoIGFkZCBcIiRJUF9QMlBfU1JDXCIgbGxhZGRyIFwiJG1hY19hMFwiIGRldiBcIiRQMlBfVkVUSF9BMVwiXG4rXG4rXHQjIHZldGhfYTAgZWdyZXNzOiBwdXNoIFItVEFHXG4rXHRpcCBuZXRucyBleGVjIFwiJFAyUF9OU19TUkNcIiAkVEMgcWRpc2MgYWRkIGRldiBcIiRQMlBfVkVUSF9BMFwiIGNsc2FjdFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfU1JDXCIgJFRDIGZpbHRlciBhZGQgZGV2IFwiJFAyUF9WRVRIX0EwXCIgZWdyZXNzIFxcXG4rXHRcdHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IFxcXG4rXHRcdGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggJElEWF9QVVNIXG4rXG4rXHQjIHZldGhfYTEgaW5ncmVzczogaW5kaXZpZHVhbCByZWNvdmVyIHdpdGggdGFnLXBvcFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfRFNUXCIgJFRDIHFkaXNjIGFkZCBkZXYgXCIkUDJQX1ZFVEhfQTFcIiBjbHNhY3RcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUDJQX05TX0RTVFwiICRUQyBmaWx0ZXIgYWRkIGRldiBcIiRQMlBfVkVUSF9BMVwiIGluZ3Jlc3MgXFxcbitcdFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXG4rXHRcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IFxcXG4rXHRcdFx0cmVzZXQtdGltZSAyMDAwIHRhZy1wb3AgaW5kZXggJElEWF9QMlBfUkNWWVxuK1xuK1x0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfU1JDXCIgXFxcbitcdFx0JFBJTkcgLWMgXCIkUElOR19DT1VOVFwiIC1XIFwiJFBJTkdfVElNRU9VVFwiIC1pIDAuMiAtcSBcXFxuK1x0XHRcIiRJUF9QMlBfRFNUXCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIHx8IHBpbmdfcmM9JD9cbitcbitcdGR1bXBfYTE9JChpcCBuZXRucyBleGVjIFwiJFAyUF9OU19EU1RcIiBcXFxuK1x0XHQkVEMgLXMgZmlsdGVyIHNob3cgZGV2IFwiJFAyUF9WRVRIX0ExXCIgaW5ncmVzcyAyXHUwMDNlL2Rldi9udWxsKVxuK1xuK1x0IyBUZWFyZG93biBwMnAgdG9wb2xvZ3lcbitcdGZvciBkZXYgaW4gXCIkUDJQX1ZFVEhfQTBcIjsgZG9cbitcdFx0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfU1JDXCIgJFRDIHFkaXNjIGRlbCBkZXYgXCIkZGV2XCIgY2xzYWN0IFxcXG4rXHRcdFx0Mlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4rXHRkb25lXG4rXHRmb3IgZGV2IGluIFwiJFAyUF9WRVRIX0ExXCI7IGRvXG4rXHRcdGlwIG5ldG5zIGV4ZWMgXCIkUDJQX05TX0RTVFwiICRUQyBxZGlzYyBkZWwgZGV2IFwiJGRldlwiIGNsc2FjdCBcXFxuK1x0XHRcdDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1x0ZG9uZVxuK1x0aXAgbmV0bnMgZXhlYyBcIiRQMlBfTlNfU1JDXCIgJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXIgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4rXHRpcCBuZXRucyBleGVjIFwiJFAyUF9OU19EU1RcIiAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcdGlwIG5ldG5zIGRlbCBcIiRQMlBfTlNfU1JDXCIgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4rXHRpcCBuZXRucyBkZWwgXCIkUDJQX05TX0RTVFwiIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1xuK1x0cGFzc2VkPSQodGNfc3RhdCAgICBcIiRkdW1wX2ExXCIgXCJwYXNzZWRcIilcbitcdGRpc2NhcmRlZD0kKHRjX3N0YXQgXCIkZHVtcF9hMVwiIFwiZGlzY2FyZGVkXCIpXG4rXHRsb2NhbCB0YWdsZXNzXG4rXHR0YWdsZXNzPSQodGNfc3RhdCAgIFwiJGR1bXBfYTFcIiBcInRhZ2xlc3NcIilcbitcdGRpc2NhcmRlZD0kKChkaXNjYXJkZWQgLSB0YWdsZXNzKSlcbitcbitcdGVjaG8gXCIjIHAycDogcGluZ19yYz0kcGluZ19yYyBwYXNzZWQ9JHBhc3NlZCBkaXNjYXJkZWQ9JGRpc2NhcmRlZFwiXG4rXG4rXHRbIFwiJHBpbmdfcmNcIiAgIC1lcSAwIF0gICAgICAgICAgICB8fCByZXN1bHQ9XCJmYWlsXCJcbitcdFsgXCIkcGFzc2VkXCIgICAgLWdlIFwiJFBJTkdfQ09VTlRcIiBdIHx8IHJlc3VsdD1cImZhaWxcIlxuK1x0WyBcIiRkaXNjYXJkZWRcIiAtZXEgMCBdICAgICAgICAgICAgfHwgcmVzdWx0PVwiZmFpbFwiXG4rXG4rXHRpZiBbIFwiJHJlc3VsdFwiID0gXCJwYXNzXCIgXTsgdGhlblxuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MgXFxcbitcdFx0XHRcInNpbXBsZSBwMnA6IHBpbmcgT0ssIHBhc3NlZD0kcGFzc2VkIGRpc2NhcmRlZD0kZGlzY2FyZGVkXCJcbitcdGVsc2VcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFxcXG4rXHRcdFx0XCJzaW1wbGUgcDJwOiBwaW5nX3JjPSRwaW5nX3JjIHBhc3NlZD0kcGFzc2VkIGRpc2NhcmRlZD0kZGlzY2FyZGVkXCJcbitcdGZpXG4rfVxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVEVTVCA2OiBSRUxBWSBFMkUgKHNlbGYtY29udGFpbmVkLCBubyBib25kKVxuKyNcbisjIFRhbGtlciBzZW5kcyBWTEFOLTEwMCBmcmFtZXMgaW50byBicmlkZ2UwIChzZXF1ZW5jZSBnZW5lcmF0b3IpLiAgQnJpZGdlMFxuKyMgcHVzaGVzIGFuIFItVEFHIGFuZCByZXBsaWNhdGVzIHRvIHR3byByZWR1bmRhbnQgcGF0aHMuICBCcmlkZ2UxIChlbGltaW5hdG9yKVxuKyMgcmVjb3ZlcnMgKHNoYXJlZCwgdGFnLXBvcCkgb24gYm90aCBwYXRocyBhbmQgZm9yd2FyZHMgdGhlIGRlZHVwbGljYXRlZCBmcmFtZVxuKyMgdG8gdGhlIGxpc3RlbmVyLlxuKyNcbisjIFRvcG9sb2d5OlxuKyMgICBuc190YWxrZXIgKHRhbGtlcl9ldGguMTAwKSAtLSB0YWxrZXJfZXRoL2JyMF91cGxpbmtcbisjICAgICAgIC0tIGJyaWRnZTAgKGJyX3IwKSAtKy0gYnIwX3N3cDAvYnIxX3N3cDAgLStcbisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcLSBicjBfc3dwMS9icjFfc3dwMSAtK1xuKyMgICAgICAgLS0gYnJpZGdlMSAoYnJfcjEpIC0tIGJyMV9kb3dubGluay9saXN0ZW5lcl9ldGggLS0gbnNfbGlzdGVuZXJcbisjXG4rIyBGUkVSIHJ1bGVzOlxuKyMgICBicmlkZ2UwIC8gYnIwX3VwbGluayBpbmdyZXNzICA6IHB1c2ggaWR4PTUwLCByZWRpcmVjdCBicjBfc3dwMCwgbWlycm9yIGJyMF9zd3AxXG4rIyAgIGJyaWRnZTEgLyBicjFfc3dwMCBpbmdyZXNzICAgIDogcmVjb3ZlciAoc2hhcmVkLCB0YWctcG9wKSBpZHg9NjAsIHJlZGlyZWN0IGJyMV9kb3dubGlua1xuKyMgICBicmlkZ2UxIC8gYnIxX3N3cDEgaW5ncmVzcyAgICA6IHJlY292ZXIgaWR4PTYwIChiaW5kIHNhbWUpLCByZWRpcmVjdCBicjFfZG93bmxpbmtcbisjICAgYnJpZGdlMSAvIGJyMV9kb3dubGluayBpbmdyZXNzOiByZWRpcmVjdCBicjFfc3dwMCAocmVwbHkgcGF0aCwgYnlwYXNzIEZEQilcbisjXG4rIyBQYXNzIGNyaXRlcmlhOlxuKyMgICAtIHBpbmcgZnJvbSBuc190YWxrZXIgdG8gbnNfbGlzdGVuZXIgc3VjY2VlZHMgKHJjPTApXG4rIyAgIC0gdGNwZHVtcCBvbiBsaXN0ZW5lciBjYXB0dXJlcyBleGFjdGx5IFBJTkdfQ09VTlQgSUNNUCBlY2hvLXJlcXVlc3QgZnJhbWVzXG4rIyAgIC0gYnIxX3N3cDAgdGMgc3RhdHM6IHBhc3NlZCBcdTAwM2U9IFBJTkdfQ09VTlQsIGRpc2NhcmRlZCBcdTAwM2U9IFBJTkdfQ09VTlRcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbit0ZWFyZG93bl9yZWxheV90YygpXG4re1xuK1x0Zm9yIGRldiBpbiBcIiRSX0JSMF9VUExJTktcIjsgZG9cbitcdFx0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTBcIiAkVEMgcWRpc2MgZGVsIGRldiBcIiRkZXZcIiBjbHNhY3QgXFxcbitcdFx0XHQyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcdGRvbmVcbitcdGZvciBkZXYgaW4gXCIkUl9CUjFfU1dQMFwiIFwiJFJfQlIxX1NXUDFcIiBcIiRSX0JSMV9ET1dOTElOS1wiOyBkb1xuK1x0XHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMVwiICRUQyBxZGlzYyBkZWwgZGV2IFwiJGRldlwiIGNsc2FjdCBcXFxuK1x0XHRcdDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1x0ZG9uZVxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTBcIiAkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UxXCIgJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXIgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXG4rfVxuK1xuK3Rlc3RfcmVsYXlfZTJlKClcbit7XG4rXHRsb2NhbCBwaW5nX3JjPTBcbitcdGxvY2FsIGR1bXBfcjFzd3AwXG4rXHRsb2NhbCB0b3RhbF9wYXNzZWQgdG90YWxfZGlzY2FyZGVkXG4rXHRsb2NhbCByZXN1bHQ9XCJwYXNzXCJcbitcdGxvY2FsIG5zXG4rXG4rXHRmb3IgbnMgaW4gXCIkUl9OU19UQUxLRVJcIiBcIiRSX05TX0JSSURHRTBcIiBcIiRSX05TX0JSSURHRTFcIiBcIiRSX05TX0xJU1RFTkVSXCI7IGRvXG4rXHRcdGlwIG5ldG5zIGFkZCBcIiRuc1wiIHx8IHtcbitcdFx0XHRlY2hvIFwiIyByZWxheSBlMmU6IGZhaWxlZCB0byBjcmVhdGUgbmV0bnMgJG5zXCIgXHUwMDNlXHUwMDI2MlxuK1x0XHRcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcCBcInJlbGF5IGUyZTogbmV0bnMgc2V0dXAgZmFpbGVkXCJcbitcdFx0XHRyZXR1cm5cbitcdFx0fVxuK1x0ZG9uZVxuK1xuK1x0aXAgbGluayBhZGQgXCIkUl9UQUxLRVJfRVRIXCIgICB0eXBlIHZldGggcGVlciBuYW1lIFwiJFJfQlIwX1VQTElOS1wiXG4rXHRpcCBsaW5rIGFkZCBcIiRSX0JSMF9TV1AwXCIgICAgIHR5cGUgdmV0aCBwZWVyIG5hbWUgXCIkUl9CUjFfU1dQMFwiXG4rXHRpcCBsaW5rIGFkZCBcIiRSX0JSMF9TV1AxXCIgICAgIHR5cGUgdmV0aCBwZWVyIG5hbWUgXCIkUl9CUjFfU1dQMVwiXG4rXHRpcCBsaW5rIGFkZCBcIiRSX0JSMV9ET1dOTElOS1wiIHR5cGUgdmV0aCBwZWVyIG5hbWUgXCIkUl9MSVNURU5FUl9FVEhcIlxuK1xuK1x0aXAgbGluayBzZXQgXCIkUl9UQUxLRVJfRVRIXCIgICBuZXRucyBcIiRSX05TX1RBTEtFUlwiXG4rXHRpcCBsaW5rIHNldCBcIiRSX0JSMF9VUExJTktcIiAgIG5ldG5zIFwiJFJfTlNfQlJJREdFMFwiXG4rXHRpcCBsaW5rIHNldCBcIiRSX0JSMF9TV1AwXCIgICAgIG5ldG5zIFwiJFJfTlNfQlJJREdFMFwiXG4rXHRpcCBsaW5rIHNldCBcIiRSX0JSMF9TV1AxXCIgICAgIG5ldG5zIFwiJFJfTlNfQlJJREdFMFwiXG4rXHRpcCBsaW5rIHNldCBcIiRSX0JSMV9TV1AwXCIgICAgIG5ldG5zIFwiJFJfTlNfQlJJREdFMVwiXG4rXHRpcCBsaW5rIHNldCBcIiRSX0JSMV9TV1AxXCIgICAgIG5ldG5zIFwiJFJfTlNfQlJJREdFMVwiXG4rXHRpcCBsaW5rIHNldCBcIiRSX0JSMV9ET1dOTElOS1wiIG5ldG5zIFwiJFJfTlNfQlJJREdFMVwiXG4rXHRpcCBsaW5rIHNldCBcIiRSX0xJU1RFTkVSX0VUSFwiIG5ldG5zIFwiJFJfTlNfTElTVEVORVJcIlxuK1xuK1x0bG9jYWwgbnNfZGV2XG4rXHRmb3IgbnNfZGV2IGluIFxcXG4rXHRcdFwiJFJfTlNfVEFMS0VSOiRSX1RBTEtFUl9FVEhcIiBcXFxuK1x0XHRcIiRSX05TX0JSSURHRTA6JFJfQlIwX1VQTElOS1wiIFwiJFJfTlNfQlJJREdFMDokUl9CUjBfU1dQMFwiIFxcXG4rXHRcdFwiJFJfTlNfQlJJREdFMDokUl9CUjBfU1dQMVwiIFxcXG4rXHRcdFwiJFJfTlNfQlJJREdFMTokUl9CUjFfU1dQMFwiIFwiJFJfTlNfQlJJREdFMTokUl9CUjFfU1dQMVwiIFxcXG4rXHRcdFwiJFJfTlNfQlJJREdFMTokUl9CUjFfRE9XTkxJTktcIiBcXFxuK1x0XHRcIiRSX05TX0xJU1RFTkVSOiRSX0xJU1RFTkVSX0VUSFwiOyBkb1xuK1x0XHRsb2NhbCBfbnM9XCIke25zX2RldiUlOip9XCJcbitcdFx0bG9jYWwgX2Rldj1cIiR7bnNfZGV2IyMqOn1cIlxuK1x0XHRpcCBuZXRucyBleGVjIFwiJF9uc1wiIGlwIGxpbmsgc2V0IGxvIHVwXG4rXHRcdGlwIG5ldG5zIGV4ZWMgXCIkX25zXCIgaXAgbGluayBzZXQgXCIkX2RldlwiIHVwXG4rXHRkb25lXG4rXG4rXHQjIGJyaWRnZTA6IHNlcXVlbmNlIGdlbmVyYXRvciwgVkxBTiBmaWx0ZXJpbmdcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UwXCIgaXAgbGluayBhZGQgbmFtZSBcIiRSX0JSMFwiIHR5cGUgYnJpZGdlIHZsYW5fZmlsdGVyaW5nIDFcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UwXCIgaXAgbGluayBzZXQgXCIkUl9CUjBcIiB1cFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTBcIiBpcCBsaW5rIHNldCBcIiRSX0JSMF9VUExJTktcIiBtYXN0ZXIgXCIkUl9CUjBcIlxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTBcIiBpcCBsaW5rIHNldCBcIiRSX0JSMF9TV1AwXCIgbWFzdGVyIFwiJFJfQlIwXCJcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UwXCIgaXAgbGluayBzZXQgXCIkUl9CUjBfU1dQMVwiIG1hc3RlciBcIiRSX0JSMFwiXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMFwiIGJyaWRnZSB2bGFuIGFkZCBkZXYgXCIkUl9CUjBfVVBMSU5LXCIgdmlkIFwiJFJfVkxBTlwiXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMFwiIGJyaWRnZSB2bGFuIGFkZCBkZXYgXCIkUl9CUjBfU1dQMFwiIHZpZCBcIiRSX1ZMQU5cIlxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTBcIiBicmlkZ2UgdmxhbiBkZWwgZGV2IFwiJFJfQlIwX1NXUDFcIiB2aWQgMVxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTBcIiBicmlkZ2UgdmxhbiBhZGQgZGV2IFwiJFJfQlIwX1NXUDFcIiBcXFxuK1x0XHR2aWQgXCIkUl9WTEFOXCIgcHZpZCB1bnRhZ2dlZFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTBcIiBicmlkZ2UgbGluayBzZXQgZGV2IFwiJFJfQlIwX1NXUDBcIiBsZWFybmluZyBvZmZcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UwXCIgYnJpZGdlIGxpbmsgc2V0IGRldiBcIiRSX0JSMF9TV1AxXCIgbGVhcm5pbmcgb2ZmXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMFwiIGJyaWRnZSB2bGFuIHNldCBkZXYgXCIkUl9CUjBfU1dQMFwiIHZpZCBcIiRSX1ZMQU5cIiBub2Zsb29kXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMFwiIGJyaWRnZSB2bGFuIHNldCBkZXYgXCIkUl9CUjBfU1dQMVwiIHZpZCBcIiRSX1ZMQU5cIiBub2Zsb29kXG4rXG4rXHQjIGJyaWRnZTE6IGVsaW1pbmF0b3IsIFZMQU4gZmlsdGVyaW5nXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMVwiIGlwIGxpbmsgYWRkIG5hbWUgXCIkUl9CUjFcIiB0eXBlIGJyaWRnZSB2bGFuX2ZpbHRlcmluZyAxXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMVwiIGlwIGxpbmsgc2V0IFwiJFJfQlIxXCIgdXBcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UxXCIgaXAgbGluayBzZXQgXCIkUl9CUjFfU1dQMFwiIG1hc3RlciBcIiRSX0JSMVwiXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMVwiIGlwIGxpbmsgc2V0IFwiJFJfQlIxX1NXUDFcIiBtYXN0ZXIgXCIkUl9CUjFcIlxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiBpcCBsaW5rIHNldCBcIiRSX0JSMV9ET1dOTElOS1wiIG1hc3RlciBcIiRSX0JSMVwiXG4rXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMVwiIGJyaWRnZSB2bGFuIGFkZCBkZXYgXCIkUl9CUjFfU1dQMFwiIHZpZCBcIiRSX1ZMQU5cIlxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiBicmlkZ2UgdmxhbiBkZWwgZGV2IFwiJFJfQlIxX1NXUDFcIiB2aWQgMVxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiBicmlkZ2UgdmxhbiBhZGQgZGV2IFwiJFJfQlIxX1NXUDFcIiBcXFxuK1x0XHR2aWQgXCIkUl9WTEFOXCIgcHZpZCB1bnRhZ2dlZFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiBicmlkZ2UgdmxhbiBhZGQgZGV2IFwiJFJfQlIxX0RPV05MSU5LXCIgdmlkIFwiJFJfVkxBTlwiXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMVwiIGJyaWRnZSBsaW5rIHNldCBkZXYgXCIkUl9CUjFfU1dQMFwiIGxlYXJuaW5nIG9mZlxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiBicmlkZ2UgbGluayBzZXQgZGV2IFwiJFJfQlIxX1NXUDFcIiBsZWFybmluZyBvZmZcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UxXCIgYnJpZGdlIHZsYW4gc2V0IGRldiBcIiRSX0JSMV9TV1AwXCIgdmlkIFwiJFJfVkxBTlwiIG5vZmxvb2RcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UxXCIgYnJpZGdlIHZsYW4gc2V0IGRldiBcIiRSX0JSMV9TV1AxXCIgdmlkIFwiJFJfVkxBTlwiIG5vZmxvb2RcbitcbitcdCMgbnNfdGFsa2VyOiBWTEFOIHN1Yi1pbnRlcmZhY2VcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19UQUxLRVJcIiBpcCBsaW5rIGFkZCBsaW5rIFwiJFJfVEFMS0VSX0VUSFwiIFxcXG4rXHRcdG5hbWUgXCIke1JfVEFMS0VSX0VUSH0uJHtSX1ZMQU59XCIgdHlwZSB2bGFuIGlkIFwiJFJfVkxBTlwiXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfVEFMS0VSXCIgaXAgbGluayBzZXQgXCIke1JfVEFMS0VSX0VUSH0uJHtSX1ZMQU59XCIgdXBcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19UQUxLRVJcIiBpcCBhZGRyIGFkZCBcIiR7Ul9JUF9UQUxLRVJ9LzI0XCIgXFxcbitcdFx0ZGV2IFwiJHtSX1RBTEtFUl9FVEh9LiR7Ul9WTEFOfVwiXG4rXG4rXHQjIG5zX2xpc3RlbmVyOiBWTEFOIHN1Yi1pbnRlcmZhY2VcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19MSVNURU5FUlwiIGlwIGxpbmsgYWRkIGxpbmsgXCIkUl9MSVNURU5FUl9FVEhcIiBcXFxuK1x0XHRuYW1lIFwiJHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59XCIgdHlwZSB2bGFuIGlkIFwiJFJfVkxBTlwiXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfTElTVEVORVJcIiBpcCBsaW5rIHNldCBcIiR7Ul9MSVNURU5FUl9FVEh9LiR7Ul9WTEFOfVwiIHVwXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfTElTVEVORVJcIiBpcCBhZGRyIGFkZCBcIiR7Ul9JUF9MSVNURU5FUn0vMjRcIiBcXFxuK1x0XHRkZXYgXCIke1JfTElTVEVORVJfRVRIfS4ke1JfVkxBTn1cIlxuK1xuK1x0IyBTdGF0aWMgQVJQIChWTEFOIDEwMCBmbG9vZGluZyBpcyBkaXNhYmxlZClcbitcdGxvY2FsIG1hY190YWxrZXIgbWFjX2xpc3RlbmVyXG4rXHRtYWNfdGFsa2VyPSQoaXAgbmV0bnMgZXhlYyBcIiRSX05TX1RBTEtFUlwiIFxcXG4rXHRcdGNhdCAvc3lzL2NsYXNzL25ldC9cIiR7Ul9UQUxLRVJfRVRIfS4ke1JfVkxBTn1cIi9hZGRyZXNzKVxuK1x0bWFjX2xpc3RlbmVyPSQoaXAgbmV0bnMgZXhlYyBcIiRSX05TX0xJU1RFTkVSXCIgXFxcbitcdFx0Y2F0IC9zeXMvY2xhc3MvbmV0L1wiJHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59XCIvYWRkcmVzcylcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19UQUxLRVJcIiAgIGlwIG5laWdoIGFkZCBcIiRSX0lQX0xJU1RFTkVSXCIgXFxcbitcdFx0bGxhZGRyIFwiJG1hY19saXN0ZW5lclwiIGRldiBcIiR7Ul9UQUxLRVJfRVRIfS4ke1JfVkxBTn1cIlxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0xJU1RFTkVSXCIgaXAgbmVpZ2ggYWRkIFwiJFJfSVBfVEFMS0VSXCIgXFxcbitcdFx0bGxhZGRyIFwiJG1hY190YWxrZXJcIiAgIGRldiBcIiR7Ul9MSVNURU5FUl9FVEh9LiR7Ul9WTEFOfVwiXG4rXG4rXHQjIGJyaWRnZTAgLyBicjBfdXBsaW5rIGluZ3Jlc3M6IHB1c2ggUi1UQUcgdGhlbiByZXBsaWNhdGUgdG8gYm90aCByZWR1bmRhbnQgcGF0aHMuXG4rXHQjIG1pcnJvciBtdXN0IGNvbWUgYmVmb3JlIHJlZGlyZWN0IGJlY2F1c2UgcmVkaXJlY3QgaXMgYSB0ZXJtaW5hdGluZyBhY3Rpb24uXG4rXHRpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMFwiICRUQyBxZGlzYyBhZGQgZGV2IFwiJFJfQlIwX1VQTElOS1wiIGNsc2FjdFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTBcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXCIkUl9CUjBfVVBMSU5LXCIgaW5ncmVzcyBcXFxuK1x0XHRwcm90b2NvbCA4MDIuMVEgZmxvd2VyIHNraXBfaHcgdmxhbl9pZCBcIiRSX1ZMQU5cIiBcXFxuK1x0XHRhY3Rpb24gZnJlciBwdXNoIGluZGV4ICRJRFhfUkVMQVlfUFVTSCBcXFxuK1x0XHRhY3Rpb24gbWlycmVkIGVncmVzcyBtaXJyb3IgIGRldiBcIiRSX0JSMF9TV1AxXCIgXFxcbitcdFx0YWN0aW9uIG1pcnJlZCBlZ3Jlc3MgcmVkaXJlY3QgZGV2IFwiJFJfQlIwX1NXUDBcIlxuK1xuK1x0IyBicmlkZ2UxIC8gYnIxX3N3cDAgaW5ncmVzczogY3JlYXRlIHNoYXJlZCByZWNvdmVyIGFjdGlvbiAodGFnLXBvcClcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UxXCIgJFRDIHFkaXNjIGFkZCBkZXYgXCIkUl9CUjFfU1dQMFwiIGNsc2FjdFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXCIkUl9CUjFfU1dQMFwiIGluZ3Jlc3MgXFxcbitcdFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXG4rXHRcdGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiBcXFxuK1x0XHRcdHJlc2V0LXRpbWUgMjAwMCB0YWctcG9wIGluZGV4ICRJRFhfUkVMQVlfUkNWWSBcXFxuK1x0XHRhY3Rpb24gbWlycmVkIGVncmVzcyByZWRpcmVjdCBkZXYgXCIkUl9CUjFfRE9XTkxJTktcIlxuK1xuK1x0IyBicmlkZ2UxIC8gYnIxX3N3cDEgaW5ncmVzczogYmluZCB0byB0aGUgc2FtZSBzaGFyZWQgcmVjb3ZlciBhY3Rpb25cbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19CUklER0UxXCIgJFRDIHFkaXNjIGFkZCBkZXYgXCIkUl9CUjFfU1dQMVwiIGNsc2FjdFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXCIkUl9CUjFfU1dQMVwiIGluZ3Jlc3MgXFxcbitcdFx0cHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IFxcXG4rXHRcdGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggJElEWF9SRUxBWV9SQ1ZZIFxcXG4rXHRcdGFjdGlvbiBtaXJyZWQgZWdyZXNzIHJlZGlyZWN0IGRldiBcIiRSX0JSMV9ET1dOTElOS1wiXG4rXG4rXHQjIGJyaWRnZTEgLyBicjFfZG93bmxpbmsgaW5ncmVzczogcmVkaXJlY3QgVkxBTiAxMDAgcmVwbGllcyBkaXJlY3RseSB0byBicjFfc3dwMFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiAkVEMgcWRpc2MgYWRkIGRldiBcIiRSX0JSMV9ET1dOTElOS1wiIGNsc2FjdFxuK1x0aXAgbmV0bnMgZXhlYyBcIiRSX05TX0JSSURHRTFcIiAkVEMgZmlsdGVyIGFkZCBkZXYgXCIkUl9CUjFfRE9XTkxJTktcIiBpbmdyZXNzIFxcXG4rXHRcdHByb3RvY29sIDgwMi4xUSBmbG93ZXIgc2tpcF9odyB2bGFuX2lkIFwiJFJfVkxBTlwiIFxcXG4rXHRcdGFjdGlvbiBtaXJyZWQgZWdyZXNzIHJlZGlyZWN0IGRldiBcIiRSX0JSMV9TV1AwXCJcbitcbitcdCMgQ2FwdHVyZSBJQ01QIGVjaG8tcmVxdWVzdHMgb24gbGlzdGVuZXJfZXRoLlZMQU4gdG8gdmVyaWZ5IGV4YWN0bHlcbitcdCMgUElOR19DT1VOVCBkZWR1cGxpY2F0ZWQgZnJhbWVzIHJlYWNoIHRoZSBsaXN0ZW5lciBhZnRlciByZWNvdmVyeS5cbitcdGxvY2FsIHBjYXAgY2FwX2NvdW50XG4rXHRwY2FwPSQobWt0ZW1wIC90bXAvZnJlcl9yZWxheV9YWFhYWFgucGNhcClcbitcdGNhcHR1cmVfc3RhcnRfb24gXCIkUl9OU19MSVNURU5FUlwiIFwiJHtSX0xJU1RFTkVSX0VUSH0uJHtSX1ZMQU59XCIgXFxcbitcdFx0XCIkcGNhcFwiIFwiaWNtcFtpY21wdHlwZV0gPT0gaWNtcC1lY2hvXCJcbitcbitcdGlwIG5ldG5zIGV4ZWMgXCIkUl9OU19UQUxLRVJcIiBcXFxuK1x0XHQkUElORyAtYyBcIiRQSU5HX0NPVU5UXCIgLVcgXCIkUElOR19USU1FT1VUXCIgLWkgMC4yIC1xIFxcXG4rXHRcdFwiJFJfSVBfTElTVEVORVJcIiBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgfHwgcGluZ19yYz0kP1xuK1xuK1x0Y2FwdHVyZV9zdG9wXG4rXHRjYXBfY291bnQ9JChjYXB0dXJlX2NvdW50X29uIFwiJFJfTlNfTElTVEVORVJcIiBcIiRwY2FwXCIpXG4rXHRybSAtZiBcIiRwY2FwXCJcbitcbitcdGR1bXBfYnIxX3N3cDA9JChpcCBuZXRucyBleGVjIFwiJFJfTlNfQlJJREdFMVwiIFxcXG4rXHRcdCRUQyAtcyBmaWx0ZXIgc2hvdyBkZXYgXCIkUl9CUjFfU1dQMFwiIGluZ3Jlc3MgMlx1MDAzZS9kZXYvbnVsbClcbitcbitcdHRlYXJkb3duX3JlbGF5X3RjXG4rXHRmb3IgbnMgaW4gXCIkUl9OU19UQUxLRVJcIiBcIiRSX05TX0JSSURHRTBcIiBcIiRSX05TX0JSSURHRTFcIiBcIiRSX05TX0xJU1RFTkVSXCI7IGRvXG4rXHRcdGlwIG5ldG5zIGRlbCBcIiRuc1wiIDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVxuK1x0ZG9uZVxuK1xuK1x0dG90YWxfcGFzc2VkPSQodGNfc3RhdCAgICBcIiRkdW1wX2JyMV9zd3AwXCIgXCJwYXNzZWRcIilcbitcdHRvdGFsX2Rpc2NhcmRlZD0kKHRjX3N0YXQgXCIkZHVtcF9icjFfc3dwMFwiIFwiZGlzY2FyZGVkXCIpXG4rXHRsb2NhbCB0YWdsZXNzXG4rXHR0YWdsZXNzPSQodGNfc3RhdCAgICAgICAgIFwiJGR1bXBfYnIxX3N3cDBcIiBcInRhZ2xlc3NcIilcbitcdHRvdGFsX2Rpc2NhcmRlZD0kKCh0b3RhbF9kaXNjYXJkZWQgLSB0YWdsZXNzKSlcbitcbitcdGVjaG8gXCIjIHJlbGF5IGUyZTogcGluZ19yYz0kcGluZ19yYyBjYXA9JGNhcF9jb3VudFwiIFxcXG4rXHRcdFwicGFzc2VkPSR0b3RhbF9wYXNzZWQgZGlzY2FyZGVkPSR0b3RhbF9kaXNjYXJkZWRcIlxuK1xuK1x0WyBcIiRwaW5nX3JjXCIgICAgICAgICAtZXEgMCBdICAgICAgICAgICAgfHwgcmVzdWx0PVwiZmFpbFwiXG4rXHRbIFwiJGNhcF9jb3VudFwiICAgICAgIC1lcSBcIiRQSU5HX0NPVU5UXCIgXSB8fCByZXN1bHQ9XCJmYWlsXCJcbitcdFsgXCIkdG90YWxfcGFzc2VkXCIgICAgLWdlIFwiJFBJTkdfQ09VTlRcIiBdIHx8IHJlc3VsdD1cImZhaWxcIlxuK1x0WyBcIiR0b3RhbF9kaXNjYXJkZWRcIiAtZ2UgXCIkUElOR19DT1VOVFwiIF0gfHwgcmVzdWx0PVwiZmFpbFwiXG4rXG4rXHRpZiBbIFwiJHJlc3VsdFwiID0gXCJwYXNzXCIgXTsgdGhlblxuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MgXFxcbitcdFx0XHRcInJlbGF5IGUyZTogcGluZyBPSywgY2FwPSRjYXBfY291bnQgXCIgXFxcbitcdFx0XHRcInBhc3NlZD0kdG90YWxfcGFzc2VkIGRpc2NhcmRlZD0kdG90YWxfZGlzY2FyZGVkXCJcbitcdGVsc2VcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsIFxcXG4rXHRcdFx0XCJyZWxheSBlMmU6IHBpbmdfcmM9JHBpbmdfcmMgY2FwPSRjYXBfY291bnQgXCIgXFxcbitcdFx0XHRcInBhc3NlZD0kdG90YWxfcGFzc2VkIGRpc2NhcmRlZD0kdG90YWxfZGlzY2FyZGVkXCIgXFxcbitcdFx0XHRcIihleHBlY3RlZCBwaW5nIE9LLCBjYXA9JFBJTkdfQ09VTlQsXCIgXFxcbitcdFx0XHRcInBhc3NlZFx1MDAzZT0kUElOR19DT1VOVCwgZGlzY2FyZGVkXHUwMDNlPSRQSU5HX0NPVU5UKVwiXG4rXHRmaVxuK31cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIE1haW5cbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbittYWluKClcbit7XG4rXHRrc2Z0X3ByaW50X2hlYWRlclxuK1x0Y2hlY2tfcHJlcmVxdWlzaXRlc1xuK1x0bG9hZF9tb2R1bGVcbitcdHNldHVwX3RvcG9sb2d5XG4rXG4rXHRpZiAhIGNoZWNrX2ZyZXJfYWN0aW9uOyB0aGVuXG4rXHRcdGtzZnRfc2V0X3BsYW4gXCIkTlVNX1RFU1RTXCJcbitcdFx0Zm9yIGkgaW4gJChzZXEgMSBcIiROVU1fVEVTVFNcIik7IGRvXG4rXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwIFxcXG4rXHRcdFx0XHRcImZyZXIgYWN0aW9uIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBrZXJuZWwgKHRlc3QgJGkpXCJcbitcdFx0ZG9uZVxuK1x0XHRrc2Z0X3ByaW50X2NudHNcbitcdFx0ZXhpdCBcIiRLU0ZUX1NLSVBcIlxuK1x0ZmlcbitcbitcdGtzZnRfc2V0X3BsYW4gXCIkTlVNX1RFU1RTXCJcbitcbitcdHRlc3RfcHVzaF92ZXJpZnlfYm9uZCAgICAgICAgIyBURVNUIDE6IHB1c2ggb24gYTAvYjAsIG5vIHJlY292ZXIsIFItVEFHIG9uIGJvdGggcGF0aHNcbitcdHRlc3Rfc2hhcmVkX3JlY292ZXJfYm9uZCAgICAgIyBURVNUIDI6IHNoYXJlZCByZWNvdmVyLCBkZWR1cCwgcGluZyBzdWNjZWVkc1xuK1x0dGVzdF9pbmRpdmlkdWFsX3JlY292ZXJfYm9uZCAjIFRFU1QgMzogaW5kaXZpZHVhbCByZWNvdmVyLCBubyBkZWR1cCwgZG91YmxlIGZyYW1lc1xuK1x0dGVzdF9ub190YWdfcG9wX2JvbmQgICAgICAgICAjIFRFU1QgNDogc2hhcmVkIHJlY292ZXIgd2l0aG91dCB0YWctcG9wLCBSLVRBRyBwcmVzZXJ2ZWRcbitcdHRlc3Rfc2ltcGxlX3BvaW50X3RvX3BvaW50ICAgIyBURVNUIDU6IHNpbmdsZS1wYXRoIHAycCwgbm8gYm9uZFxuK1x0dGVzdF9yZWxheV9lMmUgICAgICAgICAgICAgICAjIFRFU1QgNjogcmVsYXkgYnJpZGdlIHRvcG9sb2d5XG4rXG4rXHRrc2Z0X3ByaW50X2NudHNcbitcbitcdFsgXCIkX2tzZnRfZmFpbFwiIC1lcSAwIF0gXHUwMDI2XHUwMDI2IGtzZnRfZXhpdF9wYXNzIHx8IGtzZnRfZXhpdF9mYWlsXG4rfVxuK1xuK21haW4gXCIkQFwiXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9hY3Rpb25zL2ZyZXIuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9mcmVyLmpzb25cbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZDViZTZhZTE1NmY3OTRcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvYWN0aW9ucy9mcmVyLmpzb25cbkBAIC0wLDAgKzEsNzg1IEBAXG4rW1xuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDAxXCIsXG4rICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBmcmVyIHB1c2ggYWN0aW9uIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXJzXCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXVxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHB1c2ggdGFnLXR5cGUgcnRhZyBpbmRleCAxXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiXG4rICAgIF1cbisgIH0sXG4rICB7XG4rICAgIFwiaWRcIjogXCJmcmVyXzAwMDJcIixcbisgICAgXCJuYW1lXCI6IFwiQ3JlYXRlIGZyZXIgcHVzaCBhY3Rpb24gd2l0aCBleHBsaWNpdCB0YWctdHlwZSBydGFnXCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXVxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMlwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMlwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcHVzaCB0YWctdHlwZSBydGFnIGluZGV4IDJcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAwM1wiLFxuKyAgICBcIm5hbWVcIjogXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIGRlZmF1bHQgcGFyYW1ldGVyc1wiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF1cbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBpbmRleCAxMFwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxMCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIFswLTldKyByZXNldC10aW1lIFswLTldK1wiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDA0XCIsXG4rICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggdmVjdG9yIGFsZ29yaXRobSBleHBsaWNpdFwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF1cbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGluZGV4IDExXCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMVwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDExIGFsZyB2ZWN0b3JcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAwNVwiLFxuKyAgICBcIm5hbWVcIjogXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIG1hdGNoIGFsZ29yaXRobVwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF1cbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgbWF0Y2ggaW5kZXggMTJcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEyXCIsXG4rICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTIgYWxnIG1hdGNoXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiXG4rICAgIF1cbisgIH0sXG4rICB7XG4rICAgIFwiaWRcIjogXCJmcmVyXzAwMDZcIixcbisgICAgXCJuYW1lXCI6IFwiQ3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBoaXN0b3J5LWxlbmd0aCAxNlwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF1cbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IGluZGV4IDEzXCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxM1wiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEzIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTZcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAwN1wiLFxuKyAgICBcIm5hbWVcIjogXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHJlc2V0LXRpbWUgMjAwMFwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF1cbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIHJlc2V0LXRpbWUgMjAwMCBpbmRleCAxNFwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTRcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxNCBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIFswLTldKyByZXNldC10aW1lIDIwMDBcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAwOFwiLFxuKyAgICBcIm5hbWVcIjogXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHRhZy1wb3AgZmxhZ1wiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF1cbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciB0YWctcG9wIGluZGV4IDE1XCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxNVwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDE1Lip0YWctcG9wXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiXG4rICAgIF1cbisgIH0sXG4rICB7XG4rICAgIFwiaWRcIjogXCJmcmVyXzAwMDlcIixcbisgICAgXCJuYW1lXCI6IFwiQ3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gd2l0aCBpbmRpdmlkdWFsIGZsYWdcIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdXG4rICAgIF0sXG4rICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kaXZpZHVhbCBpbmRleCAxNlwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTZcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxNi4qaW5kaXZpZHVhbFwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDEwXCIsXG4rICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIHdpdGggdGFrZS1uby1zZXEgZmxhZ1wiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF1cbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciB0YWtlLW5vLXNlcSBpbmRleCAxN1wiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTdcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxNy4qdGFrZS1uby1zZXFcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAxMVwiLFxuKyAgICBcIm5hbWVcIjogXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIGFsbCBwYXJhbWV0ZXJzIGNvbWJpbmVkXCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXVxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwIHRhZy1wb3AgaW5kaXZpZHVhbCBpbmRleCAyMFwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMjBcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAyMCBpbmRpdmlkdWFsIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwIHRhZy1wb3BcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAxMlwiLFxuKyAgICBcIm5hbWVcIjogXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIG1hdGNoIGFsZyBhbmQgYWxsIGZsYWdzXCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXVxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyBtYXRjaCB0YWtlLW5vLXNlcSB0YWctcG9wIGluZGl2aWR1YWwgaW5kZXggMjFcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDIxXCIsXG4rICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMjEgaW5kaXZpZHVhbCBhbGcgbWF0Y2ggaGlzdG9yeS1sZW5ndGggWzAtOV0rIHJlc2V0LXRpbWUgWzAtOV0rIHRhZy1wb3AgdGFrZS1uby1zZXFcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAxM1wiLFxuKyAgICBcIm5hbWVcIjogXCJTaG93IGZyZXIgcHVzaCBhY3Rpb24gU2VxR2VuIHN0YXRpc3RpY3MgKHplcm8gYWZ0ZXIgY3JlYXRlKVwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF0sXG4rICAgICAgXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXCJcbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDFcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJTZXFHZW4gcGFja2V0czogMFwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDE0XCIsXG4rICAgIFwibmFtZVwiOiBcIlNob3cgZnJlciByZWNvdmVyIGFjdGlvbiBTdGF0aXN0aWNzIGxpbmUgKHplcm8gYWZ0ZXIgY3JlYXRlKVwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF0sXG4rICAgICAgXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDE2IHJlc2V0LXRpbWUgMTAwMCB0YWctcG9wIGluZGV4IDEwXCJcbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIC1zIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcIlN0YXRpc3RpY3M6IHBhc3NlZD0wIGRpc2NhcmRlZD0wIHRhZ2xlc3M9MCBvdXQtb2Ytb3JkZXI9MCByb2d1ZT0wIGxvc3Q9MCByZXNldHM9MFwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDE1XCIsXG4rICAgIFwibmFtZVwiOiBcIlNob3cgZnJlciByZWNvdmVyIGFjdGlvbiBTdGF0aXN0aWNzIGZpZWxkcyBwcmVzZW50XCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXSxcbisgICAgICBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDEwXCJcbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIC1zIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxMFwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcIlN0YXRpc3RpY3M6IHBhc3NlZD1bMC05XSsgZGlzY2FyZGVkPVswLTldKyB0YWdsZXNzPVswLTldKyBvdXQtb2Ytb3JkZXI9WzAtOV0rIHJvZ3VlPVswLTldKyBsb3N0PVswLTldKyByZXNldHM9WzAtOV0rXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiXG4rICAgIF1cbisgIH0sXG4rICB7XG4rICAgIFwiaWRcIjogXCJmcmVyXzAwMTZcIixcbisgICAgXCJuYW1lXCI6IFwiUmVwbGFjZSBmcmVyIHB1c2ggYWN0aW9uIChzYW1lIGluZGV4KVwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF0sXG4rICAgICAgXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcHVzaCBpbmRleCAxXCJcbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyByZXBsYWNlIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcHVzaCB0YWctdHlwZSBydGFnIGluZGV4IDFcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAxN1wiLFxuKyAgICBcIm5hbWVcIjogXCJSZXBsYWNlIGZyZXIgcmVjb3ZlciBhY3Rpb24gY2hhbmdpbmcgYWxnb3JpdGhtIGZyb20gdmVjdG9yIHRvIG1hdGNoXCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXSxcbisgICAgICBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaW5kZXggMTBcIlxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBhY3Rpb25zIHJlcGxhY2UgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgbWF0Y2ggaW5kZXggMTBcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCIsXG4rICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciByZWNvdmVyIHRhZy10eXBlIHJ0YWcgaW5kZXggMTAgYWxnIG1hdGNoXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiXG4rICAgIF1cbisgIH0sXG4rICB7XG4rICAgIFwiaWRcIjogXCJmcmVyXzAwMThcIixcbisgICAgXCJuYW1lXCI6IFwiRGVsZXRlIGZyZXIgcHVzaCBhY3Rpb24gYnkgaW5kZXhcIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdLFxuKyAgICAgIFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwiXG4rICAgIF0sXG4rICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGFjdGlvbnMgZGVsIGFjdGlvbiBmcmVyIGluZGV4IDFcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyXCIsXG4rICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwiZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIwXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDE5XCIsXG4rICAgIFwibmFtZVwiOiBcIkZsdXNoIGFsbCBmcmVyIGFjdGlvbnNcIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdLFxuKyAgICAgIFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwiLFxuKyAgICAgIFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggMTBcIixcbisgICAgICBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGluZGV4IDExXCJcbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXJcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjBcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlciAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDIwXCIsXG4rICAgIFwibmFtZVwiOiBcIkFkZCBkdXBsaWNhdGUgZnJlciBhY3Rpb24gaW5kZXggZmFpbHMgd2l0aG91dCByZXBsYWNlIGZsYWdcIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdLFxuKyAgICAgIFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwiXG4rICAgIF0sXG4rICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMjU1XCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAxXCIsXG4rICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwiYWN0aW9uIG9yZGVyIFswLTldKzogZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDIxXCIsXG4rICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBmcmVyIHB1c2ggYWN0aW9uIHdpdGggY29udGludWUgY29udHJvbCBhY3Rpb25cIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdXG4rICAgIF0sXG4rICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMSBjb250aW51ZVwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcHVzaCB0YWctdHlwZSBydGFnIGluZGV4IDEuKmNvbnRyb2wgY29udGludWVcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAyMlwiLFxuKyAgICBcIm5hbWVcIjogXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHBpcGUgY29udHJvbCBhY3Rpb25cIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdXG4rICAgIF0sXG4rICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggMTAgcGlwZVwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcIixcbisgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJhY3Rpb24gb3JkZXIgWzAtOV0rOiBmcmVyIHJlY292ZXIgdGFnLXR5cGUgcnRhZyBpbmRleCAxMC4qY29udHJvbCBwaXBlXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiXG4rICAgIF1cbisgIH0sXG4rICB7XG4rICAgIFwiaWRcIjogXCJmcmVyXzAwMjNcIixcbisgICAgXCJuYW1lXCI6IFwiQ3JlYXRlIGZyZXIgcmVjb3ZlciBhY3Rpb24gaGlzdG9yeS1sZW5ndGggbWluaW11bSBib3VuZGFyeSAoMSlcIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdXG4rICAgIF0sXG4rICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxIGluZGV4IDMwXCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAzMFwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDMwIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMVwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDI0XCIsXG4rICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBmcmVyIHJlY292ZXIgYWN0aW9uIGhpc3RvcnktbGVuZ3RoIG1heGltdW0gYm91bmRhcnkgKDMyKVwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF1cbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBhZGQgYWN0aW9uIGZyZXIgcmVjb3ZlciBhbGcgdmVjdG9yIGhpc3RvcnktbGVuZ3RoIDMyIGluZGV4IDMxXCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAzMVwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDMxIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMzJcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiMVwiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAyNVwiLFxuKyAgICBcIm5hbWVcIjogXCJDcmVhdGUgZnJlciByZWNvdmVyIGFjdGlvbiB3aXRoIHJlc2V0LXRpbWUgMCAodGltZXIgZGlzYWJsZWQpXCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXVxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgcmVzZXQtdGltZSAwIGluZGV4IDMyXCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlciBpbmRleCAzMlwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDMyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggWzAtOV0rIHJlc2V0LXRpbWUgMFwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDI2XCIsXG4rICAgIFwibmFtZVwiOiBcIkxpc3QgYWxsIGZyZXIgYWN0aW9ucyBzaG93cyBjb3JyZWN0IGNvdW50XCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXSxcbisgICAgICBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcIixcbisgICAgICBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaW5kZXggMTBcIixcbisgICAgICBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyBtYXRjaCB0YWctcG9wIGluZGV4IDExXCJcbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyXCIsXG4rICAgIFwiZXhwRXhpdENvZGVcIjogXCIwXCIsXG4rICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIGFjdGlvbnMgc2hvdyBhY3Rpb24gZnJlclwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImFjdGlvbiBvcmRlciBbMC05XSs6IGZyZXJcIixcbisgICAgXCJtYXRjaENvdW50XCI6IFwiM1wiLFxuKyAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAyN1wiLFxuKyAgICBcIm5hbWVcIjogXCJCaW5kIGZyZXIgcHVzaCBhY3Rpb24gdG8gZWdyZXNzIGNsc2FjdCBmaWx0ZXJcIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdLFxuKyAgICAgIFwiaXAgbGluayBkZWwgZnJlcl9kdW1teSAyXHUwMDNlL2Rldi9udWxsIHx8IHRydWVcIixcbisgICAgICBcImlwIGxpbmsgYWRkIGZyZXJfZHVtbXkgdHlwZSBkdW1teVwiLFxuKyAgICAgIFwiaXAgbGluayBzZXQgZnJlcl9kdW1teSB1cFwiLFxuKyAgICAgIFwiJFRDIHFkaXNjIGFkZCBkZXYgZnJlcl9kdW1teSBjbHNhY3RcIlxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBmaWx0ZXIgYWRkIGRldiBmcmVyX2R1bW15IGVncmVzcyBwcm90b2NvbCBpcCBmbG93ZXIgc2tpcF9odyBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgZmlsdGVyIHNob3cgZGV2IGZyZXJfZHVtbXkgZWdyZXNzXCIsXG4rICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwiZnJlciBwdXNoIHRhZy10eXBlIHJ0YWcgaW5kZXggMVwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgZnJlcl9kdW1teSBjbHNhY3RcIixcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCIsXG4rICAgICAgXCJpcCBsaW5rIGRlbCBmcmVyX2R1bW15XCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAyOFwiLFxuKyAgICBcIm5hbWVcIjogXCJCaW5kIGZyZXIgcmVjb3ZlciBhY3Rpb24gdG8gaW5ncmVzcyBjbHNhY3QgZmlsdGVyXCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXSxcbisgICAgICBcImlwIGxpbmsgZGVsIGZyZXJfZHVtbXkgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXCIsXG4rICAgICAgXCJpcCBsaW5rIGFkZCBmcmVyX2R1bW15IHR5cGUgZHVtbXlcIixcbisgICAgICBcImlwIGxpbmsgc2V0IGZyZXJfZHVtbXkgdXBcIixcbisgICAgICBcIiRUQyBxZGlzYyBhZGQgZGV2IGZyZXJfZHVtbXkgY2xzYWN0XCJcbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgZnJlcl9kdW1teSBpbmdyZXNzIHByb3RvY29sIGFsbCBmbG93ZXIgc2tpcF9odyBhY3Rpb24gZnJlciByZWNvdmVyIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwIHRhZy1wb3AgaW5kZXggMTBcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgZmlsdGVyIHNob3cgZGV2IGZyZXJfZHVtbXkgaW5ncmVzc1wiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcImZyZXIgcmVjb3ZlciB0YWctdHlwZSBydGFnIGluZGV4IDEwIGFsZyB2ZWN0b3IgaGlzdG9yeS1sZW5ndGggMTYgcmVzZXQtdGltZSAxMDAwXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiBmcmVyX2R1bW15IGNsc2FjdFwiLFxuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIixcbisgICAgICBcImlwIGxpbmsgZGVsIGZyZXJfZHVtbXlcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDI5XCIsXG4rICAgIFwibmFtZVwiOiBcIlNoYXJlIGZyZXIgcmVjb3ZlciBhY3Rpb24gYWNyb3NzIHR3byBpbmdyZXNzIGZpbHRlcnMgKHJlZmNvdW50IGNoZWNrKVwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF0sXG4rICAgICAgXCJpcCBsaW5rIGRlbCBmcmVyX2EgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXCIsXG4rICAgICAgXCJpcCBsaW5rIGRlbCBmcmVyX2IgMlx1MDAzZS9kZXYvbnVsbCB8fCB0cnVlXCIsXG4rICAgICAgXCJpcCBsaW5rIGFkZCBmcmVyX2EgdHlwZSBkdW1teVwiLFxuKyAgICAgIFwiaXAgbGluayBhZGQgZnJlcl9iIHR5cGUgZHVtbXlcIixcbisgICAgICBcImlwIGxpbmsgc2V0IGZyZXJfYSB1cFwiLFxuKyAgICAgIFwiaXAgbGluayBzZXQgZnJlcl9iIHVwXCIsXG4rICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiBmcmVyX2EgY2xzYWN0XCIsXG4rICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiBmcmVyX2IgY2xzYWN0XCIsXG4rICAgICAgXCIkVEMgZmlsdGVyIGFkZCBkZXYgZnJlcl9hIGluZ3Jlc3MgcHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHJlY292ZXIgYWxnIHZlY3RvciBoaXN0b3J5LWxlbmd0aCAxNiB0YWctcG9wIGluZGV4IDEwXCJcbisgICAgXSxcbisgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgZmlsdGVyIGFkZCBkZXYgZnJlcl9iIGluZ3Jlc3MgcHJvdG9jb2wgYWxsIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggMTBcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgLXMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCIsXG4rICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwicmVmIFsyLTldWzAtOV0qXCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiBmcmVyX2EgY2xzYWN0XCIsXG4rICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiBmcmVyX2IgY2xzYWN0XCIsXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiLFxuKyAgICAgIFwiaXAgbGluayBkZWwgZnJlcl9hXCIsXG4rICAgICAgXCJpcCBsaW5rIGRlbCBmcmVyX2JcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDMwXCIsXG4rICAgIFwibmFtZVwiOiBcImZyZXIgcHVzaCBhY3Rpb24gcmVmY291bnQgaW5jcmVtZW50cyB3aGVuIGJvdW5kIHRvIGZpbHRlclwiLFxuKyAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICBcImFjdGlvbnNcIixcbisgICAgICBcImZyZXJcIlxuKyAgICBdLFxuKyAgICBcInNldHVwXCI6IFtcbisgICAgICBbXG4rICAgICAgICBcIm1vZHByb2JlIGFjdF9mcmVyXCIsXG4rICAgICAgICAwLFxuKyAgICAgICAgMVxuKyAgICAgIF0sXG4rICAgICAgXCJpcCBsaW5rIGRlbCBmcmVyX2R1bW15IDJcdTAwM2UvZGV2L251bGwgfHwgdHJ1ZVwiLFxuKyAgICAgIFwiaXAgbGluayBhZGQgZnJlcl9kdW1teSB0eXBlIGR1bW15XCIsXG4rICAgICAgXCJpcCBsaW5rIHNldCBmcmVyX2R1bW15IHVwXCIsXG4rICAgICAgXCIkVEMgcWRpc2MgYWRkIGRldiBmcmVyX2R1bW15IGNsc2FjdFwiLFxuKyAgICAgIFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwiXG4rICAgIF0sXG4rICAgIFwiY21kVW5kZXJUZXN0XCI6IFwiJFRDIGZpbHRlciBhZGQgZGV2IGZyZXJfZHVtbXkgZWdyZXNzIHByb3RvY29sIGlwIGZsb3dlciBza2lwX2h3IGFjdGlvbiBmcmVyIHB1c2ggaW5kZXggMVwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyAtcyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcInJlZiBbMi05XVswLTldKlwiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgZnJlcl9kdW1teSBjbHNhY3RcIixcbisgICAgICBcIiRUQyBhY3Rpb25zIGZsdXNoIGFjdGlvbiBmcmVyXCIsXG4rICAgICAgXCJpcCBsaW5rIGRlbCBmcmVyX2R1bW15XCJcbisgICAgXVxuKyAgfSxcbisgIHtcbisgICAgXCJpZFwiOiBcImZyZXJfMDAzMVwiLFxuKyAgICBcIm5hbWVcIjogXCJmcmVyIHB1c2ggb3V0cHV0IHNob3dzIG5vdF9pbl9odyBmbGFnXCIsXG4rICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgIFwiYWN0aW9uc1wiLFxuKyAgICAgIFwiZnJlclwiXG4rICAgIF0sXG4rICAgIFwic2V0dXBcIjogW1xuKyAgICAgIFtcbisgICAgICAgIFwibW9kcHJvYmUgYWN0X2ZyZXJcIixcbisgICAgICAgIDAsXG4rICAgICAgICAxXG4rICAgICAgXSxcbisgICAgICBcIiRUQyBhY3Rpb25zIGFkZCBhY3Rpb24gZnJlciBwdXNoIGluZGV4IDFcIlxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVwiLFxuKyAgICBcImV4cEV4aXRDb2RlXCI6IFwiMFwiLFxuKyAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMVwiLFxuKyAgICBcIm1hdGNoUGF0dGVyblwiOiBcIm5vdF9pbl9od1wiLFxuKyAgICBcIm1hdGNoQ291bnRcIjogXCIxXCIsXG4rICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgIFwiJFRDIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGZyZXJcIlxuKyAgICBdXG4rICB9LFxuKyAge1xuKyAgICBcImlkXCI6IFwiZnJlcl8wMDMyXCIsXG4rICAgIFwibmFtZVwiOiBcImZyZXIgcmVjb3ZlciBvdXRwdXQgc2hvd3Mgbm90X2luX2h3IGZsYWdcIixcbisgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgXCJhY3Rpb25zXCIsXG4rICAgICAgXCJmcmVyXCJcbisgICAgXSxcbisgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgW1xuKyAgICAgICAgXCJtb2Rwcm9iZSBhY3RfZnJlclwiLFxuKyAgICAgICAgMCxcbisgICAgICAgIDFcbisgICAgICBdLFxuKyAgICAgIFwiJFRDIGFjdGlvbnMgYWRkIGFjdGlvbiBmcmVyIHJlY292ZXIgaW5kZXggMTBcIlxuKyAgICBdLFxuKyAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBhY3Rpb25zIHNob3cgYWN0aW9uIGZyZXIgaW5kZXggMTBcIixcbisgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgXCJ2ZXJpZnlDbWRcIjogXCIkVEMgYWN0aW9ucyBzaG93IGFjdGlvbiBmcmVyIGluZGV4IDEwXCIsXG4rICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwibm90X2luX2h3XCIsXG4rICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgXCIkVEMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZnJlclwiXG4rICAgIF1cbisgIH1cbitdXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwOTo0MDo1Ny44MzIyODc2NDZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA3NTIzMDUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZSRVIgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBgdGNgIGFjdGlvbiBjYWxsZWQgYGZyZXJgLCBpbXBsZW1lbnRpbmcgdGhlIElFRUUgODAyLjFDQiBGcmFtZSBSZXBsaWNhdGlvbiBhbmQgRWxpbWluYXRpb24gZm9yIFJlbGlhYmlsaXR5IChGUkVSKSBmdW5jdGlvbmFsaXR5LiAgTXkgZmlyc3QgdGhvdWdodCBpcywgXCJUaGlzIGlzIGEgc3Vic3RhbnRpYWwgZnVuY3Rpb25hbCBjaGFuZ2U7IGl0J3MgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiIEkgbWVhbiwgaXQgdG91Y2hlcyBhIGdvb2QgbnVtYmVyIG9mIGZpbGVzOiAgYSBmZXcgaW5jbHVkZSBoZWFkZXJzLCBzb21lIEtjb25maWcvTWFrZWZpbGUgdXBkYXRlcywgdGhlIGNvcmUgYWN0aW9uIGltcGxlbWVudGF0aW9uIGluIGBhY3RfZnJlci5jYCwgYW5kIGV2ZW4gc29tZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLiBUaGF0J3MgYSBjbGVhciBzaWduYWwgdGhhdCB3ZSd2ZSBnb3Qgc29tZSBuZXcsIHBvdGVudGlhbGx5IGNvbXBsZXgsIGNvZGUgdGhhdCBuZWVkcyB0aG9yb3VnaCB2YWxpZGF0aW9uLlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gdGhlIGZ1enppbmcgdGFyZ2V0cy4gVGhlIGhlYXJ0IG9mIHRoZSBuZXcgYWN0aW9uIGlzIGluIGBuZXQvc2NoZWQvYWN0X2ZyZXIuY2AuICBJJ3ZlIHJldmlld2VkIHRoZSBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZSwgYW5kIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0byBzdWJqZWN0IHRvIGZ1enppbmcuIEFmdGVyIHJldmlldywgSSB3b3VsZCBmb2N1cyBvbjpcblxuKiAgIGB0Y2ZfZnJlcl9pbml0YDogVGhpcyBpcyBjcml0aWNhbCBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFjdGlvbi5cbiogICBgdGNmX2ZyZXJfYWN0YDogVGhpcyBpcyB0aGUgYWN0aW9uJ3MgY29yZSBleGVjdXRpb24gcGF0aCwgcHJvY2Vzc2luZyBwYWNrZXRzLlxuKiAgIGB0Y2ZfZnJlcl9kdW1wYDogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBkdW1waW5nIG9mIHRoZSBhY3Rpb24ncyBzdGF0ZSwgdml0YWwgZm9yIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMuXG4qICAgYHRjZl9mcmVyX2NsZWFudXBgOiBUaGlzIGhhbmRsZXMgdGhlIGZyZWVpbmcgYW5kIGFueSBuZWNlc3NhcnkgY2xlYW51cC5cbiogICBgZnJlcl9ydGFnX3B1c2hgOiBQYWNrZXQgbWFuaXB1bGF0aW9uLCBwdXNoaW5nIHRoZSBSLVRBRyAoUmVwbGljYXRpb24gVGFnKS5cbiogICBgZnJlcl9ydGFnX3BvcGA6IFBhY2tldCBtYW5pcHVsYXRpb24sIHBvcHBpbmcgdGhlIFItVEFHLlxuKiAgIGBmcmVyX3J0YWdfZGVjb2RlYDogUi1UQUcgZGVjb2RpbmcsIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwYWNrZXQgZGF0YS5cbiogICBgZnJlcl92ZWN0b3JfYWxnYDogUi1UQUcgdmVjdG9yIGNvbXBhcmlzb24uXG4qICAgYGZyZXJfbWF0Y2hfYWxnYDogUi1UQUcgbWF0Y2ggYWxnb3JpdGhtLCBwYWNrZXQgbWF0Y2guXG5cbkknbGwgbmVlZCB0byByZW1lbWJlciB0aG9zZSB0byBjb25maWd1cmUgdGhlIGZ1enppbmcgZWZmb3J0cyBjb3JyZWN0bHkuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBjaGFuZ2VzIGJlY2F1c2UgdGhpcyB3aWxsIGluZmx1ZW5jZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gIEkgY2FuIHNlZSB0aGF0IGBORVRfQUNUX0ZSRVJgIGhhcyBiZWVuIGFkZGVkLCBhbmQgaXQgZGVwZW5kcyBvbiBgTkVUX0NMU19BQ1RgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgaGFzIGBORVRfQUNUX0ZSRVJgIGVuYWJsZWQuXG5cblNvLCBJIHRoaW5rIEknbSBnb2luZyB0byBydW4gdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBub3cuICBJJ2xsIHNldCB0aGUgZm9sbG93aW5nOlxuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgTkVUX0FDVF9GUkVSYFxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgdGNmX2ZyZXJfaW5pdGAsIGB0Y2ZfZnJlcl9hY3RgLCBgdGNmX2ZyZXJfZHVtcGAsIGB0Y2ZfZnJlcl9jbGVhbnVwYCwgYGZyZXJfcnRhZ19wdXNoYCwgYGZyZXJfcnRhZ19wb3BgLCBgZnJlcl9ydGFnX2RlY29kZWAsIGBmcmVyX3ZlY3Rvcl9hbGdgLCBgZnJlcl9tYXRjaF9hbGdgXG4qICAgYFdvcnRoRnV6emluZ2A6IGB0cnVlYFxuKiAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGBhY3RfZnJlcmAgZm9yIElFRUUgODAyLjFDQiBGUkVSLCB3aGljaCBpbmNsdWRlcyBwYWNrZXQgbWFuaXB1bGF0aW9uIChwdXNoL3BvcCBvZiBSLVRBRykgYW5kIHNlcXVlbmNlIHJlY292ZXJ5IGFsZ29yaXRobXMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGZ1enogdGhlIFItVGFnIGxvZ2ljLiAgT2ggYW5kLCBzaG91bGQgSSBhZGQgYW55IG1vcmUgZnVuY3Rpb24gY2FsbHM/IFdhaXQsIHllcyEgYGZyZXJfcmN2eV9ocnRpbWVyX2ZuYCBhbmQgYGZyZXJfcmN2eV9yZXNldF93b3JrX2ZuYCwgdGhleSBhcmUgcGFydCBvZiB0aGUgY29yZSBsb2dpYy4gSG93ZXZlciwgSSB3YW50IHRvIGtlZXAgdGhlIGxpc3QgY29uY2lzZS5cblxuQW5kIHRoYXQgc2hvdWxkIGRvIGl0LiAgTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTc0OSwiT3V0cHV0VG9rZW5zIjoyMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwOTo0MToxMS45MDc1MjE3NDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njg2MDExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0FDVF9GUkVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2ZyZXJfaW5pdFwiLFxuICAgIFwidGNmX2ZyZXJfYWN0XCIsXG4gICAgXCJ0Y2ZfZnJlcl9kdW1wXCIsXG4gICAgXCJ0Y2ZfZnJlcl9jbGVhbnVwXCIsXG4gICAgXCJmcmVyX3J0YWdfcHVzaFwiLFxuICAgIFwiZnJlcl9ydGFnX3BvcFwiLFxuICAgIFwiZnJlcl9ydGFnX2RlY29kZVwiLFxuICAgIFwiZnJlcl92ZWN0b3JfYWxnXCIsXG4gICAgXCJmcmVyX21hdGNoX2FsZ1wiLFxuICAgIFwiZnJlcl9yY3Z5X2hydGltZXJfZm5cIixcbiAgICBcImZyZXJfcmN2eV9yZXNldF93b3JrX2ZuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIGBhY3RfZnJlcmAgZm9yIElFRUUgODAyLjFDQiBGUkVSLiBJdCBpbmNsdWRlcyBwYWNrZXQgbWFuaXB1bGF0aW9uIChwdXNoL3BvcCBvZiBSLVRBRykgYW5kIHNlcXVlbmNlIHJlY292ZXJ5IGFsZ29yaXRobXMuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9BQ1RfRlJFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9mcmVyX2luaXRcIixcbiAgICBcInRjZl9mcmVyX2FjdFwiLFxuICAgIFwidGNmX2ZyZXJfZHVtcFwiLFxuICAgIFwidGNmX2ZyZXJfY2xlYW51cFwiLFxuICAgIFwiZnJlcl9ydGFnX3B1c2hcIixcbiAgICBcImZyZXJfcnRhZ19wb3BcIixcbiAgICBcImZyZXJfcnRhZ19kZWNvZGVcIixcbiAgICBcImZyZXJfdmVjdG9yX2FsZ1wiLFxuICAgIFwiZnJlcl9tYXRjaF9hbGdcIixcbiAgICBcImZyZXJfcmN2eV9ocnRpbWVyX2ZuXCIsXG4gICAgXCJmcmVyX3JjdnlfcmVzZXRfd29ya19mblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdHJhZmZpYyBjb250cm9sIGFjdGlvbiBgYWN0X2ZyZXJgIGZvciBJRUVFIDgwMi4xQ0IgRlJFUi4gSXQgaW5jbHVkZXMgcGFja2V0IG1hbmlwdWxhdGlvbiAocHVzaC9wb3Agb2YgUi1UQUcpIGFuZCBzZXF1ZW5jZSByZWNvdmVyeSBhbGdvcml0aG1zLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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:nil,}