Name: series-workflowvp6n7 Phase: Succeeded StartedAt: 2026-07-27 07:04:46 +0000 UTC FinishedAt: 2026-07-27 12:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[0] Phase: Succeeded StartedAt: 2026-07-27 07:04:46 +0000 UTC FinishedAt: 2026-07-27 07:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 07:04:46 +0000 UTC FinishedAt: 2026-07-27 07:26:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1e15fbef3a3c465a6a2db0f38e3980d75420bd6d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_VADDR", "DAMON_PADDR", "DAMON_SYSFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1e15fbef3a3c465a6a2db0f38e3980d75420bd6d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_VADDR", "DAMON_PADDR", "DAMON_SYSFS" ], "series_id": "f8613bbb-b282-4798-8947-1dfd5fd36381" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_migrate_pages", "damon_start" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fbWlncmF0ZV9wYWdlcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEQU1PTiYjMzk7cyBmb2xpbyBtaWdyYXRpb24gbG9naWMgaW4gYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBwcm9wZXJseSBhY2NvdW50IGZvciBpc29sYXRlZCBmb2xpb3MgYnkgY2FsbGluZyBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIGZyYW1ld29yay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYwNzg1YWJmYmVmODUzMjVjYTYwMTNlN2NiODNhZGRiNGVjMWQ1NDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzoyNDowMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9vcHMtY29tbW9uLmMgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcbmluZGV4IGU1OWY3N2VjYTgzYjJiLi45ODA5ZmExMmIwOWE4MCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL29wcy1jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXG5AQCAtMzc0LDYgJiM0MzszNzQsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxuIFx0d2hpbGUgKCFsaXN0X2VtcHR5KGZvbGlvX2xpc3QpKSB7XG4gXHRcdGZvbGlvID0gbHJ1X3RvX2ZvbGlvKGZvbGlvX2xpc3QpO1xuIFx0XHRsaXN0X2RlbChcdTAwMjZmb2xpby1cdTAwM2VscnUpO1xuJiM0MztcdFx0bm9kZV9zdGF0X3N1Yl9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiAmIzQzO1xuJiM0MztcdFx0XHRcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XG4gXHRcdGZvbGlvX3B1dGJhY2tfbHJ1KGZvbGlvKTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9wYWRkci5jIGIvbW0vZGFtb24vcGFkZHIuY1xuaW5kZXggNWE2YTc4MDU0Nzg0YWYuLjVjNmMzYTU5N2ZkMGJmIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vcGFkZHIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vcGFkZHIuY1xuQEAgLTM0Niw2ICYjNDM7MzQ2LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFxuIFx0XHRpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSlcbiBcdFx0XHRnb3RvIHB1dF9mb2xpbztcbiYjNDM7XHRcdG5vZGVfc3RhdF9hZGRfZm9saW8oZm9saW8sIE5SX0lTT0xBVEVEX0FOT04gJiM0MztcbiYjNDM7XHRcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0XHRsaXN0X2FkZChcdTAwMjZmb2xpby1cdTAwM2VscnUsIFx1MDAyNmZvbGlvX2xpc3QpO1xuIHB1dF9mb2xpbzpcbiBcdFx0YWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmNcbmluZGV4IDQ5NzY3NzVmZTI3NjJhLi4wNjQ4NDAwYjJkNjViNCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3ZhZGRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmNcbkBAIC02MjcsNyAmIzQzOzYyNyw4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4gaXNvbGF0ZTpcbiBcdGlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKVxuIFx0XHRyZXR1cm47XG4tXG4mIzQzO1x0bm9kZV9zdGF0X2FkZF9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiAmIzQzO1xuJiM0MztcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0bGlzdF9hZGQoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZtaWdyYXRpb25fbGlzdHNbaV0pO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9taWdyYXRlX3BhZ2VzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OJiMzOTtzIGZvbGlvIG1pZ3JhdGlvbiBsb2dpYyBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgIHRvIHByb3Blcmx5IGFjY291bnQgZm9yIGlzb2xhdGVkIGZvbGlvcyBieSBjYWxsaW5nIGBub2RlX3N0YXRfYWRkX2ZvbGlvYCBhbmQgYG5vZGVfc3RhdF9zdWJfZm9saW9gLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgdGhlIERhdGEgQWNjZXNzIE1vbml0b3JpbmcgZnJhbWV3b3JrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjA3ODVhYmZiZWY4NTMyNWNhNjAxM2U3Y2I4M2FkZGI0ZWMxZDU0OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDA3OjI0OjAzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jCmluZGV4IGU1OWY3N2VjYTgzYjJiLi45ODA5ZmExMmIwOWE4MCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL29wcy1jb21tb24uYwpAQCAtMzc0LDYgJiM0MzszNzQsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LAogCXdoaWxlICghbGlzdF9lbXB0eShmb2xpb19saXN0KSkgewogCQlmb2xpbyA9IGxydV90b19mb2xpbyhmb2xpb19saXN0KTsKIAkJbGlzdF9kZWwoJmFtcDtmb2xpby0mZ3Q7bHJ1KTsKJiM0MzsJCW5vZGVfc3RhdF9zdWJfZm9saW8oZm9saW8sIE5SX0lTT0xBVEVEX0FOT04gJiM0MzsKJiM0MzsJCQkJZm9saW9faXNfZmlsZV9scnUoZm9saW8pKTsKIAkJZm9saW9fcHV0YmFja19scnUoZm9saW8pOwogCX0KIApkaWZmIC0tZ2l0IGEvbW0vZGFtb24vcGFkZHIuYyBiL21tL2RhbW9uL3BhZGRyLmMKaW5kZXggNWE2YTc4MDU0Nzg0YWYuLjVjNmMzYTU5N2ZkMGJmIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9wYWRkci5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3BhZGRyLmMKQEAgLTM0Niw2ICYjNDM7MzQ2LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCiAJCWlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKQogCQkJZ290byBwdXRfZm9saW87CiYjNDM7CQlub2RlX3N0YXRfYWRkX2ZvbGlvKGZvbGlvLCBOUl9JU09MQVRFRF9BTk9OICYjNDM7CiYjNDM7CQkJCWZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7CiAJCWxpc3RfYWRkKCZhbXA7Zm9saW8tJmd0O2xydSwgJmFtcDtmb2xpb19saXN0KTsKIHB1dF9mb2xpbzoKIAkJYWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7CmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuYwppbmRleCA0OTc2Nzc1ZmUyNzYyYS4uMDY0ODQwMGIyZDY1YjQgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3ZhZGRyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vdmFkZHIuYwpAQCAtNjI3LDcgJiM0Mzs2MjcsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChzdHJ1Y3QgZm9saW8gKmZvbGlvLAogaXNvbGF0ZToKIAlpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSkKIAkJcmV0dXJuOwotCiYjNDM7CW5vZGVfc3RhdF9hZGRfZm9saW8oZm9saW8sIE5SX0lTT0xBVEVEX0FOT04gJiM0MzsKJiM0MzsJCQlmb2xpb19pc19maWxlX2xydShmb2xpbykpOwogCWxpc3RfYWRkKCZhbXA7Zm9saW8tJmd0O2xydSwgJmFtcDttaWdyYXRpb25fbGlzdHNbaV0pOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODAKCQkJCQkJCW91dHB1dDogMTAwCgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQU1PTiBQYXRjaCBmb3IgRm9saW8gSXNvbGF0aW9uIFN0YXRpc3RpY3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgREFNT04gcGF0Y2gsIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgYSBmZXcga2V5IGZpbGVzOiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFkZGluZyBjYWxscyB0byBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYCB3aGVuIHdlJiMzOTtyZSBpc29sYXRpbmcgYW5kIHB1dHRpbmcgYmFjayBmb2xpb3MgZHVyaW5nIG1pZ3JhdGlvbiB3aXRoaW4gREFNT04uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3RpbmcgREFNT04gY29uZmlndXJhdGlvbi4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHdoaWNoIGNvbmZpZyBvcHRpb25zIGdvdmVybiB0aGVzZSBmaWxlcywgYW5kIGhvdyB0aGVzZSBjaGFuZ2VzIGludGVyYWN0IHdpdGggdGhvc2Ugb3B0aW9ucy4gSSBrbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHNldCBmb3IgYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBtbS9kYW1vbi92YWRkci5jYC4gVGhpcyBpcyB3aGVyZSBgZ3JlcHBlcmAgaXMgZ29pbmcgdG8gYmUgbXkgYmVzdCBmcmllbmQuIEkmIzM5O2xsIGZpcmUgaXQgdXAgYW5kIHVzZSBpdCB0byBwcmVjaXNlbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb24vb3BzLWNvbW1vbi5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb24vcGFkZHIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uL3ZhZGRyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlF1aWNrIE1ha2VmaWxlIENoZWNrKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBsZXQgbWUganVzdCBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYG1tL2RhbW9uL01ha2VmaWxlYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNldCB1cCBhcyBJIGV4cGVjdCBmb3IgYW55IGZ1cnRoZXIgZXhwbG9yYXRpb24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBpbmNsdXNpb24gb2YgYW55IHNwZWNpZmljIGNvbXBpbGVyIGZsYWdzLCBvYmplY3QgZmlsZXMsIG9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGRpcmVjdG9yeS4gVGhpcyBicmllZiBjaGVjayB3aWxsIGdpdmUgbWUgYSBnb29kICYjMzQ7bGF5IG9mIHRoZSBsYW5kJiMzNDsgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIHRoZSBtb3JlIGNvbXBsZXggZnVuY3Rpb25hbGl0aWVzIG9mIERhbW9uIG9yIGFueSBhc3NvY2lhdGVkIG1vZHVsZXMuIEl0JiMzOTtzIG1vc3RseSBhIG1lbnRhbCBub3RlIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGEgcXVpY2sgcmVmcmVzaGVyLCBiZWZvcmUgSSBjb250aW51ZSBleHBsb3JpbmcgdGhhdCBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0b2JqLXlcdFx0XHRcdDo9IGNvcmUub1xuICAgNDpcdG9iai0kKENPTkZJR19EQU1PTl9WQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gdmFkZHIub1xuICAgNTpcdG9iai0kKENPTkZJR19EQU1PTl9QQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gcGFkZHIub1xuICAgNjpcdG9iai0kKENPTkZJR19EQU1PTl9TWVNGUylcdCYjNDM7PSBzeXNmcy1jb21tb24ubyBzeXNmcy1zY2hlbWVzLm8gc3lzZnMub1xuICAgNzpcdG9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXG4gICA4Olx0b2JqLSQoQ09ORklHX0RBTU9OX0xSVV9TT1JUKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gbHJ1X3NvcnQub1xuICAgOTpcdG9iai0kKENPTkZJR19EQU1PTl9TVEFUKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gc3RhdC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1NwoJCQkJCQkJb3V0cHV0OiA2NgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIERBTU9OJiMzOTtzIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBEQU1PTiBpcyBjb25maWd1cmVkLiBJIGtub3cgdGhhdCBgQ09ORklHX0RBTU9OX1ZBRERSYCBhbmQgYENPTkZJR19EQU1PTl9QQUREUmAgYXJlIHRoZSBrZXkgc2V0dGluZ3MgSSBzaG91bGQgYmUgbG9va2luZyBhdC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGhlYWQgb3ZlciB0byBgbW0vZGFtb24vS2NvbmZpZ2AgdG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXNlIGNvbmZpZ3MgbWlnaHQgaGF2ZS4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgYmlnZ2VyIHBpY3R1cmUgb2Ygd2hhdCBvcHRpb25zIEkgbmVlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBpbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpZiBJIHdhbnQgdG8gcGxheSBhcm91bmQgd2l0aCBEQU1PTiYjMzk7cyB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIG1vbml0b3JpbmcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBhbnl0aGluZyBlbHNlIGluIHRoZSBrZXJuZWwgaXMgaW1wYWN0ZWQgYnkgdGhvc2UgY2hvaWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1ZBRERSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTI2PWNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXG4tLVxubW0vZGFtb24vS2NvbmZpZy0zNy1cbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1BBRERSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM4PWNvbmZpZyBEQU1PTl9WQUREUlxuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTkyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGl2aW5nIGludG8gS2NvbmZpZzogbW0vZGFtb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgbW0vZGFtb24vS2NvbmZpZ2AgZmlsZS4gSSBzcGVjaWZpY2FsbHkgbmVlZCB0byBjaGVjayBvdXQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXJvdW5kIGxpbmVzIDM4IGFuZCA0Ny4gTXkgc3BpZGVyIHNlbnNlcyBhcmUgdGluZ2xpbmcsIGFuZCBJIGhhdmUgYSBmZWVsaW5nIHRob3NlIGxpbmVzIGhvbGQgdGhlIGtleSB0byBzb21ldGhpbmcgaW1wb3J0YW50IOKAkyBtYXliZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3ksIG9yIGEgZmxhZyB0aGF04oCZcyBjYXVzaW5nIG1lIGEgaGVhZGFjaGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgbWFnaWMgaXMgaG9sZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cbiAgMzI6XHRcbiAgMzM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDM0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICAzNTpcdFxuICAzNjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBEQU1PTl9WQUREUlxuICAzOTpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA0MTpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDQyOlx0XHRkZWZhdWx0IERBTU9OXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNDU6XHRcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBEQU1PTl9QQUREUlxuICA0ODpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNTA6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA1MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDU0Olx0XHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4gIDU3Olx0XHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA1OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIERBTU9OIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gaXQgbG9va3MgbGlrZSBJJiMzOTttIGRlYWxpbmcgd2l0aCBgREFNT05gLCBgREFNT05fVkFERFJgLCBhbmQgYERBTU9OX1BBRERSYCBhcyB0aGUgY29yZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgREFNT05gIGNvbmZpZ3VyYXRpb24gaXRzZWxmLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuIFNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgbW9yZSBzcGVjaWZpYyBhZGRyZXNzIGRldGFpbHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGBEQU1PTmAgY29uZmlnIHRlbGxzIHVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXCYjMzQ7RGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1wmIzM0O1xubW0vZGFtb24vS2NvbmZpZy00LVxubW0vZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBEQU1PTlxubW0vZGFtb24vS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTE0LVxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMjUtXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTI3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy0zNy1cbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctNDgtXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxubW0vZGFtb24vS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTA3LVxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcbm1tL2RhbW9uL0tjb25maWctMTA5LVx0Ym9vbCBcJiMzNDtCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMTUtXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcbm1tL2RhbW9uL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MTIKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERBTU9OIE1pZ3JhdGlvbiBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBoaXR0aW5nIGEgZmV3IGtleSBmdW5jdGlvbnMgaW4gdGhlIERBTU9OIG1pZ3JhdGlvbiBjb2RlOiBgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0YCBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYGRhbW9uX3BhX21pZ3JhdGVgIGluIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAgaW4gYG1tL2RhbW9uL3ZhZGRyLmNgLiBNeSBpbml0aWFsIGNoZWNrIGNvbmZpcm1zIHRoZXNlIGFyZSBkZWZpbml0ZWx5IGFjdGl2ZSBjb21wb25lbnRzOyBubyBkZWFkIGNvZGUgaGVyZS4gVGhlIHBhdGNoIG11c3QgYmUgZGVzaWduZWQgdG8gaW1wYWN0IHRoZXNlIHNwZWNpZmljIHJvdXRpbmVzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgY29yZSBzeW1ib2xzIHRoZSBwYXRjaCBpcyB0YXJnZXRpbmcgd2l0aGluIHRob3NlIGFyZWFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlaW5nIGFsdGVyZWQgYW5kIHdoeSwgdG8gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmluZCB0aG9zZSBmb2N1cyBzeW1ib2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9vcHMtY29tbW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vb3BzLWNvbW1vbi5jPTI2MT1ib29sIGRhbW9zX2ZvbGlvX2ZpbHRlcl9tYXRjaChzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmaWx0ZXIsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMwMi1cbm1tL2RhbW9uL29wcy1jb21tb24uYzozMDM6c3RhdGljIHVuc2lnbmVkIGludCBfX2RhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChcbm1tL2RhbW9uL29wcy1jb21tb24uYy0zMDQtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKm1pZ3JhdGVfZm9saW9zLCBzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0zMzItXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MzMzOnN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzM0LVx0XHRcdFx0XHRcdHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTM2MC1cdC8qIE1pZ3JhdGUgZm9saW9zIHNlbGVjdGVkIGZvciBtaWdyYXRpb24gKi9cbm1tL2RhbW9uL29wcy1jb21tb24uYzozNjE6XHRucl9taWdyYXRlZCAmIzQzOz0gX19kYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3QoXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzYyLVx0XHRcdFx1MDAyNm1pZ3JhdGVfZm9saW9zLCBwZ2RhdCwgdGFyZ2V0X25pZCk7XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTM4NT11bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQwOS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo0MTA6XHRcdG5yX21pZ3JhdGVkICYjNDM7PSBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3QoXHUwMDI2bm9kZV9mb2xpb19saXN0LFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQxMS1cdFx0XHRcdFx0XHRcdCAgIE5PREVfREFUQShuaWQpLFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy00MTUtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NDE2Olx0bnJfbWlncmF0ZWQgJiM0Mzs9IGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChcdTAwMjZub2RlX2ZvbGlvX2xpc3QsXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDE3LVx0XHRcdFx0XHRcdCAgIE5PREVfREFUQShuaWQpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9wYV9taWdyYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vcGFkZHIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9wYWRkci5jPTMxOT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZWFjdGl2YXRlX3BhZ2VzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vcGFkZHIuYy0zMjUtXG5tbS9kYW1vbi9wYWRkci5jOjMyNjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9taWdyYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9wYWRkci5jLTMyNy1cdFx0dW5zaWduZWQgbG9uZyBhZGRyX3VuaXQsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi9wYWRkci5jPTM4OT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuLS1cbm1tL2RhbW9uL3BhZGRyLmMtNDA1LVx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XG5tbS9kYW1vbi9wYWRkci5jOjQwNjpcdFx0cmV0dXJuIGRhbW9uX3BhX21pZ3JhdGUociwgYXVuaXQsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG5tbS9kYW1vbi9wYWRkci5jLTQwNy1cdGNhc2UgREFNT1NfU1RBVDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi92YWRkci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmM9NTc0PXN0cnVjdCBkYW1vc192YV9taWdyYXRlX3ByaXZhdGUge1xuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNTg0LSAqL1xubW0vZGFtb24vdmFkZHIuYzo1ODU6c3RhdGljIHZvaWQgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoc3RydWN0IGZvbGlvICpmb2xpbyxcbm1tL2RhbW9uL3ZhZGRyLmMtNTg2LVx0XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9NjM1PXN0YXRpYyBpbnQgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNjU4LVx0XHRcdGdvdG8gaHVnZV9vdXQ7XG5tbS9kYW1vbi92YWRkci5jOjY1OTpcdFx0ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcbm1tL2RhbW9uL3ZhZGRyLmMtNjYwLVx0XHRcdFx0bWlncmF0aW9uX2xpc3RzKTtcbi0tXG5tbS9kYW1vbi92YWRkci5jLTY4MS1cdFx0XHRjb250aW51ZTtcbm1tL2RhbW9uL3ZhZGRyLmM6NjgyOlx0XHRkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChmb2xpbywgd2Fsay1cdTAwM2V2bWEsIGFkZHIsIGRlc3RzLFxubW0vZGFtb24vdmFkZHIuYy02ODMtXHRcdFx0XHRtaWdyYXRpb25fbGlzdHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTYzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEVudHJ5IFBvaW50cyBmb3IgTWlncmF0aW9uIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgdGhyZWUgbWlncmF0aW9uIGZ1bmN0aW9uczogYGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdGAsIGBkYW1vbl9wYV9taWdyYXRlYCwgYW5kIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAuIFRoZSBjb2RlIGNsZWFybHkgbWFya3MgdGhlbSBhcyBgc3RhdGljYCwgd2hpY2ggbWVhbnMgdGhleSYjMzk7cmUgbm90IGRpcmVjdGx5IGV4cG9zZWQgYXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSAqYXJlKiB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGVzZSBmdW5jdGlvbnM/JiMzNDsgV2UgbmVlZCB0byB0cmFjZSB0aGVpciBjYWxsIGNoYWlucy4KCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIGBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3RgIGlzIGNhbGxlZCBieSBgZGFtb25fbWlncmF0ZV9wYWdlc2AuIEVhc3kgZW5vdWdoLiBUaGVuLCBgZGFtb25fcGFfbWlncmF0ZWAgaXMgY2FsbGVkIGJ5IGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgLiBHb3QgaXQuIE5vdywgZm9yIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAsIGl0JiMzOTtzIGNhbGxlZCBieSBgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnlgLCBidXQgdGhhdCAqaXRzZWxmKiBpcyBzdGF0aWMuIFNvLCB0aGUgcXVlc3Rpb24gYmVjb21lcywgd2hhdCBjYWxscyAqdGhhdCogZnVuY3Rpb24sIGBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeWA/IFdlIG5lZWQgdG8ga2VlcCBkaWdnaW5nIHRvIGZpbmQgdGhlIHVsdGltYXRlIGVudHJ5IHBvaW50IGZvciB0aGlzIGZ1bmN0aW9uJiMzOTtzIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vdmFkZHIuYz01ODU9c3RhdGljIHZvaWQgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTYzNC1cbm1tL2RhbW9uL3ZhZGRyLmM6NjM1OnN0YXRpYyBpbnQgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxubW0vZGFtb24vdmFkZHIuYy02MzYtXHRcdHVuc2lnbmVkIGxvbmcgbmV4dCwgc3RydWN0IG1tX3dhbGsgKndhbGspXG4tLVxubW0vZGFtb24vdmFkZHIuYz03Mzg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4tLVxubW0vZGFtb24vdmFkZHIuYy03NTAtXHRzdHJ1Y3QgbW1fd2Fsa19vcHMgd2Fsa19vcHMgPSB7XG5tbS9kYW1vbi92YWRkci5jOjc1MTpcdFx0LnBtZF9lbnRyeSA9IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5LFxubW0vZGFtb24vdmFkZHIuYy03NTItXHRcdC5wdGVfZW50cnkgPSBOVUxMLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjU0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqQW5hbHl6aW5nIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGBkYW1vc192YV9taWdyYXRlYCoqCgpPa2F5LCBzbyBgZGFtb3NfdmFfbWlncmF0ZWAgaXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGEgZmV3IHRoaW5ncywgYnV0IGJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMsIGxldCYjMzk7cyB0YWtlIGEgbWV0aG9kaWNhbCBhcHByb2FjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGl0JiMzOTtzIHN0YXRpYyDigJMgd2hhdCBleGFjdGx5ICpjYWxscyogYGRhbW9zX3ZhX21pZ3JhdGVgPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UuIFN0YXRpYyBmdW5jdGlvbnMgaGF2ZSB0aGVpciBzcGVjaWZpYyBpbXBsaWNhdGlvbnMgcmVnYXJkaW5nIHNjb3BlLCBsaWZlY3ljbGUsIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLCBhbmQgdGhhdCBoYXMgYSBkaXJlY3QgaW5mbHVlbmNlIG9uIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiBhIG1vZHVsZSwgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzLiBTbywgdGhlIGludmVzdGlnYXRpb24gYmVnaW5zOiBJIG5lZWQgdG8gaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzLiBGcm9tIHRoZXJlLCBJIGNhbiB1bmRlcnN0YW5kIGl0cyBwbGFjZSBpbiB0aGlzIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb3NfdmFfbWlncmF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vdmFkZHIuYz01NDU9c3RhdGljIGJvb2wgZGFtb3NfdmFfZmlsdGVyX291dChzdHJ1Y3QgZGFtb3MgKnNjaGVtZSwgc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTU3My1cbm1tL2RhbW9uL3ZhZGRyLmM6NTc0OnN0cnVjdCBkYW1vc192YV9taWdyYXRlX3ByaXZhdGUge1xubW0vZGFtb24vdmFkZHIuYy01NzUtXHRzdHJ1Y3QgbGlzdF9oZWFkICptaWdyYXRpb25fbGlzdHM7XG4tLVxubW0vZGFtb24vdmFkZHIuYy01ODQtICovXG5tbS9kYW1vbi92YWRkci5jOjU4NTpzdGF0aWMgdm9pZCBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxubW0vZGFtb24vdmFkZHIuYy01ODYtXHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vZGFtb24vdmFkZHIuYy02MzQtXG5tbS9kYW1vbi92YWRkci5jOjYzNTpzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbm1tL2RhbW9uL3ZhZGRyLmMtNjM2LVx0XHR1bnNpZ25lZCBsb25nIG5leHQsIHN0cnVjdCBtbV93YWxrICp3YWxrKVxubW0vZGFtb24vdmFkZHIuYy02Mzcte1xubW0vZGFtb24vdmFkZHIuYzo2Mzg6XHRzdHJ1Y3QgZGFtb3NfdmFfbWlncmF0ZV9wcml2YXRlICpwcml2ID0gd2Fsay1cdTAwM2Vwcml2YXRlO1xubW0vZGFtb24vdmFkZHIuYy02MzktXHRzdHJ1Y3QgbGlzdF9oZWFkICptaWdyYXRpb25fbGlzdHMgPSBwcml2LVx1MDAzZW1pZ3JhdGlvbl9saXN0cztcbi0tXG5tbS9kYW1vbi92YWRkci5jLTY1OC1cdFx0XHRnb3RvIGh1Z2Vfb3V0O1xubW0vZGFtb24vdmFkZHIuYzo2NTk6XHRcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVx1MDAzZXZtYSwgYWRkciwgZGVzdHMsXG5tbS9kYW1vbi92YWRkci5jLTY2MC1cdFx0XHRcdG1pZ3JhdGlvbl9saXN0cyk7XG4tLVxubW0vZGFtb24vdmFkZHIuYy02ODEtXHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi92YWRkci5jOjY4MjpcdFx0ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcbm1tL2RhbW9uL3ZhZGRyLmMtNjgzLVx0XHRcdFx0bWlncmF0aW9uX2xpc3RzKTtcbi0tXG5tbS9kYW1vbi92YWRkci5jPTcxOT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19tYWR2aXNlKHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTczNy1cbm1tL2RhbW9uL3ZhZGRyLmM6NzM4OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxubW0vZGFtb24vdmFkZHIuYy03MzktXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTc0Mi1cdExJU1RfSEVBRChmb2xpb19saXN0KTtcbm1tL2RhbW9uL3ZhZGRyLmM6NzQzOlx0c3RydWN0IGRhbW9zX3ZhX21pZ3JhdGVfcHJpdmF0ZSBwcml2O1xubW0vZGFtb24vdmFkZHIuYy03NDQtXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbi0tXG5tbS9kYW1vbi92YWRkci5jLTc1MC1cdHN0cnVjdCBtbV93YWxrX29wcyB3YWxrX29wcyA9IHtcbm1tL2RhbW9uL3ZhZGRyLmM6NzUxOlx0XHQucG1kX2VudHJ5ID0gZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnksXG5tbS9kYW1vbi92YWRkci5jLTc1Mi1cdFx0LnB0ZV9lbnRyeSA9IE5VTEwsXG4tLVxubW0vZGFtb24vdmFkZHIuYz04Nzk9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTkwNS1cdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxubW0vZGFtb24vdmFkZHIuYzo5MDY6XHRcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG5tbS9kYW1vbi92YWRkci5jLTkwNy1cdGNhc2UgREFNT1NfU1RBVDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgwMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIOKAkyB0aGV5JiMzOTtyZSBzY29wZWQgaW50ZXJuYWxseSwgYnV0IHRoZXkgY2FuIHN0aWxsIGludGVyYWN0IHdpdGggZ2xvYmFsIG9yIHN0YXRpYyBkYXRhLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0LgoKTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gaWRlbnRpZnkgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gSSBuZWVkIHRvIHRyYWNlIGl0cyB1c2FnZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gc2VlIHRoZSBjYWxsIGdyYXBoLiBJZGVudGlmeWluZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IOKAkyB0aGUgcmVhc29ucyBmb3IgaXRzIGludm9jYXRpb24sIHRoZSBkYXRhIGJlaW5nIHBhc3NlZCBpbiwgYW5kIHVsdGltYXRlbHksIGl0cyBvdmVyYWxsIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHRzIHdpbGwgYWxsb3cgbWUgdG8gZ3Jhc3AgdGhlIGludGVudCBiZWhpbmQgdGhlIHN0YXRpYyBuYXR1cmUuIEkgc3VzcGVjdCBpdCYjMzk7cyBjcml0aWNhbCB0byBhIHNwZWNpZmljIG1vZHVsZSBvciBjb21wb25lbnQgYW5kIEkgbXVzdCBkZXRlcm1pbmUgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBmdW5jdGlvbnMuIEkmIzM5O2xsIGdldCB0byB3b3JrIGFuZCB0cmFjZSB0aG9zZSBjYWxscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fdmFfYXBwbHlfc2NoZW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vdmFkZHIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi92YWRkci5jPTg1ND1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTg3OC1cbm1tL2RhbW9uL3ZhZGRyLmM6ODc5OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi92YWRkci5jLTg4MC1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi92YWRkci5jPTkzNz1zdGF0aWMgaW50IF9faW5pdCBkYW1vbl92YV9pbml0Y2FsbCh2b2lkKVxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtOTQ2LVx0XHQuY2xlYW51cF90YXJnZXQgPSBkYW1vbl92YV9jbGVhbnVwX3RhcmdldCxcbm1tL2RhbW9uL3ZhZGRyLmM6OTQ3Olx0XHQuYXBwbHlfc2NoZW1lID0gZGFtb25fdmFfYXBwbHlfc2NoZW1lLFxubW0vZGFtb24vdmFkZHIuYy05NDgtXHRcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fdmFfc2NoZW1lX3Njb3JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzM0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCBJJiMzOTttIHRoaW5raW5nIGhlcmUuLi4KCioqRGVjb25zdHJ1Y3RpbmcgRGFtb24mIzM5O3MgQXBwbHkgU2NoZW1lKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGBkYW1vbl92YV9hcHBseV9zY2hlbWVgIGFuZCBgZGFtb25fcGFfYXBwbHlfc2NoZW1lYCBhcmUgYmVpbmcgdXNlZC4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgdGhleSYjMzk7cmUgYXNzaWduZWQgdG8gdGhlIGAuYXBwbHlfc2NoZW1lYCBhdHRyaWJ1dGUgb2YgYGRhbW9uX29wZXJhdGlvbnNgLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRlcm1zIG9mIHRoZSB1c3VhbCBEYW1vbiBpbXBsZW1lbnRhdGlvbiDigJMgeW91JiMzOTtkIGV4cGVjdCBkaWZmZXJlbnQgc2NoZW1lcyB0byBiZSBhcHBsaWVkIGluIGRpZmZlcmVudCBjb250ZXh0cywgdmlydHVhbCBhZGRyZXNzIHNwYWNlIHZzLiBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLgoKTm93LCBteSBjdXJpb3NpdHkgaXMgcGlxdWVkLiBUaGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBgLmFwcGx5X3NjaGVtZWAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGNydWNpYWwgdG8gZ3Jhc3BpbmcgdGhlIG92ZXJhbGwgZmxvdyBhbmQgdGhlIHNwZWNpZmljIHNjZW5hcmlvcyB3aGVyZSB0aGVzZSBzY2hlbWVzIGdldCBhcHBsaWVkLiBLbm93aW5nIHRoZSBjb250ZXh0cyB3aWxsIGdpdmUgaW5zaWdodCBpbnRvIGhvdyB0aGVzZSBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVnaWVzIGFyZSBpbnZva2VkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgc3RhY2sgbG9va3MgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XFwuYXBwbHlfc2NoZW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0yNTcyPXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNjA4LVxubW0vZGFtb24vY29yZS5jOjI2MDk6XHRpZiAoYy1cdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XG5tbS9kYW1vbi9jb3JlLmMtMjYxMC1cdFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXHUwMDI2XHUwMDI2XG4tLVxubW0vZGFtb24vY29yZS5jLTI2MjItXHRcdFx0XHRkYW1vbl9ucl9yZWdpb25zKHQpLCBkb190cmFjZSk7XG5tbS9kYW1vbi9jb3JlLmM6MjYyMzpcdFx0c3pfYXBwbGllZCA9IGMtXHUwMDNlb3BzLmFwcGx5X3NjaGVtZShjLCB0LCByLCBzLFxubW0vZGFtb24vY29yZS5jLTI2MjQtXHRcdFx0XHRcdTAwMjZzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XG4tLVxubW0vZGFtb24vcGFkZHIuYz00Mzc9c3RhdGljIGludCBfX2luaXQgZGFtb25fcGFfaW5pdGNhbGwodm9pZClcbi0tXG5tbS9kYW1vbi9wYWRkci5jLTQ0Ni1cdFx0LnRhcmdldF92YWxpZCA9IE5VTEwsXG5tbS9kYW1vbi9wYWRkci5jOjQ0NzpcdFx0LmFwcGx5X3NjaGVtZSA9IGRhbW9uX3BhX2FwcGx5X3NjaGVtZSxcbm1tL2RhbW9uL3BhZGRyLmMtNDQ4LVx0XHQuZ2V0X3NjaGVtZV9zY29yZSA9IGRhbW9uX3BhX3NjaGVtZV9zY29yZSxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTkzNz1zdGF0aWMgaW50IF9faW5pdCBkYW1vbl92YV9pbml0Y2FsbCh2b2lkKVxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtOTQ2LVx0XHQuY2xlYW51cF90YXJnZXQgPSBkYW1vbl92YV9jbGVhbnVwX3RhcmdldCxcbm1tL2RhbW9uL3ZhZGRyLmM6OTQ3Olx0XHQuYXBwbHlfc2NoZW1lID0gZGFtb25fdmFfYXBwbHlfc2NoZW1lLFxubW0vZGFtb24vdmFkZHIuYy05NDgtXHRcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fdmFfc2NoZW1lX3Njb3JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA3OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEQU1PTiBFeGVjdXRpb24gRmxvdyoqCgpBbHJpZ2h0LCBzbyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyBkZWZpbml0ZWx5IHRoZSBkcml2ZXIgb2YgdGhlIHNob3csIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGFjdHVhbGx5ICpkb2VzKiBieSB0cmFjaW5nIGl0cyBjYWxscy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBgZGFtb3NfYXBwbHlfc2NoZW1lYC4gVGhpcyBmdW5jdGlvbiBpcyBwaXZvdGFsOyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBwYXRoLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBTdGF0aWMgb25lcyBhcmUgdXN1YWxseSBqdXN0IHNldHVwIG9yIGludGVybmFsIGRldGFpbHMgSSYjMzk7bSBwcm9iYWJseSBub3QgYXMgaW50ZXJlc3RlZCBpbiBhdCB0aGUgbW9tZW50LiBJIHdhbnQgdGhlIG1lYXR5LCBkeW5hbWljIHBhcnRzIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtLiBNeSBnb2FsIGlzIHRvIG1hcCBvdXQgaG93IERBTU9OIGludGVyYWN0cyB3aXRoIHN5c2ZzIG9yLCBpbmRlZWQsIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrZGFtb25kX2FwcGx5X3NjaGVtZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTMyMDM9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2Vfc3RhdChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMyMTgtXG5tbS9kYW1vbi9jb3JlLmM6MzIxOTpzdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcbm1tL2RhbW9uL2NvcmUuYy0zMjIwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mzc1Mj1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzgyNC1cdFx0Lypcbm1tL2RhbW9uL2NvcmUuYzozODI1Olx0XHQgKiBkbyBrZGFtb25kX2NhbGwoKSBhbmQga2RhbW9uZF9hcHBseV9zY2hlbWVzKCkgYWZ0ZXJcbm1tL2RhbW9uL2NvcmUuYy0zODI2LVx0XHQgKiBrZGFtb25kX21lcmdlX3JlZ2lvbnMoKSBpZiBwb3NzaWJsZSwgdG8gcmVkdWNlIG92ZXJoZWFkXG4tLVxubW0vZGFtb24vY29yZS5jLTM4MzktXHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZjdHgtXHUwMDNlc2NoZW1lcykpXG5tbS9kYW1vbi9jb3JlLmM6Mzg0MDpcdFx0XHRrZGFtb25kX2FwcGx5X3NjaGVtZXMoY3R4KTtcbm1tL2RhbW9uL2NvcmUuYy0zODQxLVx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjI2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgREFNT04gVGhyZWFkIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBga2RhbW9uZF9mbmAgaXMgdGhlIGNvcmUgdGhyZWFkIGZ1bmN0aW9uIGZvciBEQU1PTi4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBoZWFydCBvZiB0aGUgREFNT04gcHJvY2Vzcy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZm9jdXMgb24gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGFnZSBtYW5hZ2VtZW50LiBUaGUgb2J2aW91cyBjYW5kaWRhdGVzIGFyZSBgZGFtb25fbWlncmF0ZV9wYWdlc2AsIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgLCBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSB0aHJlYWQgZnVuY3Rpb24gaXRzZWxmLCBga2RhbW9uZF9mbmAuCgpIbW0sIHdhaXQgYSBzZWNvbmQuIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpc24mIzM5O3QgZGVjbGFyZWQgc3RhdGljLiBUaGF0IHJhaXNlcyBhIGZsYWcuIElmIGl0JiMzOTtzIG5vdCBzdGF0aWMsIGl0IHN1Z2dlc3RzIHRoYXQgaXQgbWlnaHQgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIG91dHNpZGUgb2YgREFNT04mIzM5O3MgY29yZSBtb2R1bGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBEQU1PTiBjb3JlIGxvZ2ljIGJldHRlci4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgZGFtb25fbWlncmF0ZV9wYWdlc2AgYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9taWdyYXRlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL29wcy1jb21tb24uYz0zMzM9c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCxcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzg0LVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjM4NTp1bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzg2LXtcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg9MjA9Ym9vbCBkYW1vc19mb2xpb19maWx0ZXJfbWF0Y2goc3RydWN0IGRhbW9zX2ZpbHRlciAqZmlsdGVyLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbm1tL2RhbW9uL29wcy1jb21tb24uaDoyMTp1bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oLTIyLVxuLS1cbm1tL2RhbW9uL3BhZGRyLmM9MzI2PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9wYWRkci5jLTM1NS1cdH1cbm1tL2RhbW9uL3BhZGRyLmM6MzU2Olx0YXBwbGllZCA9IGRhbW9uX21pZ3JhdGVfcGFnZXMoXHUwMDI2Zm9saW9fbGlzdCwgcy1cdTAwM2V0YXJnZXRfbmlkKTtcbm1tL2RhbW9uL3BhZGRyLmMtMzU3LVx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vZGFtb24vdmFkZHIuYz03Mzg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4tLVxubW0vZGFtb24vdmFkZHIuYy03NzQtXHRcdG5pZCA9IHVzZV90YXJnZXRfbmlkID8gcy1cdTAwM2V0YXJnZXRfbmlkIDogZGVzdHMtXHUwMDNlbm9kZV9pZF9hcnJbaV07XG5tbS9kYW1vbi92YWRkci5jOjc3NTpcdFx0YXBwbGllZCAmIzQzOz0gZGFtb25fbWlncmF0ZV9wYWdlcyhcdTAwMjZwcml2Lm1pZ3JhdGlvbl9saXN0c1tpXSwgbmlkKTtcbm1tL2RhbW9uL3ZhZGRyLmMtNzc2LVx0XHRjb25kX3Jlc2NoZWQoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0MTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gS2VybmVsIFRocmVhZCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBsb29rcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIERBTU9OIG1pZ3JhdGlvbiBwcm9jZXNzLiBXYWl0LCBoYW5nIG9uLCBJIHNlZSBgZGFtb25fcGFfYXBwbHlfc2NoZW1lYCBhbmQgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAgZGVmaW5lZCBhcyBzdGF0aWMgYnV0IHRoZXkmIzM5O3JlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCBzbyB0aGV5IGNhbiBiZSB0cmlnZ2VyZWQgc29tZWhvdy4gQW5kIHRoZW4gSSBzcG90IGBkYW1vc19hcHBseV9zY2hlbWVgIGlzIGFsc28gc3RhdGljIC0gaW50ZXJlc3RpbmcuIE5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgYXJlIGNvbm5lY3RlZCB0byBzeXNmcyBlbnRyeSBwb2ludHMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvbnRyb2wgbGl2ZXMuCgpSaWdodCwgZXhlY3V0aW9uIGl0c2VsZiBoYXBwZW5zIHdpdGhpbiBga2RhbW9uZF9mbmAsIHdoaWNoIGlzIGEga2VybmVsIHRocmVhZC4gU28sIHRoYXQgdGhyZWFkIGZ1bmN0aW9uIGlzIGFub3RoZXIgZ29vZCBmb2N1cyBzeW1ib2wsIGJ1dCwgeW91IGtub3csIGl0JiMzOTtzIGEgdGhyZWFkLiBMZXQgbWUgdGhpbmssIGFyZSB0aGVyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzPyBJIHNob3VsZCBjaGVjayBgbW0vZGFtb24vc3lzZnMuY2Ag4oCTIHRoYXQmIzM5O3MgcHJvYmFibHkgd2hlcmUgdGhlIERBTU9OIHNldHVwIGFuZCBpbml0aWFsaXNhdGlvbiBoYXBwZW4uIFRoYXQmIzM5O3MgbXkgbmV4dCBkZXN0aW5hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTIyMjA9c3RhdGljIGludCBkYW1vbl9zeXNmc19yZXBlYXRfY2FsbF9mbih2b2lkICpkYXRhKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjI0Mi1cbm1tL2RhbW9uL3N5c2ZzLmM6MjI0MzpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG5tbS9kYW1vbi9zeXNmcy5jLTIyNDQte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjI4OD1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjI5NS1cdCAqIERBTU9OLCB3ZSBmcmVlIGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4IGluIG5leHRcbm1tL2RhbW9uL3N5c2ZzLmM6MjI5NjpcdCAqIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oKSwgb3Iga2RhbW9uZHNfbnJfc3RvcmUoKVxubW0vZGFtb24vc3lzZnMuYy0yMjk3LVx0ICovXG4tLVxubW0vZGFtb24vc3lzZnMuYz0yMzY0PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZChlbnVtIGRhbW9uX3N5c2ZzX2NtZCBjbWQsXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzcxLVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfT046XG5tbS9kYW1vbi9zeXNmcy5jOjIzNzI6XHRcdHJldHVybiBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uKGtkYW1vbmQpO1xubW0vZGFtb24vc3lzZnMuYy0yMzczLVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfT0ZGOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjIzMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBTeXNmcyBIYW5kbGluZyBmb3IgREFNT04qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBEQU1PTiBpbnRlcmFjdHMgd2l0aCBzeXNmcy4gVGhlIGNydWNpYWwgZW50cnkgcG9pbnQgZm9yIHRoaXMsIGZyb20gd2hhdCBJJiMzOTttIHJlYWRpbmcsIGlzIHRoZSBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBhY3Rpb24gc3RhcnRzIHdoZW4gYSB1c2VyIGF0dGVtcHRzIHRvIHdyaXRlIHRvIGEgc3lzZnMgZmlsZSBhc3NvY2lhdGVkIHdpdGggREFNT04uIE5hdHVyYWxseSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBoYXBwZW5zIHdpdGhpbiBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmbG93IGFuZCBmaWd1cmUgb3V0IGhvdyBjb21tYW5kcyBhcmUgaW50ZXJwcmV0ZWQgYW5kIGV4ZWN1dGVkLiBUaGlzIGlzIHRoZSBjb3JlIG9mIGhvdyB1c2VycyBjb25maWd1cmUgYW5kIGludGVyYWN0IHdpdGggREFNT04sIHNvIGl0IHdhcnJhbnRzIGEgdGhvcm91Z2ggZXhhbWluYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB1bmRlciB0aGUgaG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc3lzZnNfaGFuZGxlX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTIzMzQ9c3RhdGljIGludCBkYW1vbl9zeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zKFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM1NS0vKlxubW0vZGFtb24vc3lzZnMuYzoyMzU2OiAqIGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoKSAtIEhhbmRsZSBhIGNvbW1hbmQgZm9yIGEgc3BlY2lmaWMga2RhbW9uZC5cbm1tL2RhbW9uL3N5c2ZzLmMtMjM1Ny0gKiBAY21kOlx0VGhlIGNvbW1hbmQgdG8gaGFuZGxlLlxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM2My0gKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MjM2NDpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxubW0vZGFtb24vc3lzZnMuYy0yMzY1LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTI0MDQ9c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTI0MTUtXHRcdGlmIChzeXNmc19zdHJlcShidWYsIGRhbW9uX3N5c2ZzX2NtZF9zdHJzW2NtZF0pKSB7XG5tbS9kYW1vbi9zeXNmcy5jOjI0MTY6XHRcdFx0cmV0ID0gZGFtb25fc3lzZnNfaGFuZGxlX2NtZChjbWQsIGtkYW1vbmQpO1xubW0vZGFtb24vc3lzZnMuYy0yNDE3LVx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgzNQoJCQkJCQkJb3V0cHV0OiA2NgoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRpZ2dpbmcgaW50byBEQU1PTiYjMzk7cyBTeXNmcyBJbnRlcmZhY2UqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgREFNT04gaW50ZXJhY3RzIHdpdGggdGhlIHN5c2ZzLiBJJiMzOTt2ZSBnb3QgYHN0YXRlX3N0b3JlYCBpbiBtaW5kIOKAkyB0aGF0JiMzOTtzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBzeXNmcyBmaWxlcy4gQnV0LCBub3cgSSYjMzk7bSByZW1lbWJlcmluZyB0aGF0IGBkYW1vbl9zeXNmc19oYW5kbGVfY21kYCBpcyBkZWNsYXJlZCBhcyAqc3RhdGljKi4gVGhhdOKAmXMgYSBiaXQgb2YgYSByb2FkYmxvY2sgaWYgSeKAmW0gdHJ5aW5nIHRvIHRyYWNlIHRoZSBjb21tYW5kIHByb2Nlc3NpbmcgZmxvdy4KCk9rYXksIG5vIHByb2JsZW0uIExldCYjMzk7cyBmaW5kIGFueSBvdGhlciBpbnRlcmVzdGluZyBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL3N5c2ZzLmNgIHdoaWNoICphcmVuJiMzOTt0KiBkZWNsYXJlZCBhcyBzdGF0aWMgYW5kIHNlZSB3aGF0IHRoZXkgdGVsbCB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTI2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIGdlYXJlZCB0b3dhcmRzIGEgdXNlciB3aG8ga25vd3MgdGhlaXIgd2F5IGFyb3VuZCBzeXN0ZW0tbGV2ZWwgY29kZToKCioqQW5hbHl6aW5nIGBtbS9kYW1vbi9zeXNmcy5jYCAtIFF1aWNrIE1ldGhvZCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIGBtbS9kYW1vbi9zeXNmcy5jYC4gSSBjb3VsZCBkaXZlIHJpZ2h0IGluIHdpdGggYHJlYWQtZmlsZWAgYW5kIGp1c3Qgc3RhcnQgc2Nyb2xsaW5nIHRocm91Z2ggdGhlIGNvZGUsIGJ1dCBJJiMzOTttIHRoaW5raW5nIGEgZmFzdGVyLCBtb3JlIHRhcmdldGVkIGFwcHJvYWNoIG1pZ2h0IGJlIGJldHRlci4gTGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGBncmVwcGVyYCBzY2FuIGlzIHByb2JhYmx5IHRoZSB3YXkgdG8gZ28gaGVyZS4gSSYjMzk7bGwgemVybyBpbiBvbiB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zLiBTbywgbGV0JiMzOTtzIHVzZSBgZ3JlcHBlcmAgd2l0aCB0aGUgcGF0dGVybnMgYF5pbnQgYCBvciBgXnZvaWQgYCB0byBncmFiIGFsbCB0aGUgbGluZXMgdGhhdCBkZWZpbmUgZnVuY3Rpb25zIHJldHVybmluZyBhbiBgaW50YCBvciBgdm9pZGAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBpbnRlcmZhY2UgYW5kIHN0cnVjdHVyZSwgd2l0aG91dCBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHJpZ2h0IGF3YXkuIFRoYXQgc2hvdWxkIHF1aWNrbHkgZ2V0IG1lIG9yaWVudGVkIGluIHRoaXMgZmlsZS4gSXQmIzM5O3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBzdGFydCwgZm9yIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0MjgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipTdGF0aWMgRGVjbGFyYXRpb25zIGFuZCBGdW5jdGlvbiBTY29wZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzb21ldGhpbmcganVtcHMgb3V0IGF0IG1lOiBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQuIE5vIGJpZyBkZWFsLCBwcm9iYWJseSBkZXNpZ25lZCB0byBiZSBhbiBpbnRlcm5hbCBoZWxwZXIsIG9yIHByZXZlbnQgYWNjaWRlbnRhbCBuYW1lIGNvbGxpc2lvbnMgd2l0aCBvdGhlciBmdW5jdGlvbnMuIEJ1dCBpdCBkb2VzIHJhaXNlIGEgcXVlc3Rpb24g4oCTIGFyZSB0aGVyZSBzaW1pbGFyIGRlc2lnbiBjaG9pY2VzIGVsc2V3aGVyZT8gSXQgbWFrZXMgbWUgdGhpbmsgSSBzaG91bGQgdmVyaWZ5IGhvdyBpdCBpcyB1c2VkIGFuZCBpZiB0aGUgZGV2ZWxvcGVyIGludGVuZGVkIGl0IHRvIGJlIHNvIGxpbWl0ZWQuCgpNeSBuZXh0IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBkYW1vbl9taWdyYXRlX3BhZ2VzYC4gQWgsIGl0JiMzOTtzIG5vdCBzdGF0aWMuIFRoYXQmIzM5O3MgZ29vZCwgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgZnVuY3Rpb24gaW50ZW5kZWQgZm9yIGJyb2FkZXIgdXNlIHdpdGhpbiB0aGUgbGFyZ2VyIERhbW9uIGZyYW1ld29yaywgcG90ZW50aWFsbHkgY2FsbGVkIGZyb20gb3RoZXIgbW9kdWxlcyBvciBmdW5jdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBkaWZmZXJlbmNlIGFzIEkgdHJhY2UgdGhyb3VnaCB0aGUgY2FsbGluZyBoaWVyYXJjaHkuIFRoYXQmIzM5O3MgYW4gaW1wb3J0YW50IGRlc2lnbiBlbGVtZW50IHRvIGtlZXAgaW4gbWluZCwgc3RhdGljIHZzIG5vbi1zdGF0aWMuCgpGaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGRhbW9uX3N0YXJ0YC4gTGV0IG1lIHNlZSwgaG93IGlzIHRoYXQgZGVjbGFyZWQ/IFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCB2aXNpYmlsaXR5IG9mIHRoZXNlIGtleSBmdW5jdGlvbnMgd2l0aGluIHRoZSBEYW1vbiBzdWJzeXN0ZW0uIFRoZSBpbnRlcnBsYXkgb2YgdGhvc2UgdGhyZWUgZnVuY3Rpb25zIGFuZCBhbnkgcG90ZW50aWFsIGNvdXBsaW5nIG9mIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xMDEzPXN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEwMzgtICogSW4gZGV0YWlsLCBhbGwgREFNT04gQVBJIGNhbGxlcnMgZGlyZWN0bHkgY2FsbCB0aGlzIGZ1bmN0aW9uIGZvciBpbml0aWFsXG5tbS9kYW1vbi9jb3JlLmM6MTAzOTogKiBzZXR1cCBvZiBkYW1vbl9jdHggYmVmb3JlIGNhbGxpbmcgZGFtb25fc3RhcnQoKS4gIFNvbWUgb2YgdGhlIEFQSSBjYWxsZXJzXG5tbS9kYW1vbi9jb3JlLmMtMTA0MC0gKiBhbHNvIGluZGlyZWN0bHkgY2FsbCB0aGlzIGZ1bmN0aW9uIHZpYSBkYW1vbl9jYWxsKCkgLVx1MDAzZSBkYW1vbl9jb21taXQoKSBmb3Jcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTkyNT1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSk7XG4tLVxubW0vZGFtb24vY29yZS5jLTE5MjctLypcbm1tL2RhbW9uL2NvcmUuYzoxOTI4OiAqIF9fZGFtb25fc3RhcnQoKSAtIFN0YXJ0cyBtb25pdG9yaW5nIHdpdGggZ2l2ZW4gY29udGV4dC5cbm1tL2RhbW9uL2NvcmUuYy0xOTI5LSAqIEBjdHg6XHRtb25pdG9yaW5nIGNvbnRleHRcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTkzNC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTM1OnN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMTkzNi17XG4tLVxubW0vZGFtb24vY29yZS5jPTE5NTc9c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTU5LS8qKlxubW0vZGFtb24vY29yZS5jOjE5NjA6ICogZGFtb25fc3RhcnQoKSAtIFN0YXJ0cyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXG5tbS9kYW1vbi9jb3JlLmMtMTk2MS0gKiBAY3R4czpcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RhcnQgbW9uaXRvcmluZ1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTY4LSAqIEBleGNsdXNpdmUgaXMgdHJ1ZSBhbmQgYSBncm91cCBvZiB0aHJlYWRzIHRoYXQgY3JlYXRlZCBieSBvdGhlclxubW0vZGFtb24vY29yZS5jOjE5Njk6ICogJiMzOTtkYW1vbl9zdGFydCgpJiMzOTsgY2FsbCBpcyBjdXJyZW50bHkgcnVubmluZywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgYnV0XG5tbS9kYW1vbi9jb3JlLmMtMTk3MC0gKiByZXR1cm5zIC1FQlVTWS5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk3My0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTc0OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxubW0vZGFtb24vY29yZS5jLTE5NzUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTk5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSYjNDM7JiM0MzspIHtcbm1tL2RhbW9uL2NvcmUuYzoyMDAwOlx0XHRlcnIgPSBfX2RhbW9uX3N0YXJ0KGN0eHNbaV0pO1xubW0vZGFtb24vY29yZS5jLTIwMDEtXHRcdGlmIChlcnIpXG4tLVxubW0vZGFtb24vY29yZS5jPTIwNzA9aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjA5Ny0gKlxubW0vZGFtb24vY29yZS5jOjIwOTg6ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRhbW9uX3N0YXJ0KCkgd2l0aCB0aGVcbm1tL2RhbW9uL2NvcmUuYy0yMDk5LSAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMTA2PWludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjE1Mi0gKlxubW0vZGFtb24vY29yZS5jOjIxNTM6ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRhbW9uX3N0YXJ0KCkgd2l0aCB0aGVcbm1tL2RhbW9uL2NvcmUuYy0yMTU0LSAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9NDA4PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNDIwLVxubW0vZGFtb24vbHJ1X3NvcnQuYzo0MjE6XHRlcnIgPSBkYW1vbl9zdGFydChcdTAwMjZjdHgsIDEsIHRydWUpO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00MjItXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYz0zMzE9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMzQzLVxubW0vZGFtb24vcmVjbGFpbS5jOjM0NDpcdGVyciA9IGRhbW9uX3N0YXJ0KFx1MDAyNmN0eCwgMSwgdHJ1ZSk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMzQ1LVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9zdGF0LmM9MjAwPXN0YXRpYyBpbnQgZGFtb25fc3RhdF9zdGFydCh2b2lkKVxuLS1cbm1tL2RhbW9uL3N0YXQuYy0yMTItXHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vc3RhdC5jOjIxMzpcdGVyciA9IGRhbW9uX3N0YXJ0KFx1MDAyNmRhbW9uX3N0YXRfY29udGV4dCwgMSwgdHJ1ZSk7XG5tbS9kYW1vbi9zdGF0LmMtMjE0LVx0aWYgKGVycikge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjI0Mz1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMjY3LVx0fVxubW0vZGFtb24vc3lzZnMuYzoyMjY4Olx0ZXJyID0gZGFtb25fc3RhcnQoXHUwMDI2Y3R4LCAxLCBmYWxzZSk7XG5tbS9kYW1vbi9zeXNmcy5jLTIyNjktXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTE3CgkJCQkJCQlvdXRwdXQ6IDY3CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBrZXJuZWwgaW50ZXJuYWxzOgoKKipEaXZpbmcgaW50byBEQU1PTiBPcGVyYXRpb25zKioKClJpZ2h0LCBgZGFtb25fc3RhcnRgIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZvY3VzaW5nIG9uIERBTU9OJiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eS4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBvZiBvdGhlciBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaXRzIG9wZXJhdGlvbiwgcGFydGljdWxhcmx5IGBkYW1vbl9taWdyYXRlX3BhZ2VzYC4gSXQmIzM5O3MgZ29vZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBhIHJlZmVyZW5jZSBwb2ludC4KCk5vdywgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcHJlc2VuY2Ugb2Ygb3RoZXIgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHdpdGhpbiB0aGUgYG1tL2RhbW9uL29wcy1jb21tb24uY2AgZmlsZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIGhvdyB0aGVzZSBpbml0aWFsIGZ1bmN0aW9ucyBJJiMzOTt2ZSBpZGVudGlmaWVkIHJlbGF0ZSB0byB0aGUgYnJvYWRlciBwaWN0dXJlLiBNeSBhaW0gaXMgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBmbG93LCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIGludmVzdGlnYXRpb24uIFRoaXMgaXMgYSBnb29kIHdheSB0byBzdGFydCBhIGRlZXBlciBkaXZlIGludG8gdGhlIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL29wcy1jb21tb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9vcHMtY29tbW9uLmM9MjQ9c3RydWN0IGZvbGlvICpkYW1vbl9nZXRfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQxLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjQyOnZvaWQgZGFtb25fcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQzLXtcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzItXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NzM6dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzQte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMDMtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTA0OmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMDUtXHRcdFx0c3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNDktXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTUwOmludCBkYW1vbl9jb2xkX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTUxLVx0XHRcdHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MTU5PXN0YXRpYyBib29sIGRhbW9uX2ZvbGlvX21rb2xkX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNzMtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTc0OnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNzUte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0xOTQ9c3RhdGljIGJvb2wgZGFtb25fZm9saW9feW91bmdfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzNS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoyMzY6Ym9vbCBkYW1vbl9mb2xpb195b3VuZyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzNy17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTI2MC1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoyNjE6Ym9vbCBkYW1vc19mb2xpb19maWx0ZXJfbWF0Y2goc3RydWN0IGRhbW9zX2ZpbHRlciAqZmlsdGVyLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTI2Mi17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTM4NT11bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQyNC1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo0MjU6Ym9vbCBkYW1vc19vcHNfaGFzX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDI2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxNjMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IHRoaW5raW5nIHJpZ2h0IG5vdyBpcyBjZW50ZXJlZCBvbiBpZGVudGlmeWluZyB0aGUgYmVzdCBzeW1ib2wgdG8gZm9jdXMgb24uICoqQ2hvb3NpbmcgdGhlIFJpZ2h0IEZvY3VzIFN5bWJvbCBmb3IgQW5hbHlzaXMqKiBgZGFtb25fbWlncmF0ZV9wYWdlc2Agc2VlbXMgbGlrZSBhIHN0cm9uZyBjb250ZW5kZXIsIEkgdGhpbmsgaXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBOb3csIHdoYXQgYWJvdXQgc29tZSBvdGhlciBzeW1ib2xzPyBIbW1tLCBgZGFtb3NfZm9saW9fZmlsdGVyX21hdGNoYD8gVGhhdCYjMzk7cyBub3Qgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQW5kIHRoZW4gYGRhbW9uX3N0YXJ0YCwgdGhhdCYjMzk7cyBhbHNvIG5vdCBzdGF0aWMuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBga2RhbW9uZF9mbmAsIHRoYXQgb25lICppcyogc3RhdGljLCBidXQgaXQmIzM5O3MgdGhlIG1haW4gdGhyZWFkIHNvIGNvdWxkIGJlIHNpZ25pZmljYW50LiBCdXQgaGFuZyBvbiwgZGlkbiYjMzk7dCBJIGp1c3Qgc2VlIHRoYXQgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGdldHMgY2FsbGVkIGJ5IGBkYW1vbl9wYV9taWdyYXRlYCAqYW5kKiBgZGFtb3NfdmFfbWlncmF0ZWA/IFRoYXQgc3VnZ2VzdHMgaXQmIzM5O3MgYSBjcml0aWNhbCBwb2ludCBvZiBjb252ZXJnZW5jZS4gWWVzLCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGF0IGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBhY3R1YWxseSBleHBvcnRlZCDigJMgdGhhdCYjMzk7cyBhIGtleSByZXF1aXJlbWVudC4gVGhhdCBpcyB0aGUgY29ycmVjdCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vb3BzLWNvbW1vbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NTkKCQkJCQkJCW91dHB1dDogNjYKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkludmVzdGlnYXRpbmcgYSBOb24tRXhwb3J0ZWQsIE5vbi1TdGF0aWMgRnVuY3Rpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbiB0aGF0IGlzbiYjMzk7dCBleHBvcnRlZCwgYnV0IGl0JiMzOTtzICphbHNvKiBub3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLCBpdOKAmXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgb3V0c2lkZSB0aGUgbW9kdWxlLCBidXQgaWYgaXTigJlzIG5vbi1zdGF0aWMsIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgaXQmIzM5O3MgYmVpbmcgYWNjZXNzZWQgd2l0aGluIHRoZSBmaWxlIGl0c2VsZiwgb3IgcG90ZW50aWFsbHkgdGhyb3VnaCBzb21lIGxlc3Mgb2J2aW91cyBtZWNoYW5pc20sIGxpa2UgYSBmdW5jdGlvbiBwb2ludGVyIG9yIGEgbWFjcm8gd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCwgaXMgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSAqaG93KiBpdCYjMzk7cyBiZWluZyB1c2VkLgoKVGhlIGZhY3QgdGhhdCB0aGUgbmFtZSBpc24mIzM5O3QgYXBwYXJlbnQgZnJvbSB0aGUgaGVhZGVycyBtZWFucyB0aGF0IGEgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgaXMgbmVjZXNzYXJ5LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbW0vZGFtb24vdmFkZHIuY2AuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQsIGdpdmVuIHRoZSBtZW50aW9uIG9mIHZpcnR1YWwgYWRkcmVzc2VzIGFuZCB0aGUgRGFtb20gc3Vic3lzdGVtLiBUaGF0IGZpbGUgaXMgbGlrZWx5IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIG1vc3QgaW1tZWRpYXRlIHBsYWNlIHRvIGZpbmQgb3V0IHdoYXQgaXQmIzM5O3MgdXAgdG8uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSeKAmWxsIG5lZWQgdG8gbG9vayBmb3IgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgbWVudGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIGxvb2sgZm9yIHRoZSBjYWxsaW5nIGNvbnRleHRzIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjk2NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBEQU1PTiBNaWdyYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyB3ZSBjYW4ga2VlcCBpdCByZWxhdGl2ZWx5IHNpbXBsZSBoZXJlLiBJbml0aWFsbHksIEkgd2FzIGdvaW5nIHRvIGZvY3VzIG9uIGp1c3QgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGFuZCBgZGFtb25fc3RhcnRgLCBidXQgdGhlbiBJIHNhdyB0aGF0IHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdGAsIGBkYW1vbl9wYV9taWdyYXRlYCwgYW5kIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAuIEFsbCBvZiB0aGVzZSBhcmUgY2xlYXJseSB0aWVkIHRvIERBTU9OIG1pZ3JhdGlvbiwgd2hpY2ggY2hhbmdlcyB0aGluZ3MgYSBiaXQuCgpNeSB0aG91Z2h0IGlzIHRvIGRvIGEgcXVpY2sgc2NhbiBvZiBgbW0vZGFtb24vcGFkZHIuY2AgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBiZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBhbnl0aGluZyBlbHNlIGFmZmVjdGVkLCBidXQgc2luY2UgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGNhbGxzIGBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3RgIGRpcmVjdGx5LCBhbmQgdGhlIGxhdHRlciBpcyBtb2RpZmllZCBpbiB0aGUgcGF0Y2gsIGxldCYjMzk7cyB1c2UgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGFzIG91ciBwcmltYXJ5IGZvY3VzIHN5bWJvbC4gSXQmIzM5O3Mgbm9uLXN0YXRpYywgd2hpY2ggaXMgY29udmVuaWVudC4KCk5vdywgd2FpdCBhIG1pbnV0ZSwgYGRhbW9uX3BhX21pZ3JhdGVgIGFuZCBgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGRgIGFyZSBhbHNvIGluIHRoZSBtaXghIFRoZXkmIzM5O3JlIGNhbGxlZCBkdXJpbmcgc2NoZW1lIGFwcGxpY2F0aW9uLCB3aGljaCBpcyBjcnVjaWFsLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBzY2hlbWUgYXBwbGljYXRpb24gaGFwcGVucyB0aHJvdWdoIGBkYW1vc19hcHBseV9zY2hlbWVgLCB0aGVuIGBjLSZndDtvcHMuYXBwbHlfc2NoZW1lYCwgdGhlbiBlaXRoZXIgYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWAgb3IgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAuIE9rYXksIHNvIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgIGFuZCBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBzb3VuZCBsaWtlIGdvb2QgY2FuZGlkYXRlcyB0byBrZWVwIGluIG1pbmQsIGV2ZW4gdGhvdWdoIHRoZXkmIzM5O3JlIHN0YXRpYy4KCkhtbW0sIGlzIHRoZXJlIGFueXRoaW5nIG5vbi1zdGF0aWMgdGhhdCB0cmlnZ2VycyBzY2hlbWUgYXBwbGljYXRpb24/IGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGlzIHN0YXRpYywgYGtkYW1vbmRfZm5gIGlzIGFsc28gc3RhdGljLCBzbyB0aGV5JiMzOTtyZSBvdXQuIE9oISBgZGFtb25fc3RhcnRgIGlzIG5vbi1zdGF0aWMgYW5kIGxhdW5jaGVzIHRoZSBrZGFtb25kIHRocmVhZC4gUmlnaHQsIHNvIGBkYW1vbl9zdGFydGAgYW5kIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBib3RoIHNlZW0gc29saWQgYXMgb3VyIGZvY2FsIHBvaW50cy4KCk9uZSBmaW5hbCB0aGluZyDigJMgbGV0JiMzOTtzIHJldmlzaXQgdGhlIGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAuIEJ1dCwgd2hhdCBlbHNlPyBgREFNT05fU1lTRlNgIHdpbGwgcHJvYmFibHkgYmUgbmVlZGVkIHRvIHRyaWdnZXIgYWxsIHRoaXMgZnJvbSB1c2Vyc3BhY2UsIHNvIHdlJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIEFuZCBwcm9iYWJseSBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAgYXMgd2VsbCwgdGhleSBjb3VsZCBwb3RlbnRpYWxseSB1c2UgaXQuIFdlIHdpbGwgbmVlZCB0byBjaGVjayB3aGF0IGBEQU1PTl9TWVNGU2AgZGVwZW5kcyBvbiwgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1NZU0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTU2PWNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMzMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIEtjb25maWc6IExpbmUgNjggJmFtcDsgQmV5b25kKioKCk9rYXksIGxldCYjMzk7cyBnZXQgaW50byB0aGUgd2VlZHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgbW0vZGFtb25gLiBTcGVjaWZpY2FsbHksIEkgdGhpbmsgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgYXJvdW5kIGxpbmUgNjggb2YgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoYXQgZGlyZWN0b3J5LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGF0IHN1YnN5c3RlbSBiZWdpbi4gR29pbmcgdG8gaGF2ZSB0byBwYXJzZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBoZWxwIHRleHQgdGhlcmUsIHRyeSB0byBkZXRlcm1pbmUgd2hhdCBleGFjdGx5IGlzIGJlaW5nIGNvbnRyb2xsZWQgYXQgdGhhdCBzZWN0aW9uIG9mIHRoZSBzb3VyY2UuIEdvdHRhIGJlIHF1aWNrIGFuZCB0byB0aGUgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRcdGhlbHBcbiAgNjE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDY0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA3OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MDAKCQkJCQkJCW91dHB1dDogNjYKCQkJCQkJCXRob3VnaHRzOiA5NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2ggUmV2aWV3KioKCk9rYXksIHNvIEkmIzM5O20gc2V0dGluZyB1cCBEQU1PTiBhbmQgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBjb25maWd1cmVkIGNvcnJlY3RseS4gRmlyc3QsIGBEQU1PTl9TWVNGU2AgZGVwZW5kcyBvbiBgREFNT05gIGFuZCBgU1lTRlNgLCBzbyBJJiMzOTtsbCBpbmNsdWRlIHRob3NlLiBUaGVuLCBsb29raW5nIGF0IHRoZSBvdGhlciBjb25maWdzLCBJIG5lZWQgdG8gZW5hYmxlIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAsIGFuZCBgREFNT05fU1lTRlNgLiAgSG93ZXZlciwgYERBTU9OX1ZBRERSYCBhbmQgYERBTU9OX1BBRERSYCBkZXBlbmQgb24gYERBTU9OYCBhbmQgYE1NVWAsIHdoaWNoIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgZm9yIGZ1bGwgZW5hYmxlbWVudC4gU28sIHRvIGJlIGNsZWFyLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgd2lsbCBiZSBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBhbmQgYERBTU9OX1NZU0ZTYC4KCk5vdywgSSYjMzk7bSBhbmFseXppbmcgdGhlIGNvZGUuIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBmdW5jdGlvbnMgZnJvbSB0aGUgREFNT04gc3Vic3lzdGVtIEkmIzM5O2xsIGJlIHV0aWxpemluZy4gSSYjMzk7dmUgbm90ZWQgdGhhdCBgZGFtb25fbWlncmF0ZV9wYWdlc2AgaXMgb25lIG5vbi1zdGF0aWMgZnVuY3Rpb24sIG1lYW5pbmcgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gb3RoZXIgbW9kdWxlcyBvciBjb2RlLCBhbmQgdGhhdCYjMzk7cyBvbmUgSSYjMzk7bGwgZGVmaW5pdGVseSBuZWVkLiBOb3csIHNpbmNlIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYW5kIGl0IGlzIGNhbGxlZCBmcm9tIGBtbS9kYW1vbi9wYWRkci5jYCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgYmVzdCBlbnRyeSBwb2ludC4gSSYjMzk7dmUgYWxzbyBpZGVudGlmaWVkIGBkYW1vbl9zdGFydGAgYXMgYW5vdGhlciBub24tc3RhdGljIGZ1bmN0aW9uLCBsb2NhdGVkIGluIGBtbS9kYW1vbi9jb3JlLmNgLCB3aGljaCBpcyBhbHNvIHJlYWNoYWJsZSBmcm9tIHZhcmlvdXMgbG9jYXRpb25zLCBpbmNsdWRpbmcgYG1tL2RhbW9uL3N5c2ZzLmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBhbmQgYG1tL2RhbW9uL3N0YXQuY2AuIEdpdmVuIHRoYXQgYGRhbW9uX3N0YXJ0YCBpcyBjYWxsZWQgaW4gbWFueSBwbGFjZXMsIGFuZCBpdCBpcyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24sIHRoaXMgbWlnaHQgYmUgYSBiZXR0ZXIgZW50cnkgcG9pbnQuCgpJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIHByb3ZpZGVkIHBhdGNoLCB3aGljaCBtb2RpZmllcyBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBJdCBhZGRzIGBub2RlX3N0YXRfYWRkX2ZvbGlvYCBhbmQgYG5vZGVfc3RhdF9zdWJfZm9saW9gIHRvIHVwZGF0ZSB0aGUgaXNvbGF0ZWQgZm9saW8gY291bnQgZHVyaW5nIGZvbGlvIGlzb2xhdGlvbiBmb3IgbWlncmF0aW9uLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBjcnVjaWFsIGFkZGl0aW9uLCBlbnN1cmluZyBhY2N1cmF0ZSBhY2NvdW50aW5nIG9mIGlzb2xhdGVkIGZvbGlvcyB3aXRoaW4gREFNT04mIzM5O3MgbWlncmF0aW9uIHByb2Nlc3MuIFRoaXMgc2VlbXMgY2xlYW4gYW5kIGZ1bmN0aW9uYWwuIEkgYmVsaWV2ZSB0aGlzIGlzIGEgc29saWQgYWRkaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3BhZGRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE3NgoJCQkJCQkJb3V0cHV0OiAxNjMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hvb3NpbmcgdGhlIFJpZ2h0IEVudHJ5IFBvaW50IGZvciBEQU1PTiBNaWdyYXRpb24gSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGUgREFNT04gY29kZSBpbiBgbW0vZGFtb24vYCwgSSBzZWUgdGhhdCBib3RoIGBwYWRkci5jYCBhbmQgYHZhZGRyLmNgIGFyZSByZW1hcmthYmx5IGNsZWFuIGluIHRoYXQgdGhleSBkb24mIzM5O3QgY29udGFpbiBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRoYXQgbWVhbnMgSSBjYW4gc2FmZWx5IGRpc2NhcmQgdGhlbSBmb3IgYW4gaW5pdGlhbGl6YXRpb24gZW50cnkgcG9pbnQuIFRoZXkmIzM5O3JlIGNsZWFybHkgaW50ZW5kZWQgYXMgc3VwcG9ydCBtb2R1bGVzLiBTbywgbXkgZm9jdXMgbmF0dXJhbGx5IHNoaWZ0cyB0byBgZGFtb25fbWlncmF0ZV9wYWdlc2AgYW5kIGBkYW1vbl9zdGFydGAuIEdpdmVuIHRoYXQgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGlzIGxpa2VseSBtb3JlIGNsb3NlbHkgdGllZCB0byB0aGUgYWN0dWFsIG1pZ3JhdGlvbiBwcm9jZXNzLCBJIGxlYW4gdG93YXJkcyBgZGFtb25fc3RhcnRgIGFzIHRoZSBmdW5jdGlvbiB3aGVyZSBJJiMzOTtkIGtpY2sgb2ZmIHRoZSByZWxldmFudCBpbml0aWFsaXNhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBib3RoLCBvZiBjb3Vyc2UsIHRvIGVuc3VyZSB0aGlzIHdvbiYjMzk7dCBjYXVzZSBhbnkgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgZXhpc3RpbmcgREFNT04gb3BlcmF0aW9uIGZsb3csIGJ1dCBvbiB0aGUgZmFjZSBvZiBpdCwgYGRhbW9uX3N0YXJ0YCBsb29rcyBsaWtlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIGxvY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9taWdyYXRlX3BhZ2VzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OJiMzOTtzIGZvbGlvIG1pZ3JhdGlvbiBsb2dpYyBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgIHRvIHByb3Blcmx5IGFjY291bnQgZm9yIGlzb2xhdGVkIGZvbGlvcyBieSBjYWxsaW5nIGBub2RlX3N0YXRfYWRkX2ZvbGlvYCBhbmQgYG5vZGVfc3RhdF9zdWJfZm9saW9gLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgdGhlIERhdGEgQWNjZXNzIE1vbml0b3JpbmcgZnJhbWV3b3JrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX21pZ3JhdGVfcGFnZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04mIzM5O3MgZm9saW8gbWlncmF0aW9uIGxvZ2ljIGluIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgbW0vZGFtb24vcGFkZHIuY2AsIGFuZCBgbW0vZGFtb24vdmFkZHIuY2AgdG8gcHJvcGVybHkgYWNjb3VudCBmb3IgaXNvbGF0ZWQgZm9saW9zIGJ5IGNhbGxpbmcgYG5vZGVfc3RhdF9hZGRfZm9saW9gIGFuZCBgbm9kZV9zdGF0X3N1Yl9mb2xpb2AuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBmcmFtZXdvcmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDowNS42MDM1MzczOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2ODEwMjg1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fU1lTRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9taWdyYXRlX3BhZ2VzXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OJ3MgZm9saW8gbWlncmF0aW9uIGxvZ2ljIGluIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgbW0vZGFtb24vcGFkZHIuY2AsIGFuZCBgbW0vZGFtb24vdmFkZHIuY2AgdG8gcHJvcGVybHkgYWNjb3VudCBmb3IgaXNvbGF0ZWQgZm9saW9zIGJ5IGNhbGxpbmcgYG5vZGVfc3RhdF9hZGRfZm9saW9gIGFuZCBgbm9kZV9zdGF0X3N1Yl9mb2xpb2AuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBmcmFtZXdvcmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjA1LjYwMzU0NTMzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxMjgzMTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjA3ODVhYmZiZWY4NTMyNWNhNjAxM2U3Y2I4M2FkZGI0ZWMxZDU0OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzoyNDowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9vcHMtY29tbW9uLmMgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcXG5pbmRleCBlNTlmNzdlY2E4M2IyYi4uOTgwOWZhMTJiMDlhODAgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jXFxuKysrIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXFxuQEAgLTM3NCw2ICszNzQsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxcbiBcXHR3aGlsZSAoIWxpc3RfZW1wdHkoZm9saW9fbGlzdCkpIHtcXG4gXFx0XFx0Zm9saW8gPSBscnVfdG9fZm9saW8oZm9saW9fbGlzdCk7XFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1KTtcXG4rXFx0XFx0bm9kZV9zdGF0X3N1Yl9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXFxuK1xcdFxcdFxcdFxcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XFxuIFxcdFxcdGZvbGlvX3B1dGJhY2tfbHJ1KGZvbGlvKTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcGFkZHIuYyBiL21tL2RhbW9uL3BhZGRyLmNcXG5pbmRleCA1YTZhNzgwNTQ3ODRhZi4uNWM2YzNhNTk3ZmQwYmYgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vcGFkZHIuY1xcbisrKyBiL21tL2RhbW9uL3BhZGRyLmNcXG5AQCAtMzQ2LDYgKzM0Niw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4gXFxuIFxcdFxcdGlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKVxcbiBcXHRcXHRcXHRnb3RvIHB1dF9mb2xpbztcXG4rXFx0XFx0bm9kZV9zdGF0X2FkZF9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXFxuK1xcdFxcdFxcdFxcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XFxuIFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2Zm9saW9fbGlzdCk7XFxuIHB1dF9mb2xpbzpcXG4gXFx0XFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5pbmRleCA0OTc2Nzc1ZmUyNzYyYS4uMDY0ODQwMGIyZDY1YjQgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xcbisrKyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5AQCAtNjI3LDcgKzYyNyw4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuIGlzb2xhdGU6XFxuIFxcdGlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKVxcbiBcXHRcXHRyZXR1cm47XFxuLVxcbitcXHRub2RlX3N0YXRfYWRkX2ZvbGlvKGZvbGlvLCBOUl9JU09MQVRFRF9BTk9OICtcXG4rXFx0XFx0XFx0Zm9saW9faXNfZmlsZV9scnUoZm9saW8pKTtcXG4gXFx0bGlzdF9hZGQoXFx1MDAyNmZvbGlvLVxcdTAwM2VscnUsIFxcdTAwMjZtaWdyYXRpb25fbGlzdHNbaV0pO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDowNi4zOTU4MDk5NjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTQ4ODg3NDI4ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fU1lTRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9taWdyYXRlX3BhZ2VzXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OJ3MgZm9saW8gbWlncmF0aW9uIGxvZ2ljIGluIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgbW0vZGFtb24vcGFkZHIuY2AsIGFuZCBgbW0vZGFtb24vdmFkZHIuY2AgdG8gcHJvcGVybHkgYWNjb3VudCBmb3IgaXNvbGF0ZWQgZm9saW9zIGJ5IGNhbGxpbmcgYG5vZGVfc3RhdF9hZGRfZm9saW9gIGFuZCBgbm9kZV9zdGF0X3N1Yl9mb2xpb2AuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBmcmFtZXdvcmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDYwNzg1YWJmYmVmODUzMjVjYTYwMTNlN2NiODNhZGRiNGVjMWQ1NDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzoyNDowMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL29wcy1jb21tb24uYyBiL21tL2RhbW9uL29wcy1jb21tb24uY1xuaW5kZXggZTU5Zjc3ZWNhODNiMmIuLjk4MDlmYTEyYjA5YTgwIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jXG4rKysgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcbkBAIC0zNzQsNiArMzc0LDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCxcbiBcdHdoaWxlICghbGlzdF9lbXB0eShmb2xpb19saXN0KSkge1xuIFx0XHRmb2xpbyA9IGxydV90b19mb2xpbyhmb2xpb19saXN0KTtcbiBcdFx0bGlzdF9kZWwoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1KTtcbitcdFx0bm9kZV9zdGF0X3N1Yl9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXG4rXHRcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0XHRmb2xpb19wdXRiYWNrX2xydShmb2xpbyk7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcGFkZHIuYyBiL21tL2RhbW9uL3BhZGRyLmNcbmluZGV4IDVhNmE3ODA1NDc4NGFmLi41YzZjM2E1OTdmZDBiZiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3BhZGRyLmNcbisrKyBiL21tL2RhbW9uL3BhZGRyLmNcbkBAIC0zNDYsNiArMzQ2LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFxuIFx0XHRpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSlcbiBcdFx0XHRnb3RvIHB1dF9mb2xpbztcbitcdFx0bm9kZV9zdGF0X2FkZF9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXG4rXHRcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0XHRsaXN0X2FkZChcdTAwMjZmb2xpby1cdTAwM2VscnUsIFx1MDAyNmZvbGlvX2xpc3QpO1xuIHB1dF9mb2xpbzpcbiBcdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggNDk3Njc3NWZlMjc2MmEuLjA2NDg0MDBiMmQ2NWI0IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xuKysrIGIvbW0vZGFtb24vdmFkZHIuY1xuQEAgLTYyNyw3ICs2MjcsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuIGlzb2xhdGU6XG4gXHRpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSlcbiBcdFx0cmV0dXJuO1xuLVxuK1x0bm9kZV9zdGF0X2FkZF9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXG4rXHRcdFx0Zm9saW9faXNfZmlsZV9scnUoZm9saW8pKTtcbiBcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2bWlncmF0aW9uX2xpc3RzW2ldKTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDowNi4zOTU4MTIyNDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTYwNTc2MDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEQU1PTiBQYXRjaCBmb3IgRm9saW8gSXNvbGF0aW9uIFN0YXRpc3RpY3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBhbmQgaXQncyBtb2RpZnlpbmcgYSBmZXcga2V5IGZpbGVzOiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFkZGluZyBjYWxscyB0byBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYCB3aGVuIHdlJ3JlIGlzb2xhdGluZyBhbmQgcHV0dGluZyBiYWNrIGZvbGlvcyBkdXJpbmcgbWlncmF0aW9uIHdpdGhpbiBEQU1PTi4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBleGlzdGluZyBEQU1PTiBjb25maWd1cmF0aW9uLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB3aGljaCBjb25maWcgb3B0aW9ucyBnb3Zlcm4gdGhlc2UgZmlsZXMsIGFuZCBob3cgdGhlc2UgY2hhbmdlcyBpbnRlcmFjdCB3aXRoIHRob3NlIG9wdGlvbnMuIEkga25vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQgZm9yIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgbW0vZGFtb24vcGFkZHIuY2AsIGFuZCBgbW0vZGFtb24vdmFkZHIuY2AuIFRoaXMgaXMgd2hlcmUgYGdyZXBwZXJgIGlzIGdvaW5nIHRvIGJlIG15IGJlc3QgZnJpZW5kLiBJJ2xsIGZpcmUgaXQgdXAgYW5kIHVzZSBpdCB0byBwcmVjaXNlbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDgwLCJPdXRwdXRUb2tlbnMiOjEwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjEwLjk1NjM5MTA5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI1MTIzNjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uL29wcy1jb21tb24ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTEuMTg4OTEwNDUzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDkwMjM4NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb24vcGFkZHIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTEuNDU5ODIxMzg4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTU1NTkyNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb24vdmFkZHIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTEuNzU1Mzg5ODAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5NDI5MjMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUXVpY2sgTWFrZWZpbGUgQ2hlY2sqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gYW55dGhpbmcgZWxzZSwgbGV0IG1lIGp1c3QgcXVpY2tseSBnbGFuY2UgYXQgdGhlIGBtbS9kYW1vbi9NYWtlZmlsZWAuIEl0J3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNldCB1cCBhcyBJIGV4cGVjdCBmb3IgYW55IGZ1cnRoZXIgZXhwbG9yYXRpb24uIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGluY2x1c2lvbiBvZiBhbnkgc3BlY2lmaWMgY29tcGlsZXIgZmxhZ3MsIG9iamVjdCBmaWxlcywgb3IgZGVwZW5kZW5jaWVzIGZvciB0aGF0IHBhcnRpY3VsYXIgZGlyZWN0b3J5LiBUaGlzIGJyaWVmIGNoZWNrIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgXCJsYXkgb2YgdGhlIGxhbmRcIiBiZWZvcmUgSSBkaWcgZGVlcGVyIGludG8gdGhlIG1vcmUgY29tcGxleCBmdW5jdGlvbmFsaXRpZXMgb2YgRGFtb24gb3IgYW55IGFzc29jaWF0ZWQgbW9kdWxlcy4gSXQncyBtb3N0bHkgYSBtZW50YWwgbm90ZSB0byByZW1pbmQgbXlzZWxmIG9mIHRoZSBidWlsZCBwcm9jZXNzIGZvciBhIHF1aWNrIHJlZnJlc2hlciwgYmVmb3JlIEkgY29udGludWUgZXhwbG9yaW5nIHRoYXQgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoxNC42NDk2ODU1ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai15XFx0XFx0XFx0XFx0Oj0gY29yZS5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cXG4gICA1OlxcdG9iai0kKENPTkZJR19EQU1PTl9QQUREUilcXHQrPSBvcHMtY29tbW9uLm8gcGFkZHIub1xcbiAgIDY6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVxcdCs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xcbiAgIDg6XFx0b2JqLSQoQ09ORklHX0RBTU9OX0xSVV9TT1JUKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gbHJ1X3NvcnQub1xcbiAgIDk6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1NUQVQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBzdGF0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTQuNjQ5Nzc5NjE1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MDk1NTY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBEQU1PTidzIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgREFNT04gaXMgY29uZmlndXJlZC4gSSBrbm93IHRoYXQgYENPTkZJR19EQU1PTl9WQUREUmAgYW5kIGBDT05GSUdfREFNT05fUEFERFJgIGFyZSB0aGUga2V5IHNldHRpbmdzIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQuIEknbSBnb2luZyB0byBxdWlja2x5IGhlYWQgb3ZlciB0byBgbW0vZGFtb24vS2NvbmZpZ2AgdG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXNlIGNvbmZpZ3MgbWlnaHQgaGF2ZS4gVGhhdCdsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB3aGF0IG9wdGlvbnMgSSBuZWVkIHRvIGVuYWJsZSBvciBkaXNhYmxlIGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGlmIEkgd2FudCB0byBwbGF5IGFyb3VuZCB3aXRoIERBTU9OJ3MgdmlydHVhbCBhbmQgcGh5c2ljYWwgYWRkcmVzcyBtb25pdG9yaW5nLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBhbnl0aGluZyBlbHNlIGluIHRoZSBrZXJuZWwgaXMgaW1wYWN0ZWQgYnkgdGhvc2UgY2hvaWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1NywiT3V0cHV0VG9rZW5zIjo2NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTguNzMwNzM3NzkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQwNjk1MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OX1ZBRERSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0yNj1jb25maWcgREFNT05fS1VOSVRfVEVTVFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz00Nz1jb25maWcgREFNT05fUEFERFJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoxOS4xOTQ4MTIzODhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDM0MDI1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05fUEFERFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTM4PWNvbmZpZyBEQU1PTl9WQUREUlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTkuMzU1MTU4Nzk5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2ODUwMTEwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIEtjb25maWc6IG1tL2RhbW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIGBtbS9kYW1vbi9LY29uZmlnYCBmaWxlLiBJIHNwZWNpZmljYWxseSBuZWVkIHRvIGNoZWNrIG91dCB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lcyAzOCBhbmQgNDcuIE15IHNwaWRlciBzZW5zZXMgYXJlIHRpbmdsaW5nLCBhbmQgSSBoYXZlIGEgZmVlbGluZyB0aG9zZSBsaW5lcyBob2xkIHRoZSBrZXkgdG8gc29tZXRoaW5nIGltcG9ydGFudCDigJMgbWF5YmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgYSBjb25kaXRpb25hbCBkZXBlbmRlbmN5LCBvciBhIGZsYWcgdGhhdOKAmXMgY2F1c2luZyBtZSBhIGhlYWRhY2hlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaGVyZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgbWFnaWMgaXMgaG9sZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyMi4wNDAxNzIzODNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDM0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIERBTU9OX1ZBRERSXFxuICAzOTpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNDE6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA0MjpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDQ1OlxcdFxcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgREFNT05fUEFERFJcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNTA6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA1MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDU0OlxcdFxcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuICA1NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDU5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjIyLjA0MDI3ODMyM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE4NzQ2MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBEQU1PTiBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gaXQgbG9va3MgbGlrZSBJJ20gZGVhbGluZyB3aXRoIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGFuZCBgREFNT05fUEFERFJgIGFzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBEQU1PTmAgY29uZmlndXJhdGlvbiBpdHNlbGYuIExldCdzIHN0YXJ0IHRoZXJlLiBTZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgc3BlY2lmaWMgYWRkcmVzcyBkZXRhaWxzLiBMZXQncyBzZWUgd2hhdCB0aGF0IGBEQU1PTmAgY29uZmlnIHRlbGxzIHVzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjI0Ljg1OTAyNzU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU4MjU2NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyNC45NzQ4NTkzNTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1NzI0NTg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgREFNT04gTWlncmF0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGhpdHRpbmcgYSBmZXcga2V5IGZ1bmN0aW9ucyBpbiB0aGUgREFNT04gbWlncmF0aW9uIGNvZGU6IGBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3RgIGluIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgZGFtb25fcGFfbWlncmF0ZWAgaW4gYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkYCBpbiBgbW0vZGFtb24vdmFkZHIuY2AuIE15IGluaXRpYWwgY2hlY2sgY29uZmlybXMgdGhlc2UgYXJlIGRlZmluaXRlbHkgYWN0aXZlIGNvbXBvbmVudHM7IG5vIGRlYWQgY29kZSBoZXJlLiBUaGUgcGF0Y2ggbXVzdCBiZSBkZXNpZ25lZCB0byBpbXBhY3QgdGhlc2Ugc3BlY2lmaWMgcm91dGluZXMuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjb3JlIHN5bWJvbHMgdGhlIHBhdGNoIGlzIHRhcmdldGluZyB3aXRoaW4gdGhvc2UgYXJlYXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWluZyBhbHRlcmVkIGFuZCB3aHksIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIExldCdzIGRpZyBpbiBhbmQgZmluZCB0aG9zZSBmb2N1cyBzeW1ib2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTEyLCJPdXRwdXRUb2tlbnMiOjExMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjI5LjAzMjEwNzg4M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3ODIyODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9vcHMtY29tbW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vb3BzLWNvbW1vbi5jPTI2MT1ib29sIGRhbW9zX2ZvbGlvX2ZpbHRlcl9tYXRjaChzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmaWx0ZXIsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzAyLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzozMDM6c3RhdGljIHVuc2lnbmVkIGludCBfX2RhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzA0LVxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgKm1pZ3JhdGVfZm9saW9zLCBzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMzMi1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MzMzOnN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMzNC1cXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTM2MC1cXHQvKiBNaWdyYXRlIGZvbGlvcyBzZWxlY3RlZCBmb3IgbWlncmF0aW9uICovXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjM2MTpcXHRucl9taWdyYXRlZCArPSBfX2RhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzYyLVxcdFxcdFxcdFxcdTAwMjZtaWdyYXRlX2ZvbGlvcywgcGdkYXQsIHRhcmdldF9uaWQpO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTM4NT11bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDA5LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo0MTA6XFx0XFx0bnJfbWlncmF0ZWQgKz0gZGFtb25fbWlncmF0ZV9mb2xpb19saXN0KFxcdTAwMjZub2RlX2ZvbGlvX2xpc3QsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQxMS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBOT0RFX0RBVEEobmlkKSxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy00MTUtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjQxNjpcXHRucl9taWdyYXRlZCArPSBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3QoXFx1MDAyNm5vZGVfZm9saW9fbGlzdCxcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDE3LVxcdFxcdFxcdFxcdFxcdFxcdCAgIE5PREVfREFUQShuaWQpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyOS40Mjk5MzY2OTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTg5NDg1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9wYV9taWdyYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL3BhZGRyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vcGFkZHIuYz0zMTk9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfZGVhY3RpdmF0ZV9wYWdlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbi0tXFxubW0vZGFtb24vcGFkZHIuYy0zMjUtXFxubW0vZGFtb24vcGFkZHIuYzozMjY6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL3BhZGRyLmMtMzI3LVxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkcl91bml0LCBzdHJ1Y3QgZGFtb3MgKnMsXFxuLS1cXG5tbS9kYW1vbi9wYWRkci5jPTM4OT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vcGFkZHIuYy00MDUtXFx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XFxubW0vZGFtb24vcGFkZHIuYzo0MDY6XFx0XFx0cmV0dXJuIGRhbW9uX3BhX21pZ3JhdGUociwgYXVuaXQsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XFxubW0vZGFtb24vcGFkZHIuYy00MDctXFx0Y2FzZSBEQU1PU19TVEFUOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyOS41NDk4MzgxNjVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODAwMDk2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi92YWRkci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3ZhZGRyLmM9NTc0PXN0cnVjdCBkYW1vc192YV9taWdyYXRlX3ByaXZhdGUge1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYy01ODQtICovXFxubW0vZGFtb24vdmFkZHIuYzo1ODU6c3RhdGljIHZvaWQgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoc3RydWN0IGZvbGlvICpmb2xpbyxcXG5tbS9kYW1vbi92YWRkci5jLTU4Ni1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYz02MzU9c3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTY1OC1cXHRcXHRcXHRnb3RvIGh1Z2Vfb3V0O1xcbm1tL2RhbW9uL3ZhZGRyLmM6NjU5OlxcdFxcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVxcdTAwM2V2bWEsIGFkZHIsIGRlc3RzLFxcbm1tL2RhbW9uL3ZhZGRyLmMtNjYwLVxcdFxcdFxcdFxcdG1pZ3JhdGlvbl9saXN0cyk7XFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTY4MS1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi92YWRkci5jOjY4MjpcXHRcXHRkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChmb2xpbywgd2Fsay1cXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcXG5tbS9kYW1vbi92YWRkci5jLTY4My1cXHRcXHRcXHRcXHRtaWdyYXRpb25fbGlzdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyOS43MDc4NDUzOTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwNjEyMjk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJZGVudGlmeWluZyBFbnRyeSBQb2ludHMgZm9yIE1pZ3JhdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSB0aHJlZSBtaWdyYXRpb24gZnVuY3Rpb25zOiBgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0YCwgYGRhbW9uX3BhX21pZ3JhdGVgLCBhbmQgYGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkYC4gVGhlIGNvZGUgY2xlYXJseSBtYXJrcyB0aGVtIGFzIGBzdGF0aWNgLCB3aGljaCBtZWFucyB0aGV5J3JlIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmUgKmFyZSogdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlc2UgZnVuY3Rpb25zP1wiIFdlIG5lZWQgdG8gdHJhY2UgdGhlaXIgY2FsbCBjaGFpbnMuXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gYGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdGAgaXMgY2FsbGVkIGJ5IGBkYW1vbl9taWdyYXRlX3BhZ2VzYC4gRWFzeSBlbm91Z2guIFRoZW4sIGBkYW1vbl9wYV9taWdyYXRlYCBpcyBjYWxsZWQgYnkgYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWAuIEdvdCBpdC4gTm93LCBmb3IgYGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkYCwgaXQncyBjYWxsZWQgYnkgYGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5YCwgYnV0IHRoYXQgKml0c2VsZiogaXMgc3RhdGljLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIHdoYXQgY2FsbHMgKnRoYXQqIGZ1bmN0aW9uLCBgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnlgPyBXZSBuZWVkIHRvIGtlZXAgZGlnZ2luZyB0byBmaW5kIHRoZSB1bHRpbWF0ZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBmdW5jdGlvbidzIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTYzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MzQuMTEzOTcxODU3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTEwMzAyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vdmFkZHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi92YWRkci5jPTU4NT1zdGF0aWMgdm9pZCBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy02MzQtXFxubW0vZGFtb24vdmFkZHIuYzo2MzU6c3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxubW0vZGFtb24vdmFkZHIuYy02MzYtXFx0XFx0dW5zaWduZWQgbG9uZyBuZXh0LCBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9NzM4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03NTAtXFx0c3RydWN0IG1tX3dhbGtfb3BzIHdhbGtfb3BzID0ge1xcbm1tL2RhbW9uL3ZhZGRyLmM6NzUxOlxcdFxcdC5wbWRfZW50cnkgPSBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeSxcXG5tbS9kYW1vbi92YWRkci5jLTc1Mi1cXHRcXHQucHRlX2VudHJ5ID0gTlVMTCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MzQuMzA1MDA4OTM3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjcyMjE2NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkFuYWx5emluZyB0aGUgU3RhdGljIE5hdHVyZSBvZiBgZGFtb3NfdmFfbWlncmF0ZWAqKlxuXG5Pa2F5LCBzbyBgZGFtb3NfdmFfbWlncmF0ZWAgaXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGEgZmV3IHRoaW5ncywgYnV0IGJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMsIGxldCdzIHRha2UgYSBtZXRob2RpY2FsIGFwcHJvYWNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgaXQncyBzdGF0aWMg4oCTIHdoYXQgZXhhY3RseSAqY2FsbHMqIGBkYW1vc192YV9taWdyYXRlYD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlLiBTdGF0aWMgZnVuY3Rpb25zIGhhdmUgdGhlaXIgc3BlY2lmaWMgaW1wbGljYXRpb25zIHJlZ2FyZGluZyBzY29wZSwgbGlmZWN5Y2xlLCBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cywgYW5kIHRoYXQgaGFzIGEgZGlyZWN0IGluZmx1ZW5jZSBvbiBob3cgaXQncyB1c2VkIHdpdGhpbiBhIG1vZHVsZSwgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzLiBTbywgdGhlIGludmVzdGlnYXRpb24gYmVnaW5zOiBJIG5lZWQgdG8gaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzLiBGcm9tIHRoZXJlLCBJIGNhbiB1bmRlcnN0YW5kIGl0cyBwbGFjZSBpbiB0aGlzIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjM3LjM3MjI0NDg4OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTcxODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX3ZhX21pZ3JhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vdmFkZHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi92YWRkci5jPTU0NT1zdGF0aWMgYm9vbCBkYW1vc192YV9maWx0ZXJfb3V0KHN0cnVjdCBkYW1vcyAqc2NoZW1lLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy01NzMtXFxubW0vZGFtb24vdmFkZHIuYzo1NzQ6c3RydWN0IGRhbW9zX3ZhX21pZ3JhdGVfcHJpdmF0ZSB7XFxubW0vZGFtb24vdmFkZHIuYy01NzUtXFx0c3RydWN0IGxpc3RfaGVhZCAqbWlncmF0aW9uX2xpc3RzO1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYy01ODQtICovXFxubW0vZGFtb24vdmFkZHIuYzo1ODU6c3RhdGljIHZvaWQgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoc3RydWN0IGZvbGlvICpmb2xpbyxcXG5tbS9kYW1vbi92YWRkci5jLTU4Ni1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy02MzQtXFxubW0vZGFtb24vdmFkZHIuYzo2MzU6c3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxubW0vZGFtb24vdmFkZHIuYy02MzYtXFx0XFx0dW5zaWduZWQgbG9uZyBuZXh0LCBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG5tbS9kYW1vbi92YWRkci5jLTYzNy17XFxubW0vZGFtb24vdmFkZHIuYzo2Mzg6XFx0c3RydWN0IGRhbW9zX3ZhX21pZ3JhdGVfcHJpdmF0ZSAqcHJpdiA9IHdhbGstXFx1MDAzZXByaXZhdGU7XFxubW0vZGFtb24vdmFkZHIuYy02MzktXFx0c3RydWN0IGxpc3RfaGVhZCAqbWlncmF0aW9uX2xpc3RzID0gcHJpdi1cXHUwMDNlbWlncmF0aW9uX2xpc3RzO1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYy02NTgtXFx0XFx0XFx0Z290byBodWdlX291dDtcXG5tbS9kYW1vbi92YWRkci5jOjY1OTpcXHRcXHRkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChmb2xpbywgd2Fsay1cXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcXG5tbS9kYW1vbi92YWRkci5jLTY2MC1cXHRcXHRcXHRcXHRtaWdyYXRpb25fbGlzdHMpO1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYy02ODEtXFx0XFx0XFx0Y29udGludWU7XFxubW0vZGFtb24vdmFkZHIuYzo2ODI6XFx0XFx0ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstXFx1MDAzZXZtYSwgYWRkciwgZGVzdHMsXFxubW0vZGFtb24vdmFkZHIuYy02ODMtXFx0XFx0XFx0XFx0bWlncmF0aW9uX2xpc3RzKTtcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9NzE5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX21hZHZpc2Uoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03MzctXFxubW0vZGFtb24vdmFkZHIuYzo3Mzg6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXFxubW0vZGFtb24vdmFkZHIuYy03MzktXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03NDItXFx0TElTVF9IRUFEKGZvbGlvX2xpc3QpO1xcbm1tL2RhbW9uL3ZhZGRyLmM6NzQzOlxcdHN0cnVjdCBkYW1vc192YV9taWdyYXRlX3ByaXZhdGUgcHJpdjtcXG5tbS9kYW1vbi92YWRkci5jLTc0NC1cXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtNzUwLVxcdHN0cnVjdCBtbV93YWxrX29wcyB3YWxrX29wcyA9IHtcXG5tbS9kYW1vbi92YWRkci5jOjc1MTpcXHRcXHQucG1kX2VudHJ5ID0gZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnksXFxubW0vZGFtb24vdmFkZHIuYy03NTItXFx0XFx0LnB0ZV9lbnRyeSA9IE5VTEwsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTg3OT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy05MDUtXFx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XFxubW0vZGFtb24vdmFkZHIuYzo5MDY6XFx0XFx0cmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG5tbS9kYW1vbi92YWRkci5jLTkwNy1cXHRjYXNlIERBTU9TX1NUQVQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjM3LjUxNjgyNTk3MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE0NjE3ODg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIOKAkyB0aGV5J3JlIHNjb3BlZCBpbnRlcm5hbGx5LCBidXQgdGhleSBjYW4gc3RpbGwgaW50ZXJhY3Qgd2l0aCBnbG9iYWwgb3Igc3RhdGljIGRhdGEuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQuXG5cbk15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGlkZW50aWZ5ICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UuIEknbGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gc2VlIHRoZSBjYWxsIGdyYXBoLiBJZGVudGlmeWluZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IOKAkyB0aGUgcmVhc29ucyBmb3IgaXRzIGludm9jYXRpb24sIHRoZSBkYXRhIGJlaW5nIHBhc3NlZCBpbiwgYW5kIHVsdGltYXRlbHksIGl0cyBvdmVyYWxsIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHRzIHdpbGwgYWxsb3cgbWUgdG8gZ3Jhc3AgdGhlIGludGVudCBiZWhpbmQgdGhlIHN0YXRpYyBuYXR1cmUuIEkgc3VzcGVjdCBpdCdzIGNyaXRpY2FsIHRvIGEgc3BlY2lmaWMgbW9kdWxlIG9yIGNvbXBvbmVudCBhbmQgSSBtdXN0IGRldGVybWluZSBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVyIGZ1bmN0aW9ucy4gSSdsbCBnZXQgdG8gd29yayBhbmQgdHJhY2UgdGhvc2UgY2FsbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo0MC45MzE0NDgxMDVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTE2Mjc2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl92YV9hcHBseV9zY2hlbWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vdmFkZHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi92YWRkci5jPTg1ND1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtODc4LVxcbm1tL2RhbW9uL3ZhZGRyLmM6ODc5OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxubW0vZGFtb24vdmFkZHIuYy04ODAtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9OTM3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3ZhX2luaXRjYWxsKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTk0Ni1cXHRcXHQuY2xlYW51cF90YXJnZXQgPSBkYW1vbl92YV9jbGVhbnVwX3RhcmdldCxcXG5tbS9kYW1vbi92YWRkci5jOjk0NzpcXHRcXHQuYXBwbHlfc2NoZW1lID0gZGFtb25fdmFfYXBwbHlfc2NoZW1lLFxcbm1tL2RhbW9uL3ZhZGRyLmMtOTQ4LVxcdFxcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fdmFfc2NoZW1lX3Njb3JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo0MS4wODA2MTYzOTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMzYwNTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgSSdtIHRoaW5raW5nIGhlcmUuLi5cblxuKipEZWNvbnN0cnVjdGluZyBEYW1vbidzIEFwcGx5IFNjaGVtZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBob3cgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAgYW5kIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgIGFyZSBiZWluZyB1c2VkLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOyB0aGV5J3JlIGFzc2lnbmVkIHRvIHRoZSBgLmFwcGx5X3NjaGVtZWAgYXR0cmlidXRlIG9mIGBkYW1vbl9vcGVyYXRpb25zYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0ZXJtcyBvZiB0aGUgdXN1YWwgRGFtb24gaW1wbGVtZW50YXRpb24g4oCTIHlvdSdkIGV4cGVjdCBkaWZmZXJlbnQgc2NoZW1lcyB0byBiZSBhcHBsaWVkIGluIGRpZmZlcmVudCBjb250ZXh0cywgdmlydHVhbCBhZGRyZXNzIHNwYWNlIHZzLiBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuXG5Ob3csIG15IGN1cmlvc2l0eSBpcyBwaXF1ZWQuIFRoZSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGlzIGAuYXBwbHlfc2NoZW1lYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBmbG93IGFuZCB0aGUgc3BlY2lmaWMgc2NlbmFyaW9zIHdoZXJlIHRoZXNlIHNjaGVtZXMgZ2V0IGFwcGxpZWQuIEtub3dpbmcgdGhlIGNvbnRleHRzIHdpbGwgZ2l2ZSBpbnNpZ2h0IGludG8gaG93IHRoZXNlIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgYXJlIGludm9rZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCB0cmFjZSB0aG9zZSBmdW5jdGlvbiBjYWxscy4gTGV0J3Mgc2VlIHdoYXQgdGhlIHN0YWNrIGxvb2tzIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMzQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo0NC41OTQyMjQ5NTVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDU3Njc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJcXFxcLmFwcGx5X3NjaGVtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI1NzI9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjYwOC1cXG5tbS9kYW1vbi9jb3JlLmM6MjYwOTpcXHRpZiAoYy1cXHUwMDNlb3BzLmFwcGx5X3NjaGVtZSkge1xcbm1tL2RhbW9uL2NvcmUuYy0yNjEwLVxcdFxcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjYyMi1cXHRcXHRcXHRcXHRkYW1vbl9ucl9yZWdpb25zKHQpLCBkb190cmFjZSk7XFxubW0vZGFtb24vY29yZS5jOjI2MjM6XFx0XFx0c3pfYXBwbGllZCA9IGMtXFx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcXG5tbS9kYW1vbi9jb3JlLmMtMjYyNC1cXHRcXHRcXHRcXHRcXHUwMDI2c3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xcbi0tXFxubW0vZGFtb24vcGFkZHIuYz00Mzc9c3RhdGljIGludCBfX2luaXQgZGFtb25fcGFfaW5pdGNhbGwodm9pZClcXG4tLVxcbm1tL2RhbW9uL3BhZGRyLmMtNDQ2LVxcdFxcdC50YXJnZXRfdmFsaWQgPSBOVUxMLFxcbm1tL2RhbW9uL3BhZGRyLmM6NDQ3OlxcdFxcdC5hcHBseV9zY2hlbWUgPSBkYW1vbl9wYV9hcHBseV9zY2hlbWUsXFxubW0vZGFtb24vcGFkZHIuYy00NDgtXFx0XFx0LmdldF9zY2hlbWVfc2NvcmUgPSBkYW1vbl9wYV9zY2hlbWVfc2NvcmUsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTkzNz1zdGF0aWMgaW50IF9faW5pdCBkYW1vbl92YV9pbml0Y2FsbCh2b2lkKVxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy05NDYtXFx0XFx0LmNsZWFudXBfdGFyZ2V0ID0gZGFtb25fdmFfY2xlYW51cF90YXJnZXQsXFxubW0vZGFtb24vdmFkZHIuYzo5NDc6XFx0XFx0LmFwcGx5X3NjaGVtZSA9IGRhbW9uX3ZhX2FwcGx5X3NjaGVtZSxcXG5tbS9kYW1vbi92YWRkci5jLTk0OC1cXHRcXHQuZ2V0X3NjaGVtZV9zY29yZSA9IGRhbW9uX3ZhX3NjaGVtZV9zY29yZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6NDQuOTg0ODA3NDg0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTg2ODQ1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERBTU9OIEV4ZWN1dGlvbiBGbG93KipcblxuQWxyaWdodCwgc28gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgaXMgZGVmaW5pdGVseSB0aGUgZHJpdmVyIG9mIHRoZSBzaG93LCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBhY3R1YWxseSAqZG9lcyogYnkgdHJhY2luZyBpdHMgY2FsbHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHpvb20gaW4gb24gYGRhbW9zX2FwcGx5X3NjaGVtZWAuIFRoaXMgZnVuY3Rpb24gaXMgcGl2b3RhbDsgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGFjdHVhbCBleGVjdXRpb24gcGF0aC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBTdGF0aWMgb25lcyBhcmUgdXN1YWxseSBqdXN0IHNldHVwIG9yIGludGVybmFsIGRldGFpbHMgSSdtIHByb2JhYmx5IG5vdCBhcyBpbnRlcmVzdGVkIGluIGF0IHRoZSBtb21lbnQuIEkgd2FudCB0aGUgbWVhdHksIGR5bmFtaWMgcGFydHMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBzeXN0ZW0uIE15IGdvYWwgaXMgdG8gbWFwIG91dCBob3cgREFNT04gaW50ZXJhY3RzIHdpdGggc3lzZnMgb3IsIGluZGVlZCwgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDc4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6NDguMjgzNDk1MDg1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzA4ODczMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2RhbW9uZF9hcHBseV9zY2hlbWVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MzIwMz1zdGF0aWMgdm9pZCBkYW1vc190cmFjZV9zdGF0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjE4LVxcbm1tL2RhbW9uL2NvcmUuYzozMjE5OnN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjIwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNzUyPXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM4MjQtXFx0XFx0LypcXG5tbS9kYW1vbi9jb3JlLmM6MzgyNTpcXHRcXHQgKiBkbyBrZGFtb25kX2NhbGwoKSBhbmQga2RhbW9uZF9hcHBseV9zY2hlbWVzKCkgYWZ0ZXJcXG5tbS9kYW1vbi9jb3JlLmMtMzgyNi1cXHRcXHQgKiBrZGFtb25kX21lcmdlX3JlZ2lvbnMoKSBpZiBwb3NzaWJsZSwgdG8gcmVkdWNlIG92ZXJoZWFkXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzgzOS1cXHRcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmN0eC1cXHUwMDNlc2NoZW1lcykpXFxubW0vZGFtb24vY29yZS5jOjM4NDA6XFx0XFx0XFx0a2RhbW9uZF9hcHBseV9zY2hlbWVzKGN0eCk7XFxubW0vZGFtb24vY29yZS5jLTM4NDEtXFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo0OC40NTQzOTE0MjZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyMzM4NzYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgREFNT04gVGhyZWFkIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIGBrZGFtb25kX2ZuYCBpcyB0aGUgY29yZSB0aHJlYWQgZnVuY3Rpb24gZm9yIERBTU9OLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgaGVhcnQgb2YgdGhlIERBTU9OIHByb2Nlc3MuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG9uIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHBhZ2UgbWFuYWdlbWVudC4gVGhlIG9idmlvdXMgY2FuZGlkYXRlcyBhcmUgYGRhbW9uX21pZ3JhdGVfcGFnZXNgLCBgZGFtb25fcGFfYXBwbHlfc2NoZW1lYCwgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAsIGFuZCwgb2YgY291cnNlLCB0aGUgdGhyZWFkIGZ1bmN0aW9uIGl0c2VsZiwgYGtkYW1vbmRfZm5gLlxuXG5IbW0sIHdhaXQgYSBzZWNvbmQuIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpc24ndCBkZWNsYXJlZCBzdGF0aWMuIFRoYXQgcmFpc2VzIGEgZmxhZy4gSWYgaXQncyBub3Qgc3RhdGljLCBpdCBzdWdnZXN0cyB0aGF0IGl0IG1pZ2h0IGJlIGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBvdXRzaWRlIG9mIERBTU9OJ3MgY29yZSBtb2R1bGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBEQU1PTiBjb3JlIGxvZ2ljIGJldHRlci4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBhbmQgc2VlIHdoYXQgaXQncyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo1Mi41Nzc3ODE4ODJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTc5MzA3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9taWdyYXRlX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9vcHMtY29tbW9uLmM9MzMzPXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzg0LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzozODU6dW5zaWduZWQgbG9uZyBkYW1vbl9taWdyYXRlX3BhZ2VzKHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsIGludCB0YXJnZXRfbmlkKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0zODYte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTIwPWJvb2wgZGFtb3NfZm9saW9fZmlsdGVyX21hdGNoKHN0cnVjdCBkYW1vc19maWx0ZXIgKmZpbHRlciwgc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjIxOnVuc2lnbmVkIGxvbmcgZGFtb25fbWlncmF0ZV9wYWdlcyhzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LCBpbnQgdGFyZ2V0X25pZCk7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTIyLVxcbi0tXFxubW0vZGFtb24vcGFkZHIuYz0zMjY9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbi0tXFxubW0vZGFtb24vcGFkZHIuYy0zNTUtXFx0fVxcbm1tL2RhbW9uL3BhZGRyLmM6MzU2OlxcdGFwcGxpZWQgPSBkYW1vbl9taWdyYXRlX3BhZ2VzKFxcdTAwMjZmb2xpb19saXN0LCBzLVxcdTAwM2V0YXJnZXRfbmlkKTtcXG5tbS9kYW1vbi9wYWRkci5jLTM1Ny1cXHRjb25kX3Jlc2NoZWQoKTtcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9NzM4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03NzQtXFx0XFx0bmlkID0gdXNlX3RhcmdldF9uaWQgPyBzLVxcdTAwM2V0YXJnZXRfbmlkIDogZGVzdHMtXFx1MDAzZW5vZGVfaWRfYXJyW2ldO1xcbm1tL2RhbW9uL3ZhZGRyLmM6Nzc1OlxcdFxcdGFwcGxpZWQgKz0gZGFtb25fbWlncmF0ZV9wYWdlcyhcXHUwMDI2cHJpdi5taWdyYXRpb25fbGlzdHNbaV0sIG5pZCk7XFxubW0vZGFtb24vdmFkZHIuYy03NzYtXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjUyLjcyOTU4MTk1M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjExOTkzMzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIEtlcm5lbCBUaHJlYWQgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGxvb2tzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgREFNT04gbWlncmF0aW9uIHByb2Nlc3MuIFdhaXQsIGhhbmcgb24sIEkgc2VlIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgIGFuZCBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBkZWZpbmVkIGFzIHN0YXRpYyBidXQgdGhleSdyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgc28gdGhleSBjYW4gYmUgdHJpZ2dlcmVkIHNvbWVob3cuIEFuZCB0aGVuIEkgc3BvdCBgZGFtb3NfYXBwbHlfc2NoZW1lYCBpcyBhbHNvIHN0YXRpYyAtIGludGVyZXN0aW5nLiBOb3csIG15IG5leHQgbW92ZSBpcyB0byBzZWUgaWYgYW55IG9mIHRoZXNlIGFyZSBjb25uZWN0ZWQgdG8gc3lzZnMgZW50cnkgcG9pbnRzIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvbnRyb2wgbGl2ZXMuXG5cblJpZ2h0LCBleGVjdXRpb24gaXRzZWxmIGhhcHBlbnMgd2l0aGluIGBrZGFtb25kX2ZuYCwgd2hpY2ggaXMgYSBrZXJuZWwgdGhyZWFkLiBTbywgdGhhdCB0aHJlYWQgZnVuY3Rpb24gaXMgYW5vdGhlciBnb29kIGZvY3VzIHN5bWJvbCwgYnV0LCB5b3Uga25vdywgaXQncyBhIHRocmVhZC4gTGV0IG1lIHRoaW5rLCBhcmUgdGhlcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcz8gSSBzaG91bGQgY2hlY2sgYG1tL2RhbW9uL3N5c2ZzLmNgIOKAkyB0aGF0J3MgcHJvYmFibHkgd2hlcmUgdGhlIERBTU9OIHNldHVwIGFuZCBpbml0aWFsaXNhdGlvbiBoYXBwZW4uIFRoYXQncyBteSBuZXh0IGRlc3RpbmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQxMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo1Ni45NDE1Nzg5ODVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDI2NjEzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9zeXNmcy5jPTIyMjA9c3RhdGljIGludCBkYW1vbl9zeXNmc19yZXBlYXRfY2FsbF9mbih2b2lkICpkYXRhKVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMjQyLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjI0MzpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXFxubW0vZGFtb24vc3lzZnMuYy0yMjQ0LXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjI4OD1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMjk1LVxcdCAqIERBTU9OLCB3ZSBmcmVlIGtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCBpbiBuZXh0XFxubW0vZGFtb24vc3lzZnMuYzoyMjk2OlxcdCAqIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oKSwgb3Iga2RhbW9uZHNfbnJfc3RvcmUoKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI5Ny1cXHQgKi9cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjM2ND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMzcxLVxcdGNhc2UgREFNT05fU1lTRlNfQ01EX09OOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3MjpcXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbihrZGFtb25kKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzMtXFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfT0ZGOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo1Ny4xMDU4NTA3NjZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1MzA4ODM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIFN5c2ZzIEhhbmRsaW5nIGZvciBEQU1PTioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBEQU1PTiBpbnRlcmFjdHMgd2l0aCBzeXNmcy4gVGhlIGNydWNpYWwgZW50cnkgcG9pbnQgZm9yIHRoaXMsIGZyb20gd2hhdCBJJ20gcmVhZGluZywgaXMgdGhlIGBkYW1vbl9zeXNmc19oYW5kbGVfY21kYCBmdW5jdGlvbi4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgYWN0aW9uIHN0YXJ0cyB3aGVuIGEgdXNlciBhdHRlbXB0cyB0byB3cml0ZSB0byBhIHN5c2ZzIGZpbGUgYXNzb2NpYXRlZCB3aXRoIERBTU9OLiBOYXR1cmFsbHksIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgaGFwcGVucyB3aXRoaW4gYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZmxvdyBhbmQgZmlndXJlIG91dCBob3cgY29tbWFuZHMgYXJlIGludGVycHJldGVkIGFuZCBleGVjdXRlZC4gVGhpcyBpcyB0aGUgY29yZSBvZiBob3cgdXNlcnMgY29uZmlndXJlIGFuZCBpbnRlcmFjdCB3aXRoIERBTU9OLCBzbyBpdCB3YXJyYW50cyBhIHRob3JvdWdoIGV4YW1pbmF0aW9uLiBMZXQncyBzZWUgd2hhdCdzIHVuZGVyIHRoZSBob29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjIzMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjAwLjg1ODk0MjI5MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwODkzOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MjMzND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnMoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTUtLypcXG5tbS9kYW1vbi9zeXNmcy5jOjIzNTY6ICogZGFtb25fc3lzZnNfaGFuZGxlX2NtZCgpIC0gSGFuZGxlIGEgY29tbWFuZCBmb3IgYSBzcGVjaWZpYyBrZGFtb25kLlxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM1Ny0gKiBAY21kOlxcdFRoZSBjb21tYW5kIHRvIGhhbmRsZS5cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2My0gKi9cXG5tbS9kYW1vbi9zeXNmcy5jOjIzNjQ6c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjUtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTI0MDQ9c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjQxNS1cXHRcXHRpZiAoc3lzZnNfc3RyZXEoYnVmLCBkYW1vbl9zeXNmc19jbWRfc3Ryc1tjbWRdKSkge1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjQxNjpcXHRcXHRcXHRyZXQgPSBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGNtZCwga2RhbW9uZCk7XFxubW0vZGFtb24vc3lzZnMuYy0yNDE3LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTowMC45OTk4NDIzMDRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2MjEyNjE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGlnZ2luZyBpbnRvIERBTU9OJ3MgU3lzZnMgSW50ZXJmYWNlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGhvdyBEQU1PTiBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzZnMuIEkndmUgZ290IGBzdGF0ZV9zdG9yZWAgaW4gbWluZCDigJMgdGhhdCdzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBzeXNmcyBmaWxlcy4gQnV0LCBub3cgSSdtIHJlbWVtYmVyaW5nIHRoYXQgYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIGlzIGRlY2xhcmVkIGFzICpzdGF0aWMqLiBUaGF04oCZcyBhIGJpdCBvZiBhIHJvYWRibG9jayBpZiBJ4oCZbSB0cnlpbmcgdG8gdHJhY2UgdGhlIGNvbW1hbmQgcHJvY2Vzc2luZyBmbG93LlxuXG5Pa2F5LCBubyBwcm9ibGVtLiBMZXQncyBmaW5kIGFueSBvdGhlciBpbnRlcmVzdGluZyBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL3N5c2ZzLmNgIHdoaWNoICphcmVuJ3QqIGRlY2xhcmVkIGFzIHN0YXRpYyBhbmQgc2VlIHdoYXQgdGhleSB0ZWxsIHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgzNSwiT3V0cHV0VG9rZW5zIjo2NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjA0LjU2MTk3MTU2MVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg3Njg3NTI0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vc3lzZnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6MDQuODQ5NjY2NjQ1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjM5MDgyOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgZ2VhcmVkIHRvd2FyZHMgYSB1c2VyIHdobyBrbm93cyB0aGVpciB3YXkgYXJvdW5kIHN5c3RlbS1sZXZlbCBjb2RlOlxuXG4qKkFuYWx5emluZyBgbW0vZGFtb24vc3lzZnMuY2AgLSBRdWljayBNZXRob2QqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gaW4gYG1tL2RhbW9uL3N5c2ZzLmNgLiBJIGNvdWxkIGRpdmUgcmlnaHQgaW4gd2l0aCBgcmVhZC1maWxlYCBhbmQganVzdCBzdGFydCBzY3JvbGxpbmcgdGhyb3VnaCB0aGUgY29kZSwgYnV0IEknbSB0aGlua2luZyBhIGZhc3RlciwgbW9yZSB0YXJnZXRlZCBhcHByb2FjaCBtaWdodCBiZSBiZXR0ZXIuIExldCdzIHNlZS4uLiBhIHF1aWNrIGBncmVwcGVyYCBzY2FuIGlzIHByb2JhYmx5IHRoZSB3YXkgdG8gZ28gaGVyZS4gSSdsbCB6ZXJvIGluIG9uIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuIFNvLCBsZXQncyB1c2UgYGdyZXBwZXJgIHdpdGggdGhlIHBhdHRlcm5zIGBeaW50IGAgb3IgYF52b2lkIGAgdG8gZ3JhYiBhbGwgdGhlIGxpbmVzIHRoYXQgZGVmaW5lIGZ1bmN0aW9ucyByZXR1cm5pbmcgYW4gYGludGAgb3IgYHZvaWRgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgaW50ZXJmYWNlIGFuZCBzdHJ1Y3R1cmUsIHdpdGhvdXQgZ2V0dGluZyBib2dnZWQgZG93biBpbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyByaWdodCBhd2F5LiBUaGF0IHNob3VsZCBxdWlja2x5IGdldCBtZSBvcmllbnRlZCBpbiB0aGlzIGZpbGUuIEl0J3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBzdGFydCwgZm9yIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMTI2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6MDguMTEzNTc5ODA4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTk1MDU0MDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjA4LjQ3MzA5Njc3OFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjIyOTkxNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipTdGF0aWMgRGVjbGFyYXRpb25zIGFuZCBGdW5jdGlvbiBTY29wZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc29tZXRoaW5nIGp1bXBzIG91dCBhdCBtZTogYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBObyBiaWcgZGVhbCwgcHJvYmFibHkgZGVzaWduZWQgdG8gYmUgYW4gaW50ZXJuYWwgaGVscGVyLCBvciBwcmV2ZW50IGFjY2lkZW50YWwgbmFtZSBjb2xsaXNpb25zIHdpdGggb3RoZXIgZnVuY3Rpb25zLiBCdXQgaXQgZG9lcyByYWlzZSBhIHF1ZXN0aW9uIOKAkyBhcmUgdGhlcmUgc2ltaWxhciBkZXNpZ24gY2hvaWNlcyBlbHNld2hlcmU/IEl0IG1ha2VzIG1lIHRoaW5rIEkgc2hvdWxkIHZlcmlmeSBob3cgaXQgaXMgdXNlZCBhbmQgaWYgdGhlIGRldmVsb3BlciBpbnRlbmRlZCBpdCB0byBiZSBzbyBsaW1pdGVkLlxuXG5NeSBuZXh0IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBkYW1vbl9taWdyYXRlX3BhZ2VzYC4gQWgsIGl0J3Mgbm90IHN0YXRpYy4gVGhhdCdzIGdvb2QsIHN1Z2dlc3RzIGl0J3MgbGlrZWx5IGEgZnVuY3Rpb24gaW50ZW5kZWQgZm9yIGJyb2FkZXIgdXNlIHdpdGhpbiB0aGUgbGFyZ2VyIERhbW9uIGZyYW1ld29yaywgcG90ZW50aWFsbHkgY2FsbGVkIGZyb20gb3RoZXIgbW9kdWxlcyBvciBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0IGRpZmZlcmVuY2UgYXMgSSB0cmFjZSB0aHJvdWdoIHRoZSBjYWxsaW5nIGhpZXJhcmNoeS4gVGhhdCdzIGFuIGltcG9ydGFudCBkZXNpZ24gZWxlbWVudCB0byBrZWVwIGluIG1pbmQsIHN0YXRpYyB2cyBub24tc3RhdGljLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGRhbW9uX3N0YXJ0YC4gTGV0IG1lIHNlZSwgaG93IGlzIHRoYXQgZGVjbGFyZWQ/IFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCB2aXNpYmlsaXR5IG9mIHRoZXNlIGtleSBmdW5jdGlvbnMgd2l0aGluIHRoZSBEYW1vbiBzdWJzeXN0ZW0uIFRoZSBpbnRlcnBsYXkgb2YgdGhvc2UgdGhyZWUgZnVuY3Rpb25zIGFuZCBhbnkgcG90ZW50aWFsIGNvdXBsaW5nIG9mIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDI4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6MTUuMDk2MDkyOTE4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg3MzY2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz0xMDEzPXN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAzOC0gKiBJbiBkZXRhaWwsIGFsbCBEQU1PTiBBUEkgY2FsbGVycyBkaXJlY3RseSBjYWxsIHRoaXMgZnVuY3Rpb24gZm9yIGluaXRpYWxcXG5tbS9kYW1vbi9jb3JlLmM6MTAzOTogKiBzZXR1cCBvZiBkYW1vbl9jdHggYmVmb3JlIGNhbGxpbmcgZGFtb25fc3RhcnQoKS4gIFNvbWUgb2YgdGhlIEFQSSBjYWxsZXJzXFxubW0vZGFtb24vY29yZS5jLTEwNDAtICogYWxzbyBpbmRpcmVjdGx5IGNhbGwgdGhpcyBmdW5jdGlvbiB2aWEgZGFtb25fY2FsbCgpIC1cXHUwMDNlIGRhbW9uX2NvbW1pdCgpIGZvclxcbi0tXFxubW0vZGFtb24vY29yZS5jPTE5MjU9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE5MjctLypcXG5tbS9kYW1vbi9jb3JlLmM6MTkyODogKiBfX2RhbW9uX3N0YXJ0KCkgLSBTdGFydHMgbW9uaXRvcmluZyB3aXRoIGdpdmVuIGNvbnRleHQuXFxubW0vZGFtb24vY29yZS5jLTE5MjktICogQGN0eDpcXHRtb25pdG9yaW5nIGNvbnRleHRcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTM0LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxOTM1OnN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTE5MzYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTE5NTc9c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE5NTktLyoqXFxubW0vZGFtb24vY29yZS5jOjE5NjA6ICogZGFtb25fc3RhcnQoKSAtIFN0YXJ0cyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXFxubW0vZGFtb24vY29yZS5jLTE5NjEtICogQGN0eHM6XFx0YW4gYXJyYXkgb2YgdGhlIHBvaW50ZXJzIGZvciBjb250ZXh0cyB0byBzdGFydCBtb25pdG9yaW5nXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2OC0gKiBAZXhjbHVzaXZlIGlzIHRydWUgYW5kIGEgZ3JvdXAgb2YgdGhyZWFkcyB0aGF0IGNyZWF0ZWQgYnkgb3RoZXJcXG5tbS9kYW1vbi9jb3JlLmM6MTk2OTogKiAnZGFtb25fc3RhcnQoKScgY2FsbCBpcyBjdXJyZW50bHkgcnVubmluZywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgYnV0XFxubW0vZGFtb24vY29yZS5jLTE5NzAtICogcmV0dXJucyAtRUJVU1kuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk3My0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTk3NDppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG5tbS9kYW1vbi9jb3JlLmMtMTk3NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk5OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfY3R4czsgaSsrKSB7XFxubW0vZGFtb24vY29yZS5jOjIwMDA6XFx0XFx0ZXJyID0gX19kYW1vbl9zdGFydChjdHhzW2ldKTtcXG5tbS9kYW1vbi9jb3JlLmMtMjAwMS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTIwNzA9aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDk3LSAqXFxubW0vZGFtb24vY29yZS5jOjIwOTg6ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRhbW9uX3N0YXJ0KCkgd2l0aCB0aGVcXG5tbS9kYW1vbi9jb3JlLmMtMjA5OS0gKiBAY3R4IGhhcyBzdWNjZWVkZWQuICBPdGhlcndpc2UsIHRoaXMgZnVuY3Rpb24gY291bGQgZmFsbCBpbnRvIGFuIGluZGVmaW5pdGVcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMTA2PWludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTUyLSAqXFxubW0vZGFtb24vY29yZS5jOjIxNTM6ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRhbW9uX3N0YXJ0KCkgd2l0aCB0aGVcXG5tbS9kYW1vbi9jb3JlLmMtMjE1NC0gKiBAY3R4IGhhcyBzdWNjZWVkZWQuICBPdGhlcndpc2UsIHRoaXMgZnVuY3Rpb24gY291bGQgZmFsbCBpbnRvIGFuIGluZGVmaW5pdGVcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9NDA4PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00MjAtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0MjE6XFx0ZXJyID0gZGFtb25fc3RhcnQoXFx1MDAyNmN0eCwgMSwgdHJ1ZSk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy00MjItXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYz0zMzE9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0zNDMtXFxubW0vZGFtb24vcmVjbGFpbS5jOjM0NDpcXHRlcnIgPSBkYW1vbl9zdGFydChcXHUwMDI2Y3R4LCAxLCB0cnVlKTtcXG5tbS9kYW1vbi9yZWNsYWltLmMtMzQ1LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9zdGF0LmM9MjAwPXN0YXRpYyBpbnQgZGFtb25fc3RhdF9zdGFydCh2b2lkKVxcbi0tXFxubW0vZGFtb24vc3RhdC5jLTIxMi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9zdGF0LmM6MjEzOlxcdGVyciA9IGRhbW9uX3N0YXJ0KFxcdTAwMjZkYW1vbl9zdGF0X2NvbnRleHQsIDEsIHRydWUpO1xcbm1tL2RhbW9uL3N0YXQuYy0yMTQtXFx0aWYgKGVycikge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMjQzPXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI2Ny1cXHR9XFxubW0vZGFtb24vc3lzZnMuYzoyMjY4OlxcdGVyciA9IGRhbW9uX3N0YXJ0KFxcdTAwMjZjdHgsIDEsIGZhbHNlKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIyNjktXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNToxNS4yNjQ4Mzg3MjlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1NDcxNTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGludGVybmFsczpcblxuKipEaXZpbmcgaW50byBEQU1PTiBPcGVyYXRpb25zKipcblxuUmlnaHQsIGBkYW1vbl9zdGFydGAgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZm9jdXNpbmcgb24gREFNT04ncyBjb3JlIGZ1bmN0aW9uYWxpdHkuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgb2Ygb3RoZXIga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0cyBvcGVyYXRpb24sIHBhcnRpY3VsYXJseSBgZGFtb25fbWlncmF0ZV9wYWdlc2AuIEl0J3MgZ29vZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBhIHJlZmVyZW5jZSBwb2ludC5cblxuTm93LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mIG90aGVyIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3aXRoaW4gdGhlIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgIGZpbGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBob3cgdGhlc2UgaW5pdGlhbCBmdW5jdGlvbnMgSSd2ZSBpZGVudGlmaWVkIHJlbGF0ZSB0byB0aGUgYnJvYWRlciBwaWN0dXJlLiBNeSBhaW0gaXMgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBmbG93LCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIGludmVzdGlnYXRpb24uIFRoaXMgaXMgYSBnb29kIHdheSB0byBzdGFydCBhIGRlZXBlciBkaXZlIGludG8gdGhlIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUxMTcsIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNToxOS4zMTk1NTc4NTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjM4Mzg0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vb3BzLWNvbW1vbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL29wcy1jb21tb24uYz0yND1zdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy00MS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NDI6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQzLXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy03Mi1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NzM6dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTc0LXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMDMtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjEwNDppbnQgZGFtb25faG90X3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwNS1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTQ5LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNTA6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTUxLVxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYz0xNTk9c3RhdGljIGJvb2wgZGFtb25fZm9saW9fbWtvbGRfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTczLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNzQ6dm9pZCBkYW1vbl9mb2xpb19ta29sZChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNzUte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTE5ND1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb195b3VuZ19vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMzUtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjIzNjpib29sIGRhbW9uX2ZvbGlvX3lvdW5nKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzNy17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjYwLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzoyNjE6Ym9vbCBkYW1vc19mb2xpb19maWx0ZXJfbWF0Y2goc3RydWN0IGRhbW9zX2ZpbHRlciAqZmlsdGVyLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yNjIte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTM4NT11bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDI0LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo0MjU6Ym9vbCBkYW1vc19vcHNfaGFzX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQyNi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjE5LjQ4NTk5NDcyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTg1MjE2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgbXkgdGhpbmtpbmcgcmlnaHQgbm93IGlzIGNlbnRlcmVkIG9uIGlkZW50aWZ5aW5nIHRoZSBiZXN0IHN5bWJvbCB0byBmb2N1cyBvbi4gKipDaG9vc2luZyB0aGUgUmlnaHQgRm9jdXMgU3ltYm9sIGZvciBBbmFseXNpcyoqIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBzZWVtcyBsaWtlIGEgc3Ryb25nIGNvbnRlbmRlciwgSSB0aGluayBpdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gTm93LCB3aGF0IGFib3V0IHNvbWUgb3RoZXIgc3ltYm9scz8gSG1tbSwgYGRhbW9zX2ZvbGlvX2ZpbHRlcl9tYXRjaGA/IFRoYXQncyBub3Qgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQW5kIHRoZW4gYGRhbW9uX3N0YXJ0YCwgdGhhdCdzIGFsc28gbm90IHN0YXRpYy4gSSdtIGFsc28gY29uc2lkZXJpbmcgYGtkYW1vbmRfZm5gLCB0aGF0IG9uZSAqaXMqIHN0YXRpYywgYnV0IGl0J3MgdGhlIG1haW4gdGhyZWFkIHNvIGNvdWxkIGJlIHNpZ25pZmljYW50LiBCdXQgaGFuZyBvbiwgZGlkbid0IEkganVzdCBzZWUgdGhhdCBgZGFtb25fbWlncmF0ZV9wYWdlc2AgZ2V0cyBjYWxsZWQgYnkgYGRhbW9uX3BhX21pZ3JhdGVgICphbmQqIGBkYW1vc192YV9taWdyYXRlYD8gVGhhdCBzdWdnZXN0cyBpdCdzIGEgY3JpdGljYWwgcG9pbnQgb2YgY29udmVyZ2VuY2UuIFllcywgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGF0IGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBhY3R1YWxseSBleHBvcnRlZCDigJMgdGhhdCdzIGEga2V5IHJlcXVpcmVtZW50LiBUaGF0IGlzIHRoZSBjb3JyZWN0IHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE2MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNToyMy45MDQ1MjA4WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDIzNDI5MDcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vb3BzLWNvbW1vbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNToyNC4xNDY4NzM3ODdaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExNDY0MzA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgTm9uLUV4cG9ydGVkLCBOb24tU3RhdGljIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGRlYWxpbmcgd2l0aCBhIGZ1bmN0aW9uIHRoYXQgaXNuJ3QgZXhwb3J0ZWQsIGJ1dCBpdCdzICphbHNvKiBub3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSWYgaXQncyBub3QgZXhwb3J0ZWQsIGl04oCZcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBvdXRzaWRlIHRoZSBtb2R1bGUsIGJ1dCBpZiBpdOKAmXMgbm9uLXN0YXRpYywgdGhlcmUncyBhIGdvb2QgY2hhbmNlIGl0J3MgYmVpbmcgYWNjZXNzZWQgd2l0aGluIHRoZSBmaWxlIGl0c2VsZiwgb3IgcG90ZW50aWFsbHkgdGhyb3VnaCBzb21lIGxlc3Mgb2J2aW91cyBtZWNoYW5pc20sIGxpa2UgYSBmdW5jdGlvbiBwb2ludGVyIG9yIGEgbWFjcm8gd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCwgaXMgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSAqaG93KiBpdCdzIGJlaW5nIHVzZWQuXG5cblRoZSBmYWN0IHRoYXQgdGhlIG5hbWUgaXNuJ3QgYXBwYXJlbnQgZnJvbSB0aGUgaGVhZGVycyBtZWFucyB0aGF0IGEgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgaXMgbmVjZXNzYXJ5LiBMZXQncyBzdGFydCB3aXRoIGBtbS9kYW1vbi92YWRkci5jYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBzdGFydGluZyBwb2ludCwgZ2l2ZW4gdGhlIG1lbnRpb24gb2YgdmlydHVhbCBhZGRyZXNzZXMgYW5kIHRoZSBEYW1vbSBzdWJzeXN0ZW0uIFRoYXQgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBpbW1lZGlhdGUgcGxhY2UgdG8gZmluZCBvdXQgd2hhdCBpdCdzIHVwIHRvLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSeKAmWxsIG5lZWQgdG8gbG9vayBmb3IgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBtZW50aW9uIG9mIHRoZSBmdW5jdGlvbiBhbmQgbG9vayBmb3IgdGhlIGNhbGxpbmcgY29udGV4dHMgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1NTksIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTozMC4yNjE1MjAzMTRaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTQ0NTc2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL3ZhZGRyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjMwLjQ0Mjk3NDkyNVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDgwMTEzNTA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBEQU1PTiBNaWdyYXRpb24gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgd2UgY2FuIGtlZXAgaXQgcmVsYXRpdmVseSBzaW1wbGUgaGVyZS4gSW5pdGlhbGx5LCBJIHdhcyBnb2luZyB0byBmb2N1cyBvbiBqdXN0IGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBhbmQgYGRhbW9uX3N0YXJ0YCwgYnV0IHRoZW4gSSBzYXcgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3RgLCBgZGFtb25fcGFfbWlncmF0ZWAsIGFuZCBgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGRgLiBBbGwgb2YgdGhlc2UgYXJlIGNsZWFybHkgdGllZCB0byBEQU1PTiBtaWdyYXRpb24sIHdoaWNoIGNoYW5nZXMgdGhpbmdzIGEgYml0LlxuXG5NeSB0aG91Z2h0IGlzIHRvIGRvIGEgcXVpY2sgc2NhbiBvZiBgbW0vZGFtb24vcGFkZHIuY2AgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBiZSBzdXJlIHRoZXJlIGlzbid0IGFueXRoaW5nIGVsc2UgYWZmZWN0ZWQsIGJ1dCBzaW5jZSBgZGFtb25fbWlncmF0ZV9wYWdlc2AgY2FsbHMgYGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdGAgZGlyZWN0bHksIGFuZCB0aGUgbGF0dGVyIGlzIG1vZGlmaWVkIGluIHRoZSBwYXRjaCwgbGV0J3MgdXNlIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBhcyBvdXIgcHJpbWFyeSBmb2N1cyBzeW1ib2wuIEl0J3Mgbm9uLXN0YXRpYywgd2hpY2ggaXMgY29udmVuaWVudC5cblxuTm93LCB3YWl0IGEgbWludXRlLCBgZGFtb25fcGFfbWlncmF0ZWAgYW5kIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAgYXJlIGFsc28gaW4gdGhlIG1peCEgVGhleSdyZSBjYWxsZWQgZHVyaW5nIHNjaGVtZSBhcHBsaWNhdGlvbiwgd2hpY2ggaXMgY3J1Y2lhbC4gTGV0J3Mgc2VlLi4uIHRoZSBzY2hlbWUgYXBwbGljYXRpb24gaGFwcGVucyB0aHJvdWdoIGBkYW1vc19hcHBseV9zY2hlbWVgLCB0aGVuIGBjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWVgLCB0aGVuIGVpdGhlciBgZGFtb25fcGFfYXBwbHlfc2NoZW1lYCBvciBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYC4gT2theSwgc28gYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWAgYW5kIGBkYW1vbl92YV9hcHBseV9zY2hlbWVgIHNvdW5kIGxpa2UgZ29vZCBjYW5kaWRhdGVzIHRvIGtlZXAgaW4gbWluZCwgZXZlbiB0aG91Z2ggdGhleSdyZSBzdGF0aWMuXG5cbkhtbW0sIGlzIHRoZXJlIGFueXRoaW5nIG5vbi1zdGF0aWMgdGhhdCB0cmlnZ2VycyBzY2hlbWUgYXBwbGljYXRpb24/IGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGlzIHN0YXRpYywgYGtkYW1vbmRfZm5gIGlzIGFsc28gc3RhdGljLCBzbyB0aGV5J3JlIG91dC4gT2ghIGBkYW1vbl9zdGFydGAgaXMgbm9uLXN0YXRpYyBhbmQgbGF1bmNoZXMgdGhlIGtkYW1vbmQgdGhyZWFkLiBSaWdodCwgc28gYGRhbW9uX3N0YXJ0YCBhbmQgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGJvdGggc2VlbSBzb2xpZCBhcyBvdXIgZm9jYWwgcG9pbnRzLlxuXG5PbmUgZmluYWwgdGhpbmcg4oCTIGxldCdzIHJldmlzaXQgdGhlIGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAuIEJ1dCwgd2hhdCBlbHNlPyBgREFNT05fU1lTRlNgIHdpbGwgcHJvYmFibHkgYmUgbmVlZGVkIHRvIHRyaWdnZXIgYWxsIHRoaXMgZnJvbSB1c2Vyc3BhY2UsIHNvIHdlJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gQW5kIHByb2JhYmx5IGBEQU1PTl9SRUNMQUlNYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBhcyB3ZWxsLCB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IHVzZSBpdC4gV2Ugd2lsbCBuZWVkIHRvIGNoZWNrIHdoYXQgYERBTU9OX1NZU0ZTYCBkZXBlbmRzIG9uLCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjk2NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTo0MS4yNDQxMTMxMDhaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NTg0MTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05fU1lTRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTU2PWNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxcbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy02OS1cXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxcbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTo0MS44MDk5NjA3ODdaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3NzgxMzcwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBLY29uZmlnOiBMaW5lIDY4IFx1MDAyNiBCZXlvbmQqKlxuXG5Pa2F5LCBsZXQncyBnZXQgaW50byB0aGUgd2VlZHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgbW0vZGFtb25gLiBTcGVjaWZpY2FsbHksIEkgdGhpbmsgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgYXJvdW5kIGxpbmUgNjggb2YgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoYXQgZGlyZWN0b3J5LiBJJ20gYXNzdW1pbmcgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhhdCBzdWJzeXN0ZW0gYmVnaW4uIEdvaW5nIHRvIGhhdmUgdG8gcGFyc2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgaGVscCB0ZXh0IHRoZXJlLCB0cnkgdG8gZGV0ZXJtaW5lIHdoYXQgZXhhY3RseSBpcyBiZWluZyBjb250cm9sbGVkIGF0IHRoYXQgc2VjdGlvbiBvZiB0aGUgc291cmNlLiBHb3R0YSBiZSBxdWljayBhbmQgdG8gdGhlIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEzMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjQ1LjE4Nzc5NjYzNFoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRcXHRoZWxwXFxuICA2MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiB2aXJ0dWFsIGFkZHJlc3NlcyBvcGVyYXRpb25zIEt1bml0IHRlc3Qgc3VpdGUuXFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXFxuICA2NDpcXHRcXHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA2NzpcXHRcXG4gIDY4OlxcdGNvbmZpZyBEQU1PTl9TWVNGU1xcbiAgNjk6XFx0XFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbiAgNzA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbiAgNzE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcXG4gIDc0OlxcdFxcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXFxuICA3NTpcXHRcXG4gIDc2OlxcdGNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxuICA3NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbiAgNzk6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6NDUuMTg3OTEyMzQ0WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTk1MDE4MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoIFJldmlldyoqXG5cbk9rYXksIHNvIEknbSBzZXR0aW5nIHVwIERBTU9OIGFuZCBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBGaXJzdCwgYERBTU9OX1NZU0ZTYCBkZXBlbmRzIG9uIGBEQU1PTmAgYW5kIGBTWVNGU2AsIHNvIEknbGwgaW5jbHVkZSB0aG9zZS4gVGhlbiwgbG9va2luZyBhdCB0aGUgb3RoZXIgY29uZmlncywgSSBuZWVkIHRvIGVuYWJsZSBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBhbmQgYERBTU9OX1NZU0ZTYC4gIEhvd2V2ZXIsIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgZGVwZW5kIG9uIGBEQU1PTmAgYW5kIGBNTVVgLCB3aGljaCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGZvciBmdWxsIGVuYWJsZW1lbnQuIFNvLCB0byBiZSBjbGVhciwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHdpbGwgYmUgYERBTU9OYCwgYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCwgYW5kIGBEQU1PTl9TWVNGU2AuXG5cbk5vdywgSSdtIGFuYWx5emluZyB0aGUgY29kZS4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIGZ1bmN0aW9ucyBmcm9tIHRoZSBEQU1PTiBzdWJzeXN0ZW0gSSdsbCBiZSB1dGlsaXppbmcuIEkndmUgbm90ZWQgdGhhdCBgZGFtb25fbWlncmF0ZV9wYWdlc2AgaXMgb25lIG5vbi1zdGF0aWMgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyByZWFjaGFibGUgZnJvbSBvdGhlciBtb2R1bGVzIG9yIGNvZGUsIGFuZCB0aGF0J3Mgb25lIEknbGwgZGVmaW5pdGVseSBuZWVkLiBOb3csIHNpbmNlIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYW5kIGl0IGlzIGNhbGxlZCBmcm9tIGBtbS9kYW1vbi9wYWRkci5jYCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgYmVzdCBlbnRyeSBwb2ludC4gSSd2ZSBhbHNvIGlkZW50aWZpZWQgYGRhbW9uX3N0YXJ0YCBhcyBhbm90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb24sIGxvY2F0ZWQgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHdoaWNoIGlzIGFsc28gcmVhY2hhYmxlIGZyb20gdmFyaW91cyBsb2NhdGlvbnMsIGluY2x1ZGluZyBgbW0vZGFtb24vc3lzZnMuY2AsIGBtbS9kYW1vbi9yZWNsYWltLmNgLCBgbW0vZGFtb24vbHJ1X3NvcnQuY2AsIGFuZCBgbW0vZGFtb24vc3RhdC5jYC4gR2l2ZW4gdGhhdCBgZGFtb25fc3RhcnRgIGlzIGNhbGxlZCBpbiBtYW55IHBsYWNlcywgYW5kIGl0IGlzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwgdGhpcyBtaWdodCBiZSBhIGJldHRlciBlbnRyeSBwb2ludC5cblxuSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIHByb3ZpZGVkIHBhdGNoLCB3aGljaCBtb2RpZmllcyBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBJdCBhZGRzIGBub2RlX3N0YXRfYWRkX2ZvbGlvYCBhbmQgYG5vZGVfc3RhdF9zdWJfZm9saW9gIHRvIHVwZGF0ZSB0aGUgaXNvbGF0ZWQgZm9saW8gY291bnQgZHVyaW5nIGZvbGlvIGlzb2xhdGlvbiBmb3IgbWlncmF0aW9uLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBjcnVjaWFsIGFkZGl0aW9uLCBlbnN1cmluZyBhY2N1cmF0ZSBhY2NvdW50aW5nIG9mIGlzb2xhdGVkIGZvbGlvcyB3aXRoaW4gREFNT04ncyBtaWdyYXRpb24gcHJvY2Vzcy4gVGhpcyBzZWVtcyBjbGVhbiBhbmQgZnVuY3Rpb25hbC4gSSBiZWxpZXZlIHRoaXMgaXMgYSBzb2xpZCBhZGRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2MDAsIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTo1NS4zODI5MzM3OVoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0Mjk3ODk3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vcGFkZHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6NTUuNjI3MjQwOTA3WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNjUzMjI3NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNob29zaW5nIHRoZSBSaWdodCBFbnRyeSBQb2ludCBmb3IgREFNT04gTWlncmF0aW9uIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGUgREFNT04gY29kZSBpbiBgbW0vZGFtb24vYCwgSSBzZWUgdGhhdCBib3RoIGBwYWRkci5jYCBhbmQgYHZhZGRyLmNgIGFyZSByZW1hcmthYmx5IGNsZWFuIGluIHRoYXQgdGhleSBkb24ndCBjb250YWluIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCBtZWFucyBJIGNhbiBzYWZlbHkgZGlzY2FyZCB0aGVtIGZvciBhbiBpbml0aWFsaXphdGlvbiBlbnRyeSBwb2ludC4gVGhleSdyZSBjbGVhcmx5IGludGVuZGVkIGFzIHN1cHBvcnQgbW9kdWxlcy4gU28sIG15IGZvY3VzIG5hdHVyYWxseSBzaGlmdHMgdG8gYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGFuZCBgZGFtb25fc3RhcnRgLiBHaXZlbiB0aGF0IGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBsaWtlbHkgbW9yZSBjbG9zZWx5IHRpZWQgdG8gdGhlIGFjdHVhbCBtaWdyYXRpb24gcHJvY2VzcywgSSBsZWFuIHRvd2FyZHMgYGRhbW9uX3N0YXJ0YCBhcyB0aGUgZnVuY3Rpb24gd2hlcmUgSSdkIGtpY2sgb2ZmIHRoZSByZWxldmFudCBpbml0aWFsaXNhdGlvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGJvdGgsIG9mIGNvdXJzZSwgdG8gZW5zdXJlIHRoaXMgd29uJ3QgY2F1c2UgYW55IHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGV4aXN0aW5nIERBTU9OIG9wZXJhdGlvbiBmbG93LCBidXQgb24gdGhlIGZhY2Ugb2YgaXQsIGBkYW1vbl9zdGFydGAgbG9va3MgbGlrZSB0aGUgbW9yZSBhcHByb3ByaWF0ZSBsb2NhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxNzYsIk91dHB1dFRva2VucyI6MTYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjY6MDAuOTkyNTY4Mjg1WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkxOTc5ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX21pZ3JhdGVfcGFnZXNcIixcbiAgICBcImRhbW9uX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04ncyBmb2xpbyBtaWdyYXRpb24gbG9naWMgaW4gYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBwcm9wZXJseSBhY2NvdW50IGZvciBpc29sYXRlZCBmb2xpb3MgYnkgY2FsbGluZyBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIGZyYW1ld29yay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX21pZ3JhdGVfcGFnZXNcIixcbiAgICBcImRhbW9uX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04ncyBmb2xpbyBtaWdyYXRpb24gbG9naWMgaW4gYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBwcm9wZXJseSBhY2NvdW50IGZvciBpc29sYXRlZCBmb2xpb3MgYnkgY2FsbGluZyBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIGZyYW1ld29yay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 07:04:46 +0000 UTC FinishedAt: 2026-07-27 07:26:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1e15fbef3a3c465a6a2db0f38e3980d75420bd6d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_VADDR", "DAMON_PADDR", "DAMON_SYSFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1e15fbef3a3c465a6a2db0f38e3980d75420bd6d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_VADDR", "DAMON_PADDR", "DAMON_SYSFS" ], "series_id": "f8613bbb-b282-4798-8947-1dfd5fd36381" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_migrate_pages", "damon_start" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fbWlncmF0ZV9wYWdlcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBEQU1PTiYjMzk7cyBmb2xpbyBtaWdyYXRpb24gbG9naWMgaW4gYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBwcm9wZXJseSBhY2NvdW50IGZvciBpc29sYXRlZCBmb2xpb3MgYnkgY2FsbGluZyBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIGZyYW1ld29yay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYwNzg1YWJmYmVmODUzMjVjYTYwMTNlN2NiODNhZGRiNGVjMWQ1NDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzoyNDowMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9vcHMtY29tbW9uLmMgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcbmluZGV4IGU1OWY3N2VjYTgzYjJiLi45ODA5ZmExMmIwOWE4MCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL29wcy1jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXG5AQCAtMzc0LDYgJiM0MzszNzQsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxuIFx0d2hpbGUgKCFsaXN0X2VtcHR5KGZvbGlvX2xpc3QpKSB7XG4gXHRcdGZvbGlvID0gbHJ1X3RvX2ZvbGlvKGZvbGlvX2xpc3QpO1xuIFx0XHRsaXN0X2RlbChcdTAwMjZmb2xpby1cdTAwM2VscnUpO1xuJiM0MztcdFx0bm9kZV9zdGF0X3N1Yl9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiAmIzQzO1xuJiM0MztcdFx0XHRcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XG4gXHRcdGZvbGlvX3B1dGJhY2tfbHJ1KGZvbGlvKTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9wYWRkci5jIGIvbW0vZGFtb24vcGFkZHIuY1xuaW5kZXggNWE2YTc4MDU0Nzg0YWYuLjVjNmMzYTU5N2ZkMGJmIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vcGFkZHIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vcGFkZHIuY1xuQEAgLTM0Niw2ICYjNDM7MzQ2LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFxuIFx0XHRpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSlcbiBcdFx0XHRnb3RvIHB1dF9mb2xpbztcbiYjNDM7XHRcdG5vZGVfc3RhdF9hZGRfZm9saW8oZm9saW8sIE5SX0lTT0xBVEVEX0FOT04gJiM0MztcbiYjNDM7XHRcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0XHRsaXN0X2FkZChcdTAwMjZmb2xpby1cdTAwM2VscnUsIFx1MDAyNmZvbGlvX2xpc3QpO1xuIHB1dF9mb2xpbzpcbiBcdFx0YWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmNcbmluZGV4IDQ5NzY3NzVmZTI3NjJhLi4wNjQ4NDAwYjJkNjViNCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3ZhZGRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmNcbkBAIC02MjcsNyAmIzQzOzYyNyw4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4gaXNvbGF0ZTpcbiBcdGlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKVxuIFx0XHRyZXR1cm47XG4tXG4mIzQzO1x0bm9kZV9zdGF0X2FkZF9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiAmIzQzO1xuJiM0MztcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0bGlzdF9hZGQoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZtaWdyYXRpb25fbGlzdHNbaV0pO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9taWdyYXRlX3BhZ2VzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OJiMzOTtzIGZvbGlvIG1pZ3JhdGlvbiBsb2dpYyBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgIHRvIHByb3Blcmx5IGFjY291bnQgZm9yIGlzb2xhdGVkIGZvbGlvcyBieSBjYWxsaW5nIGBub2RlX3N0YXRfYWRkX2ZvbGlvYCBhbmQgYG5vZGVfc3RhdF9zdWJfZm9saW9gLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgdGhlIERhdGEgQWNjZXNzIE1vbml0b3JpbmcgZnJhbWV3b3JrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjA3ODVhYmZiZWY4NTMyNWNhNjAxM2U3Y2I4M2FkZGI0ZWMxZDU0OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDA3OjI0OjAzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jCmluZGV4IGU1OWY3N2VjYTgzYjJiLi45ODA5ZmExMmIwOWE4MCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL29wcy1jb21tb24uYwpAQCAtMzc0LDYgJiM0MzszNzQsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LAogCXdoaWxlICghbGlzdF9lbXB0eShmb2xpb19saXN0KSkgewogCQlmb2xpbyA9IGxydV90b19mb2xpbyhmb2xpb19saXN0KTsKIAkJbGlzdF9kZWwoJmFtcDtmb2xpby0mZ3Q7bHJ1KTsKJiM0MzsJCW5vZGVfc3RhdF9zdWJfZm9saW8oZm9saW8sIE5SX0lTT0xBVEVEX0FOT04gJiM0MzsKJiM0MzsJCQkJZm9saW9faXNfZmlsZV9scnUoZm9saW8pKTsKIAkJZm9saW9fcHV0YmFja19scnUoZm9saW8pOwogCX0KIApkaWZmIC0tZ2l0IGEvbW0vZGFtb24vcGFkZHIuYyBiL21tL2RhbW9uL3BhZGRyLmMKaW5kZXggNWE2YTc4MDU0Nzg0YWYuLjVjNmMzYTU5N2ZkMGJmIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9wYWRkci5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3BhZGRyLmMKQEAgLTM0Niw2ICYjNDM7MzQ2LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLAogCiAJCWlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKQogCQkJZ290byBwdXRfZm9saW87CiYjNDM7CQlub2RlX3N0YXRfYWRkX2ZvbGlvKGZvbGlvLCBOUl9JU09MQVRFRF9BTk9OICYjNDM7CiYjNDM7CQkJCWZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7CiAJCWxpc3RfYWRkKCZhbXA7Zm9saW8tJmd0O2xydSwgJmFtcDtmb2xpb19saXN0KTsKIHB1dF9mb2xpbzoKIAkJYWRkciAmIzQzOz0gZm9saW9fc2l6ZShmb2xpbyk7CmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuYwppbmRleCA0OTc2Nzc1ZmUyNzYyYS4uMDY0ODQwMGIyZDY1YjQgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3ZhZGRyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vdmFkZHIuYwpAQCAtNjI3LDcgJiM0Mzs2MjcsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChzdHJ1Y3QgZm9saW8gKmZvbGlvLAogaXNvbGF0ZToKIAlpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSkKIAkJcmV0dXJuOwotCiYjNDM7CW5vZGVfc3RhdF9hZGRfZm9saW8oZm9saW8sIE5SX0lTT0xBVEVEX0FOT04gJiM0MzsKJiM0MzsJCQlmb2xpb19pc19maWxlX2xydShmb2xpbykpOwogCWxpc3RfYWRkKCZhbXA7Zm9saW8tJmd0O2xydSwgJmFtcDttaWdyYXRpb25fbGlzdHNbaV0pOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODAKCQkJCQkJCW91dHB1dDogMTAwCgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQU1PTiBQYXRjaCBmb3IgRm9saW8gSXNvbGF0aW9uIFN0YXRpc3RpY3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgREFNT04gcGF0Y2gsIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgYSBmZXcga2V5IGZpbGVzOiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFkZGluZyBjYWxscyB0byBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYCB3aGVuIHdlJiMzOTtyZSBpc29sYXRpbmcgYW5kIHB1dHRpbmcgYmFjayBmb2xpb3MgZHVyaW5nIG1pZ3JhdGlvbiB3aXRoaW4gREFNT04uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3RpbmcgREFNT04gY29uZmlndXJhdGlvbi4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHdoaWNoIGNvbmZpZyBvcHRpb25zIGdvdmVybiB0aGVzZSBmaWxlcywgYW5kIGhvdyB0aGVzZSBjaGFuZ2VzIGludGVyYWN0IHdpdGggdGhvc2Ugb3B0aW9ucy4gSSBrbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHNldCBmb3IgYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBtbS9kYW1vbi92YWRkci5jYC4gVGhpcyBpcyB3aGVyZSBgZ3JlcHBlcmAgaXMgZ29pbmcgdG8gYmUgbXkgYmVzdCBmcmllbmQuIEkmIzM5O2xsIGZpcmUgaXQgdXAgYW5kIHVzZSBpdCB0byBwcmVjaXNlbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb24vb3BzLWNvbW1vbi5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb24vcGFkZHIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uL3ZhZGRyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlF1aWNrIE1ha2VmaWxlIENoZWNrKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBsZXQgbWUganVzdCBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYG1tL2RhbW9uL01ha2VmaWxlYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNldCB1cCBhcyBJIGV4cGVjdCBmb3IgYW55IGZ1cnRoZXIgZXhwbG9yYXRpb24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBpbmNsdXNpb24gb2YgYW55IHNwZWNpZmljIGNvbXBpbGVyIGZsYWdzLCBvYmplY3QgZmlsZXMsIG9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGRpcmVjdG9yeS4gVGhpcyBicmllZiBjaGVjayB3aWxsIGdpdmUgbWUgYSBnb29kICYjMzQ7bGF5IG9mIHRoZSBsYW5kJiMzNDsgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIHRoZSBtb3JlIGNvbXBsZXggZnVuY3Rpb25hbGl0aWVzIG9mIERhbW9uIG9yIGFueSBhc3NvY2lhdGVkIG1vZHVsZXMuIEl0JiMzOTtzIG1vc3RseSBhIG1lbnRhbCBub3RlIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGEgcXVpY2sgcmVmcmVzaGVyLCBiZWZvcmUgSSBjb250aW51ZSBleHBsb3JpbmcgdGhhdCBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0b2JqLXlcdFx0XHRcdDo9IGNvcmUub1xuICAgNDpcdG9iai0kKENPTkZJR19EQU1PTl9WQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gdmFkZHIub1xuICAgNTpcdG9iai0kKENPTkZJR19EQU1PTl9QQUREUilcdCYjNDM7PSBvcHMtY29tbW9uLm8gcGFkZHIub1xuICAgNjpcdG9iai0kKENPTkZJR19EQU1PTl9TWVNGUylcdCYjNDM7PSBzeXNmcy1jb21tb24ubyBzeXNmcy1zY2hlbWVzLm8gc3lzZnMub1xuICAgNzpcdG9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXG4gICA4Olx0b2JqLSQoQ09ORklHX0RBTU9OX0xSVV9TT1JUKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gbHJ1X3NvcnQub1xuICAgOTpcdG9iai0kKENPTkZJR19EQU1PTl9TVEFUKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gc3RhdC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1NwoJCQkJCQkJb3V0cHV0OiA2NgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIERBTU9OJiMzOTtzIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBEQU1PTiBpcyBjb25maWd1cmVkLiBJIGtub3cgdGhhdCBgQ09ORklHX0RBTU9OX1ZBRERSYCBhbmQgYENPTkZJR19EQU1PTl9QQUREUmAgYXJlIHRoZSBrZXkgc2V0dGluZ3MgSSBzaG91bGQgYmUgbG9va2luZyBhdC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGhlYWQgb3ZlciB0byBgbW0vZGFtb24vS2NvbmZpZ2AgdG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXNlIGNvbmZpZ3MgbWlnaHQgaGF2ZS4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgYmlnZ2VyIHBpY3R1cmUgb2Ygd2hhdCBvcHRpb25zIEkgbmVlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBpbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpZiBJIHdhbnQgdG8gcGxheSBhcm91bmQgd2l0aCBEQU1PTiYjMzk7cyB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIG1vbml0b3JpbmcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBhbnl0aGluZyBlbHNlIGluIHRoZSBrZXJuZWwgaXMgaW1wYWN0ZWQgYnkgdGhvc2UgY2hvaWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1ZBRERSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTI2PWNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXG4tLVxubW0vZGFtb24vS2NvbmZpZy0zNy1cbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1BBRERSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM4PWNvbmZpZyBEQU1PTl9WQUREUlxuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTkyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGl2aW5nIGludG8gS2NvbmZpZzogbW0vZGFtb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgbW0vZGFtb24vS2NvbmZpZ2AgZmlsZS4gSSBzcGVjaWZpY2FsbHkgbmVlZCB0byBjaGVjayBvdXQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXJvdW5kIGxpbmVzIDM4IGFuZCA0Ny4gTXkgc3BpZGVyIHNlbnNlcyBhcmUgdGluZ2xpbmcsIGFuZCBJIGhhdmUgYSBmZWVsaW5nIHRob3NlIGxpbmVzIGhvbGQgdGhlIGtleSB0byBzb21ldGhpbmcgaW1wb3J0YW50IOKAkyBtYXliZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3ksIG9yIGEgZmxhZyB0aGF04oCZcyBjYXVzaW5nIG1lIGEgaGVhZGFjaGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgbWFnaWMgaXMgaG9sZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cbiAgMzI6XHRcbiAgMzM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDM0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICAzNTpcdFxuICAzNjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBEQU1PTl9WQUREUlxuICAzOTpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA0MTpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDQyOlx0XHRkZWZhdWx0IERBTU9OXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNDU6XHRcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBEQU1PTl9QQUREUlxuICA0ODpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNTA6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA1MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDU0Olx0XHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4gIDU3Olx0XHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA1OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIERBTU9OIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gaXQgbG9va3MgbGlrZSBJJiMzOTttIGRlYWxpbmcgd2l0aCBgREFNT05gLCBgREFNT05fVkFERFJgLCBhbmQgYERBTU9OX1BBRERSYCBhcyB0aGUgY29yZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgREFNT05gIGNvbmZpZ3VyYXRpb24gaXRzZWxmLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuIFNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgbW9yZSBzcGVjaWZpYyBhZGRyZXNzIGRldGFpbHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGBEQU1PTmAgY29uZmlnIHRlbGxzIHVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXCYjMzQ7RGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1wmIzM0O1xubW0vZGFtb24vS2NvbmZpZy00LVxubW0vZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBEQU1PTlxubW0vZGFtb24vS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTE0LVxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMjUtXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTI3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy0zNy1cbm1tL2RhbW9uL0tjb25maWc6Mzg6Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctNDgtXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxubW0vZGFtb24vS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTA3LVxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcbm1tL2RhbW9uL0tjb25maWctMTA5LVx0Ym9vbCBcJiMzNDtCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMTUtXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcbm1tL2RhbW9uL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MTIKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERBTU9OIE1pZ3JhdGlvbiBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBoaXR0aW5nIGEgZmV3IGtleSBmdW5jdGlvbnMgaW4gdGhlIERBTU9OIG1pZ3JhdGlvbiBjb2RlOiBgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0YCBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYGRhbW9uX3BhX21pZ3JhdGVgIGluIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAgaW4gYG1tL2RhbW9uL3ZhZGRyLmNgLiBNeSBpbml0aWFsIGNoZWNrIGNvbmZpcm1zIHRoZXNlIGFyZSBkZWZpbml0ZWx5IGFjdGl2ZSBjb21wb25lbnRzOyBubyBkZWFkIGNvZGUgaGVyZS4gVGhlIHBhdGNoIG11c3QgYmUgZGVzaWduZWQgdG8gaW1wYWN0IHRoZXNlIHNwZWNpZmljIHJvdXRpbmVzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgY29yZSBzeW1ib2xzIHRoZSBwYXRjaCBpcyB0YXJnZXRpbmcgd2l0aGluIHRob3NlIGFyZWFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlaW5nIGFsdGVyZWQgYW5kIHdoeSwgdG8gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmluZCB0aG9zZSBmb2N1cyBzeW1ib2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9vcHMtY29tbW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vb3BzLWNvbW1vbi5jPTI2MT1ib29sIGRhbW9zX2ZvbGlvX2ZpbHRlcl9tYXRjaChzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmaWx0ZXIsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMwMi1cbm1tL2RhbW9uL29wcy1jb21tb24uYzozMDM6c3RhdGljIHVuc2lnbmVkIGludCBfX2RhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChcbm1tL2RhbW9uL29wcy1jb21tb24uYy0zMDQtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKm1pZ3JhdGVfZm9saW9zLCBzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0zMzItXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MzMzOnN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzM0LVx0XHRcdFx0XHRcdHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTM2MC1cdC8qIE1pZ3JhdGUgZm9saW9zIHNlbGVjdGVkIGZvciBtaWdyYXRpb24gKi9cbm1tL2RhbW9uL29wcy1jb21tb24uYzozNjE6XHRucl9taWdyYXRlZCAmIzQzOz0gX19kYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3QoXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzYyLVx0XHRcdFx1MDAyNm1pZ3JhdGVfZm9saW9zLCBwZ2RhdCwgdGFyZ2V0X25pZCk7XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTM4NT11bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQwOS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo0MTA6XHRcdG5yX21pZ3JhdGVkICYjNDM7PSBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3QoXHUwMDI2bm9kZV9mb2xpb19saXN0LFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQxMS1cdFx0XHRcdFx0XHRcdCAgIE5PREVfREFUQShuaWQpLFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy00MTUtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NDE2Olx0bnJfbWlncmF0ZWQgJiM0Mzs9IGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChcdTAwMjZub2RlX2ZvbGlvX2xpc3QsXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDE3LVx0XHRcdFx0XHRcdCAgIE5PREVfREFUQShuaWQpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9wYV9taWdyYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vcGFkZHIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9wYWRkci5jPTMxOT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9kZWFjdGl2YXRlX3BhZ2VzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4tLVxubW0vZGFtb24vcGFkZHIuYy0zMjUtXG5tbS9kYW1vbi9wYWRkci5jOjMyNjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9taWdyYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9wYWRkci5jLTMyNy1cdFx0dW5zaWduZWQgbG9uZyBhZGRyX3VuaXQsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi9wYWRkci5jPTM4OT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuLS1cbm1tL2RhbW9uL3BhZGRyLmMtNDA1LVx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XG5tbS9kYW1vbi9wYWRkci5jOjQwNjpcdFx0cmV0dXJuIGRhbW9uX3BhX21pZ3JhdGUociwgYXVuaXQsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG5tbS9kYW1vbi9wYWRkci5jLTQwNy1cdGNhc2UgREFNT1NfU1RBVDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi92YWRkci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmM9NTc0PXN0cnVjdCBkYW1vc192YV9taWdyYXRlX3ByaXZhdGUge1xuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNTg0LSAqL1xubW0vZGFtb24vdmFkZHIuYzo1ODU6c3RhdGljIHZvaWQgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoc3RydWN0IGZvbGlvICpmb2xpbyxcbm1tL2RhbW9uL3ZhZGRyLmMtNTg2LVx0XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9NjM1PXN0YXRpYyBpbnQgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNjU4LVx0XHRcdGdvdG8gaHVnZV9vdXQ7XG5tbS9kYW1vbi92YWRkci5jOjY1OTpcdFx0ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcbm1tL2RhbW9uL3ZhZGRyLmMtNjYwLVx0XHRcdFx0bWlncmF0aW9uX2xpc3RzKTtcbi0tXG5tbS9kYW1vbi92YWRkci5jLTY4MS1cdFx0XHRjb250aW51ZTtcbm1tL2RhbW9uL3ZhZGRyLmM6NjgyOlx0XHRkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChmb2xpbywgd2Fsay1cdTAwM2V2bWEsIGFkZHIsIGRlc3RzLFxubW0vZGFtb24vdmFkZHIuYy02ODMtXHRcdFx0XHRtaWdyYXRpb25fbGlzdHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTYzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEVudHJ5IFBvaW50cyBmb3IgTWlncmF0aW9uIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgdGhyZWUgbWlncmF0aW9uIGZ1bmN0aW9uczogYGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdGAsIGBkYW1vbl9wYV9taWdyYXRlYCwgYW5kIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAuIFRoZSBjb2RlIGNsZWFybHkgbWFya3MgdGhlbSBhcyBgc3RhdGljYCwgd2hpY2ggbWVhbnMgdGhleSYjMzk7cmUgbm90IGRpcmVjdGx5IGV4cG9zZWQgYXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSAqYXJlKiB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGVzZSBmdW5jdGlvbnM/JiMzNDsgV2UgbmVlZCB0byB0cmFjZSB0aGVpciBjYWxsIGNoYWlucy4KCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIGBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3RgIGlzIGNhbGxlZCBieSBgZGFtb25fbWlncmF0ZV9wYWdlc2AuIEVhc3kgZW5vdWdoLiBUaGVuLCBgZGFtb25fcGFfbWlncmF0ZWAgaXMgY2FsbGVkIGJ5IGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgLiBHb3QgaXQuIE5vdywgZm9yIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAsIGl0JiMzOTtzIGNhbGxlZCBieSBgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnlgLCBidXQgdGhhdCAqaXRzZWxmKiBpcyBzdGF0aWMuIFNvLCB0aGUgcXVlc3Rpb24gYmVjb21lcywgd2hhdCBjYWxscyAqdGhhdCogZnVuY3Rpb24sIGBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeWA/IFdlIG5lZWQgdG8ga2VlcCBkaWdnaW5nIHRvIGZpbmQgdGhlIHVsdGltYXRlIGVudHJ5IHBvaW50IGZvciB0aGlzIGZ1bmN0aW9uJiMzOTtzIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vdmFkZHIuYz01ODU9c3RhdGljIHZvaWQgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTYzNC1cbm1tL2RhbW9uL3ZhZGRyLmM6NjM1OnN0YXRpYyBpbnQgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxubW0vZGFtb24vdmFkZHIuYy02MzYtXHRcdHVuc2lnbmVkIGxvbmcgbmV4dCwgc3RydWN0IG1tX3dhbGsgKndhbGspXG4tLVxubW0vZGFtb24vdmFkZHIuYz03Mzg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4tLVxubW0vZGFtb24vdmFkZHIuYy03NTAtXHRzdHJ1Y3QgbW1fd2Fsa19vcHMgd2Fsa19vcHMgPSB7XG5tbS9kYW1vbi92YWRkci5jOjc1MTpcdFx0LnBtZF9lbnRyeSA9IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5LFxubW0vZGFtb24vdmFkZHIuYy03NTItXHRcdC5wdGVfZW50cnkgPSBOVUxMLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjU0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqQW5hbHl6aW5nIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGBkYW1vc192YV9taWdyYXRlYCoqCgpPa2F5LCBzbyBgZGFtb3NfdmFfbWlncmF0ZWAgaXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGEgZmV3IHRoaW5ncywgYnV0IGJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMsIGxldCYjMzk7cyB0YWtlIGEgbWV0aG9kaWNhbCBhcHByb2FjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGl0JiMzOTtzIHN0YXRpYyDigJMgd2hhdCBleGFjdGx5ICpjYWxscyogYGRhbW9zX3ZhX21pZ3JhdGVgPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UuIFN0YXRpYyBmdW5jdGlvbnMgaGF2ZSB0aGVpciBzcGVjaWZpYyBpbXBsaWNhdGlvbnMgcmVnYXJkaW5nIHNjb3BlLCBsaWZlY3ljbGUsIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLCBhbmQgdGhhdCBoYXMgYSBkaXJlY3QgaW5mbHVlbmNlIG9uIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiBhIG1vZHVsZSwgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzLiBTbywgdGhlIGludmVzdGlnYXRpb24gYmVnaW5zOiBJIG5lZWQgdG8gaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzLiBGcm9tIHRoZXJlLCBJIGNhbiB1bmRlcnN0YW5kIGl0cyBwbGFjZSBpbiB0aGlzIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb3NfdmFfbWlncmF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vdmFkZHIuYz01NDU9c3RhdGljIGJvb2wgZGFtb3NfdmFfZmlsdGVyX291dChzdHJ1Y3QgZGFtb3MgKnNjaGVtZSwgc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTU3My1cbm1tL2RhbW9uL3ZhZGRyLmM6NTc0OnN0cnVjdCBkYW1vc192YV9taWdyYXRlX3ByaXZhdGUge1xubW0vZGFtb24vdmFkZHIuYy01NzUtXHRzdHJ1Y3QgbGlzdF9oZWFkICptaWdyYXRpb25fbGlzdHM7XG4tLVxubW0vZGFtb24vdmFkZHIuYy01ODQtICovXG5tbS9kYW1vbi92YWRkci5jOjU4NTpzdGF0aWMgdm9pZCBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxubW0vZGFtb24vdmFkZHIuYy01ODYtXHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vZGFtb24vdmFkZHIuYy02MzQtXG5tbS9kYW1vbi92YWRkci5jOjYzNTpzdGF0aWMgaW50IGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbm1tL2RhbW9uL3ZhZGRyLmMtNjM2LVx0XHR1bnNpZ25lZCBsb25nIG5leHQsIHN0cnVjdCBtbV93YWxrICp3YWxrKVxubW0vZGFtb24vdmFkZHIuYy02Mzcte1xubW0vZGFtb24vdmFkZHIuYzo2Mzg6XHRzdHJ1Y3QgZGFtb3NfdmFfbWlncmF0ZV9wcml2YXRlICpwcml2ID0gd2Fsay1cdTAwM2Vwcml2YXRlO1xubW0vZGFtb24vdmFkZHIuYy02MzktXHRzdHJ1Y3QgbGlzdF9oZWFkICptaWdyYXRpb25fbGlzdHMgPSBwcml2LVx1MDAzZW1pZ3JhdGlvbl9saXN0cztcbi0tXG5tbS9kYW1vbi92YWRkci5jLTY1OC1cdFx0XHRnb3RvIGh1Z2Vfb3V0O1xubW0vZGFtb24vdmFkZHIuYzo2NTk6XHRcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVx1MDAzZXZtYSwgYWRkciwgZGVzdHMsXG5tbS9kYW1vbi92YWRkci5jLTY2MC1cdFx0XHRcdG1pZ3JhdGlvbl9saXN0cyk7XG4tLVxubW0vZGFtb24vdmFkZHIuYy02ODEtXHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi92YWRkci5jOjY4MjpcdFx0ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcbm1tL2RhbW9uL3ZhZGRyLmMtNjgzLVx0XHRcdFx0bWlncmF0aW9uX2xpc3RzKTtcbi0tXG5tbS9kYW1vbi92YWRkci5jPTcxOT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19tYWR2aXNlKHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTczNy1cbm1tL2RhbW9uL3ZhZGRyLmM6NzM4OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxubW0vZGFtb24vdmFkZHIuYy03MzktXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTc0Mi1cdExJU1RfSEVBRChmb2xpb19saXN0KTtcbm1tL2RhbW9uL3ZhZGRyLmM6NzQzOlx0c3RydWN0IGRhbW9zX3ZhX21pZ3JhdGVfcHJpdmF0ZSBwcml2O1xubW0vZGFtb24vdmFkZHIuYy03NDQtXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbi0tXG5tbS9kYW1vbi92YWRkci5jLTc1MC1cdHN0cnVjdCBtbV93YWxrX29wcyB3YWxrX29wcyA9IHtcbm1tL2RhbW9uL3ZhZGRyLmM6NzUxOlx0XHQucG1kX2VudHJ5ID0gZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnksXG5tbS9kYW1vbi92YWRkci5jLTc1Mi1cdFx0LnB0ZV9lbnRyeSA9IE5VTEwsXG4tLVxubW0vZGFtb24vdmFkZHIuYz04Nzk9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTkwNS1cdGNhc2UgREFNT1NfTUlHUkFURV9DT0xEOlxubW0vZGFtb24vdmFkZHIuYzo5MDY6XHRcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG5tbS9kYW1vbi92YWRkci5jLTkwNy1cdGNhc2UgREFNT1NfU1RBVDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgwMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIOKAkyB0aGV5JiMzOTtyZSBzY29wZWQgaW50ZXJuYWxseSwgYnV0IHRoZXkgY2FuIHN0aWxsIGludGVyYWN0IHdpdGggZ2xvYmFsIG9yIHN0YXRpYyBkYXRhLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0LgoKTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gaWRlbnRpZnkgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gSSBuZWVkIHRvIHRyYWNlIGl0cyB1c2FnZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gc2VlIHRoZSBjYWxsIGdyYXBoLiBJZGVudGlmeWluZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IOKAkyB0aGUgcmVhc29ucyBmb3IgaXRzIGludm9jYXRpb24sIHRoZSBkYXRhIGJlaW5nIHBhc3NlZCBpbiwgYW5kIHVsdGltYXRlbHksIGl0cyBvdmVyYWxsIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHRzIHdpbGwgYWxsb3cgbWUgdG8gZ3Jhc3AgdGhlIGludGVudCBiZWhpbmQgdGhlIHN0YXRpYyBuYXR1cmUuIEkgc3VzcGVjdCBpdCYjMzk7cyBjcml0aWNhbCB0byBhIHNwZWNpZmljIG1vZHVsZSBvciBjb21wb25lbnQgYW5kIEkgbXVzdCBkZXRlcm1pbmUgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBmdW5jdGlvbnMuIEkmIzM5O2xsIGdldCB0byB3b3JrIGFuZCB0cmFjZSB0aG9zZSBjYWxscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fdmFfYXBwbHlfc2NoZW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vdmFkZHIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi92YWRkci5jPTg1ND1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTg3OC1cbm1tL2RhbW9uL3ZhZGRyLmM6ODc5OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi92YWRkci5jLTg4MC1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi92YWRkci5jPTkzNz1zdGF0aWMgaW50IF9faW5pdCBkYW1vbl92YV9pbml0Y2FsbCh2b2lkKVxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtOTQ2LVx0XHQuY2xlYW51cF90YXJnZXQgPSBkYW1vbl92YV9jbGVhbnVwX3RhcmdldCxcbm1tL2RhbW9uL3ZhZGRyLmM6OTQ3Olx0XHQuYXBwbHlfc2NoZW1lID0gZGFtb25fdmFfYXBwbHlfc2NoZW1lLFxubW0vZGFtb24vdmFkZHIuYy05NDgtXHRcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fdmFfc2NoZW1lX3Njb3JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzM0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCBJJiMzOTttIHRoaW5raW5nIGhlcmUuLi4KCioqRGVjb25zdHJ1Y3RpbmcgRGFtb24mIzM5O3MgQXBwbHkgU2NoZW1lKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGBkYW1vbl92YV9hcHBseV9zY2hlbWVgIGFuZCBgZGFtb25fcGFfYXBwbHlfc2NoZW1lYCBhcmUgYmVpbmcgdXNlZC4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgdGhleSYjMzk7cmUgYXNzaWduZWQgdG8gdGhlIGAuYXBwbHlfc2NoZW1lYCBhdHRyaWJ1dGUgb2YgYGRhbW9uX29wZXJhdGlvbnNgLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRlcm1zIG9mIHRoZSB1c3VhbCBEYW1vbiBpbXBsZW1lbnRhdGlvbiDigJMgeW91JiMzOTtkIGV4cGVjdCBkaWZmZXJlbnQgc2NoZW1lcyB0byBiZSBhcHBsaWVkIGluIGRpZmZlcmVudCBjb250ZXh0cywgdmlydHVhbCBhZGRyZXNzIHNwYWNlIHZzLiBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLgoKTm93LCBteSBjdXJpb3NpdHkgaXMgcGlxdWVkLiBUaGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBgLmFwcGx5X3NjaGVtZWAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGNydWNpYWwgdG8gZ3Jhc3BpbmcgdGhlIG92ZXJhbGwgZmxvdyBhbmQgdGhlIHNwZWNpZmljIHNjZW5hcmlvcyB3aGVyZSB0aGVzZSBzY2hlbWVzIGdldCBhcHBsaWVkLiBLbm93aW5nIHRoZSBjb250ZXh0cyB3aWxsIGdpdmUgaW5zaWdodCBpbnRvIGhvdyB0aGVzZSBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVnaWVzIGFyZSBpbnZva2VkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgc3RhY2sgbG9va3MgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XFwuYXBwbHlfc2NoZW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0yNTcyPXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNjA4LVxubW0vZGFtb24vY29yZS5jOjI2MDk6XHRpZiAoYy1cdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XG5tbS9kYW1vbi9jb3JlLmMtMjYxMC1cdFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXHUwMDI2XHUwMDI2XG4tLVxubW0vZGFtb24vY29yZS5jLTI2MjItXHRcdFx0XHRkYW1vbl9ucl9yZWdpb25zKHQpLCBkb190cmFjZSk7XG5tbS9kYW1vbi9jb3JlLmM6MjYyMzpcdFx0c3pfYXBwbGllZCA9IGMtXHUwMDNlb3BzLmFwcGx5X3NjaGVtZShjLCB0LCByLCBzLFxubW0vZGFtb24vY29yZS5jLTI2MjQtXHRcdFx0XHRcdTAwMjZzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XG4tLVxubW0vZGFtb24vcGFkZHIuYz00Mzc9c3RhdGljIGludCBfX2luaXQgZGFtb25fcGFfaW5pdGNhbGwodm9pZClcbi0tXG5tbS9kYW1vbi9wYWRkci5jLTQ0Ni1cdFx0LnRhcmdldF92YWxpZCA9IE5VTEwsXG5tbS9kYW1vbi9wYWRkci5jOjQ0NzpcdFx0LmFwcGx5X3NjaGVtZSA9IGRhbW9uX3BhX2FwcGx5X3NjaGVtZSxcbm1tL2RhbW9uL3BhZGRyLmMtNDQ4LVx0XHQuZ2V0X3NjaGVtZV9zY29yZSA9IGRhbW9uX3BhX3NjaGVtZV9zY29yZSxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTkzNz1zdGF0aWMgaW50IF9faW5pdCBkYW1vbl92YV9pbml0Y2FsbCh2b2lkKVxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtOTQ2LVx0XHQuY2xlYW51cF90YXJnZXQgPSBkYW1vbl92YV9jbGVhbnVwX3RhcmdldCxcbm1tL2RhbW9uL3ZhZGRyLmM6OTQ3Olx0XHQuYXBwbHlfc2NoZW1lID0gZGFtb25fdmFfYXBwbHlfc2NoZW1lLFxubW0vZGFtb24vdmFkZHIuYy05NDgtXHRcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fdmFfc2NoZW1lX3Njb3JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA3OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEQU1PTiBFeGVjdXRpb24gRmxvdyoqCgpBbHJpZ2h0LCBzbyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyBkZWZpbml0ZWx5IHRoZSBkcml2ZXIgb2YgdGhlIHNob3csIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGFjdHVhbGx5ICpkb2VzKiBieSB0cmFjaW5nIGl0cyBjYWxscy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBgZGFtb3NfYXBwbHlfc2NoZW1lYC4gVGhpcyBmdW5jdGlvbiBpcyBwaXZvdGFsOyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBwYXRoLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBTdGF0aWMgb25lcyBhcmUgdXN1YWxseSBqdXN0IHNldHVwIG9yIGludGVybmFsIGRldGFpbHMgSSYjMzk7bSBwcm9iYWJseSBub3QgYXMgaW50ZXJlc3RlZCBpbiBhdCB0aGUgbW9tZW50LiBJIHdhbnQgdGhlIG1lYXR5LCBkeW5hbWljIHBhcnRzIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtLiBNeSBnb2FsIGlzIHRvIG1hcCBvdXQgaG93IERBTU9OIGludGVyYWN0cyB3aXRoIHN5c2ZzIG9yLCBpbmRlZWQsIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrZGFtb25kX2FwcGx5X3NjaGVtZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTMyMDM9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2Vfc3RhdChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMyMTgtXG5tbS9kYW1vbi9jb3JlLmM6MzIxOTpzdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcbm1tL2RhbW9uL2NvcmUuYy0zMjIwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mzc1Mj1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzgyNC1cdFx0Lypcbm1tL2RhbW9uL2NvcmUuYzozODI1Olx0XHQgKiBkbyBrZGFtb25kX2NhbGwoKSBhbmQga2RhbW9uZF9hcHBseV9zY2hlbWVzKCkgYWZ0ZXJcbm1tL2RhbW9uL2NvcmUuYy0zODI2LVx0XHQgKiBrZGFtb25kX21lcmdlX3JlZ2lvbnMoKSBpZiBwb3NzaWJsZSwgdG8gcmVkdWNlIG92ZXJoZWFkXG4tLVxubW0vZGFtb24vY29yZS5jLTM4MzktXHRcdGlmICghbGlzdF9lbXB0eShcdTAwMjZjdHgtXHUwMDNlc2NoZW1lcykpXG5tbS9kYW1vbi9jb3JlLmM6Mzg0MDpcdFx0XHRrZGFtb25kX2FwcGx5X3NjaGVtZXMoY3R4KTtcbm1tL2RhbW9uL2NvcmUuYy0zODQxLVx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjI2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgREFNT04gVGhyZWFkIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBga2RhbW9uZF9mbmAgaXMgdGhlIGNvcmUgdGhyZWFkIGZ1bmN0aW9uIGZvciBEQU1PTi4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBoZWFydCBvZiB0aGUgREFNT04gcHJvY2Vzcy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZm9jdXMgb24gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGFnZSBtYW5hZ2VtZW50LiBUaGUgb2J2aW91cyBjYW5kaWRhdGVzIGFyZSBgZGFtb25fbWlncmF0ZV9wYWdlc2AsIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgLCBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSB0aHJlYWQgZnVuY3Rpb24gaXRzZWxmLCBga2RhbW9uZF9mbmAuCgpIbW0sIHdhaXQgYSBzZWNvbmQuIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpc24mIzM5O3QgZGVjbGFyZWQgc3RhdGljLiBUaGF0IHJhaXNlcyBhIGZsYWcuIElmIGl0JiMzOTtzIG5vdCBzdGF0aWMsIGl0IHN1Z2dlc3RzIHRoYXQgaXQgbWlnaHQgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIG91dHNpZGUgb2YgREFNT04mIzM5O3MgY29yZSBtb2R1bGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBEQU1PTiBjb3JlIGxvZ2ljIGJldHRlci4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgZGFtb25fbWlncmF0ZV9wYWdlc2AgYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9taWdyYXRlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL29wcy1jb21tb24uYz0zMzM9c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCxcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzg0LVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjM4NTp1bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzg2LXtcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg9MjA9Ym9vbCBkYW1vc19mb2xpb19maWx0ZXJfbWF0Y2goc3RydWN0IGRhbW9zX2ZpbHRlciAqZmlsdGVyLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbm1tL2RhbW9uL29wcy1jb21tb24uaDoyMTp1bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oLTIyLVxuLS1cbm1tL2RhbW9uL3BhZGRyLmM9MzI2PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9wYWRkci5jLTM1NS1cdH1cbm1tL2RhbW9uL3BhZGRyLmM6MzU2Olx0YXBwbGllZCA9IGRhbW9uX21pZ3JhdGVfcGFnZXMoXHUwMDI2Zm9saW9fbGlzdCwgcy1cdTAwM2V0YXJnZXRfbmlkKTtcbm1tL2RhbW9uL3BhZGRyLmMtMzU3LVx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vZGFtb24vdmFkZHIuYz03Mzg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4tLVxubW0vZGFtb24vdmFkZHIuYy03NzQtXHRcdG5pZCA9IHVzZV90YXJnZXRfbmlkID8gcy1cdTAwM2V0YXJnZXRfbmlkIDogZGVzdHMtXHUwMDNlbm9kZV9pZF9hcnJbaV07XG5tbS9kYW1vbi92YWRkci5jOjc3NTpcdFx0YXBwbGllZCAmIzQzOz0gZGFtb25fbWlncmF0ZV9wYWdlcyhcdTAwMjZwcml2Lm1pZ3JhdGlvbl9saXN0c1tpXSwgbmlkKTtcbm1tL2RhbW9uL3ZhZGRyLmMtNzc2LVx0XHRjb25kX3Jlc2NoZWQoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0MTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gS2VybmVsIFRocmVhZCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBsb29rcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIERBTU9OIG1pZ3JhdGlvbiBwcm9jZXNzLiBXYWl0LCBoYW5nIG9uLCBJIHNlZSBgZGFtb25fcGFfYXBwbHlfc2NoZW1lYCBhbmQgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAgZGVmaW5lZCBhcyBzdGF0aWMgYnV0IHRoZXkmIzM5O3JlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCBzbyB0aGV5IGNhbiBiZSB0cmlnZ2VyZWQgc29tZWhvdy4gQW5kIHRoZW4gSSBzcG90IGBkYW1vc19hcHBseV9zY2hlbWVgIGlzIGFsc28gc3RhdGljIC0gaW50ZXJlc3RpbmcuIE5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgYXJlIGNvbm5lY3RlZCB0byBzeXNmcyBlbnRyeSBwb2ludHMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvbnRyb2wgbGl2ZXMuCgpSaWdodCwgZXhlY3V0aW9uIGl0c2VsZiBoYXBwZW5zIHdpdGhpbiBga2RhbW9uZF9mbmAsIHdoaWNoIGlzIGEga2VybmVsIHRocmVhZC4gU28sIHRoYXQgdGhyZWFkIGZ1bmN0aW9uIGlzIGFub3RoZXIgZ29vZCBmb2N1cyBzeW1ib2wsIGJ1dCwgeW91IGtub3csIGl0JiMzOTtzIGEgdGhyZWFkLiBMZXQgbWUgdGhpbmssIGFyZSB0aGVyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzPyBJIHNob3VsZCBjaGVjayBgbW0vZGFtb24vc3lzZnMuY2Ag4oCTIHRoYXQmIzM5O3MgcHJvYmFibHkgd2hlcmUgdGhlIERBTU9OIHNldHVwIGFuZCBpbml0aWFsaXNhdGlvbiBoYXBwZW4uIFRoYXQmIzM5O3MgbXkgbmV4dCBkZXN0aW5hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTIyMjA9c3RhdGljIGludCBkYW1vbl9zeXNmc19yZXBlYXRfY2FsbF9mbih2b2lkICpkYXRhKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjI0Mi1cbm1tL2RhbW9uL3N5c2ZzLmM6MjI0MzpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG5tbS9kYW1vbi9zeXNmcy5jLTIyNDQte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjI4OD1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjI5NS1cdCAqIERBTU9OLCB3ZSBmcmVlIGtkYW1vbmQtXHUwMDNlZGFtb25fY3R4IGluIG5leHRcbm1tL2RhbW9uL3N5c2ZzLmM6MjI5NjpcdCAqIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oKSwgb3Iga2RhbW9uZHNfbnJfc3RvcmUoKVxubW0vZGFtb24vc3lzZnMuYy0yMjk3LVx0ICovXG4tLVxubW0vZGFtb24vc3lzZnMuYz0yMzY0PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZChlbnVtIGRhbW9uX3N5c2ZzX2NtZCBjbWQsXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzcxLVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfT046XG5tbS9kYW1vbi9zeXNmcy5jOjIzNzI6XHRcdHJldHVybiBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uKGtkYW1vbmQpO1xubW0vZGFtb24vc3lzZnMuYy0yMzczLVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfT0ZGOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjIzMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBTeXNmcyBIYW5kbGluZyBmb3IgREFNT04qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBEQU1PTiBpbnRlcmFjdHMgd2l0aCBzeXNmcy4gVGhlIGNydWNpYWwgZW50cnkgcG9pbnQgZm9yIHRoaXMsIGZyb20gd2hhdCBJJiMzOTttIHJlYWRpbmcsIGlzIHRoZSBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBhY3Rpb24gc3RhcnRzIHdoZW4gYSB1c2VyIGF0dGVtcHRzIHRvIHdyaXRlIHRvIGEgc3lzZnMgZmlsZSBhc3NvY2lhdGVkIHdpdGggREFNT04uIE5hdHVyYWxseSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBoYXBwZW5zIHdpdGhpbiBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmbG93IGFuZCBmaWd1cmUgb3V0IGhvdyBjb21tYW5kcyBhcmUgaW50ZXJwcmV0ZWQgYW5kIGV4ZWN1dGVkLiBUaGlzIGlzIHRoZSBjb3JlIG9mIGhvdyB1c2VycyBjb25maWd1cmUgYW5kIGludGVyYWN0IHdpdGggREFNT04sIHNvIGl0IHdhcnJhbnRzIGEgdGhvcm91Z2ggZXhhbWluYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB1bmRlciB0aGUgaG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc3lzZnNfaGFuZGxlX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTIzMzQ9c3RhdGljIGludCBkYW1vbl9zeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zKFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM1NS0vKlxubW0vZGFtb24vc3lzZnMuYzoyMzU2OiAqIGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoKSAtIEhhbmRsZSBhIGNvbW1hbmQgZm9yIGEgc3BlY2lmaWMga2RhbW9uZC5cbm1tL2RhbW9uL3N5c2ZzLmMtMjM1Ny0gKiBAY21kOlx0VGhlIGNvbW1hbmQgdG8gaGFuZGxlLlxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM2My0gKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MjM2NDpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxubW0vZGFtb24vc3lzZnMuYy0yMzY1LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTI0MDQ9c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTI0MTUtXHRcdGlmIChzeXNmc19zdHJlcShidWYsIGRhbW9uX3N5c2ZzX2NtZF9zdHJzW2NtZF0pKSB7XG5tbS9kYW1vbi9zeXNmcy5jOjI0MTY6XHRcdFx0cmV0ID0gZGFtb25fc3lzZnNfaGFuZGxlX2NtZChjbWQsIGtkYW1vbmQpO1xubW0vZGFtb24vc3lzZnMuYy0yNDE3LVx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgzNQoJCQkJCQkJb3V0cHV0OiA2NgoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRpZ2dpbmcgaW50byBEQU1PTiYjMzk7cyBTeXNmcyBJbnRlcmZhY2UqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgREFNT04gaW50ZXJhY3RzIHdpdGggdGhlIHN5c2ZzLiBJJiMzOTt2ZSBnb3QgYHN0YXRlX3N0b3JlYCBpbiBtaW5kIOKAkyB0aGF0JiMzOTtzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBzeXNmcyBmaWxlcy4gQnV0LCBub3cgSSYjMzk7bSByZW1lbWJlcmluZyB0aGF0IGBkYW1vbl9zeXNmc19oYW5kbGVfY21kYCBpcyBkZWNsYXJlZCBhcyAqc3RhdGljKi4gVGhhdOKAmXMgYSBiaXQgb2YgYSByb2FkYmxvY2sgaWYgSeKAmW0gdHJ5aW5nIHRvIHRyYWNlIHRoZSBjb21tYW5kIHByb2Nlc3NpbmcgZmxvdy4KCk9rYXksIG5vIHByb2JsZW0uIExldCYjMzk7cyBmaW5kIGFueSBvdGhlciBpbnRlcmVzdGluZyBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL3N5c2ZzLmNgIHdoaWNoICphcmVuJiMzOTt0KiBkZWNsYXJlZCBhcyBzdGF0aWMgYW5kIHNlZSB3aGF0IHRoZXkgdGVsbCB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vc3lzZnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTI2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIGdlYXJlZCB0b3dhcmRzIGEgdXNlciB3aG8ga25vd3MgdGhlaXIgd2F5IGFyb3VuZCBzeXN0ZW0tbGV2ZWwgY29kZToKCioqQW5hbHl6aW5nIGBtbS9kYW1vbi9zeXNmcy5jYCAtIFF1aWNrIE1ldGhvZCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIGBtbS9kYW1vbi9zeXNmcy5jYC4gSSBjb3VsZCBkaXZlIHJpZ2h0IGluIHdpdGggYHJlYWQtZmlsZWAgYW5kIGp1c3Qgc3RhcnQgc2Nyb2xsaW5nIHRocm91Z2ggdGhlIGNvZGUsIGJ1dCBJJiMzOTttIHRoaW5raW5nIGEgZmFzdGVyLCBtb3JlIHRhcmdldGVkIGFwcHJvYWNoIG1pZ2h0IGJlIGJldHRlci4gTGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGBncmVwcGVyYCBzY2FuIGlzIHByb2JhYmx5IHRoZSB3YXkgdG8gZ28gaGVyZS4gSSYjMzk7bGwgemVybyBpbiBvbiB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zLiBTbywgbGV0JiMzOTtzIHVzZSBgZ3JlcHBlcmAgd2l0aCB0aGUgcGF0dGVybnMgYF5pbnQgYCBvciBgXnZvaWQgYCB0byBncmFiIGFsbCB0aGUgbGluZXMgdGhhdCBkZWZpbmUgZnVuY3Rpb25zIHJldHVybmluZyBhbiBgaW50YCBvciBgdm9pZGAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBpbnRlcmZhY2UgYW5kIHN0cnVjdHVyZSwgd2l0aG91dCBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHJpZ2h0IGF3YXkuIFRoYXQgc2hvdWxkIHF1aWNrbHkgZ2V0IG1lIG9yaWVudGVkIGluIHRoaXMgZmlsZS4gSXQmIzM5O3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBzdGFydCwgZm9yIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0MjgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipTdGF0aWMgRGVjbGFyYXRpb25zIGFuZCBGdW5jdGlvbiBTY29wZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzb21ldGhpbmcganVtcHMgb3V0IGF0IG1lOiBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQuIE5vIGJpZyBkZWFsLCBwcm9iYWJseSBkZXNpZ25lZCB0byBiZSBhbiBpbnRlcm5hbCBoZWxwZXIsIG9yIHByZXZlbnQgYWNjaWRlbnRhbCBuYW1lIGNvbGxpc2lvbnMgd2l0aCBvdGhlciBmdW5jdGlvbnMuIEJ1dCBpdCBkb2VzIHJhaXNlIGEgcXVlc3Rpb24g4oCTIGFyZSB0aGVyZSBzaW1pbGFyIGRlc2lnbiBjaG9pY2VzIGVsc2V3aGVyZT8gSXQgbWFrZXMgbWUgdGhpbmsgSSBzaG91bGQgdmVyaWZ5IGhvdyBpdCBpcyB1c2VkIGFuZCBpZiB0aGUgZGV2ZWxvcGVyIGludGVuZGVkIGl0IHRvIGJlIHNvIGxpbWl0ZWQuCgpNeSBuZXh0IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBkYW1vbl9taWdyYXRlX3BhZ2VzYC4gQWgsIGl0JiMzOTtzIG5vdCBzdGF0aWMuIFRoYXQmIzM5O3MgZ29vZCwgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgZnVuY3Rpb24gaW50ZW5kZWQgZm9yIGJyb2FkZXIgdXNlIHdpdGhpbiB0aGUgbGFyZ2VyIERhbW9uIGZyYW1ld29yaywgcG90ZW50aWFsbHkgY2FsbGVkIGZyb20gb3RoZXIgbW9kdWxlcyBvciBmdW5jdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBkaWZmZXJlbmNlIGFzIEkgdHJhY2UgdGhyb3VnaCB0aGUgY2FsbGluZyBoaWVyYXJjaHkuIFRoYXQmIzM5O3MgYW4gaW1wb3J0YW50IGRlc2lnbiBlbGVtZW50IHRvIGtlZXAgaW4gbWluZCwgc3RhdGljIHZzIG5vbi1zdGF0aWMuCgpGaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGRhbW9uX3N0YXJ0YC4gTGV0IG1lIHNlZSwgaG93IGlzIHRoYXQgZGVjbGFyZWQ/IFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCB2aXNpYmlsaXR5IG9mIHRoZXNlIGtleSBmdW5jdGlvbnMgd2l0aGluIHRoZSBEYW1vbiBzdWJzeXN0ZW0uIFRoZSBpbnRlcnBsYXkgb2YgdGhvc2UgdGhyZWUgZnVuY3Rpb25zIGFuZCBhbnkgcG90ZW50aWFsIGNvdXBsaW5nIG9mIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0xMDEzPXN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEwMzgtICogSW4gZGV0YWlsLCBhbGwgREFNT04gQVBJIGNhbGxlcnMgZGlyZWN0bHkgY2FsbCB0aGlzIGZ1bmN0aW9uIGZvciBpbml0aWFsXG5tbS9kYW1vbi9jb3JlLmM6MTAzOTogKiBzZXR1cCBvZiBkYW1vbl9jdHggYmVmb3JlIGNhbGxpbmcgZGFtb25fc3RhcnQoKS4gIFNvbWUgb2YgdGhlIEFQSSBjYWxsZXJzXG5tbS9kYW1vbi9jb3JlLmMtMTA0MC0gKiBhbHNvIGluZGlyZWN0bHkgY2FsbCB0aGlzIGZ1bmN0aW9uIHZpYSBkYW1vbl9jYWxsKCkgLVx1MDAzZSBkYW1vbl9jb21taXQoKSBmb3Jcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTkyNT1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSk7XG4tLVxubW0vZGFtb24vY29yZS5jLTE5MjctLypcbm1tL2RhbW9uL2NvcmUuYzoxOTI4OiAqIF9fZGFtb25fc3RhcnQoKSAtIFN0YXJ0cyBtb25pdG9yaW5nIHdpdGggZ2l2ZW4gY29udGV4dC5cbm1tL2RhbW9uL2NvcmUuYy0xOTI5LSAqIEBjdHg6XHRtb25pdG9yaW5nIGNvbnRleHRcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTkzNC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTM1OnN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMTkzNi17XG4tLVxubW0vZGFtb24vY29yZS5jPTE5NTc9c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTU5LS8qKlxubW0vZGFtb24vY29yZS5jOjE5NjA6ICogZGFtb25fc3RhcnQoKSAtIFN0YXJ0cyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXG5tbS9kYW1vbi9jb3JlLmMtMTk2MS0gKiBAY3R4czpcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RhcnQgbW9uaXRvcmluZ1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTY4LSAqIEBleGNsdXNpdmUgaXMgdHJ1ZSBhbmQgYSBncm91cCBvZiB0aHJlYWRzIHRoYXQgY3JlYXRlZCBieSBvdGhlclxubW0vZGFtb24vY29yZS5jOjE5Njk6ICogJiMzOTtkYW1vbl9zdGFydCgpJiMzOTsgY2FsbCBpcyBjdXJyZW50bHkgcnVubmluZywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgYnV0XG5tbS9kYW1vbi9jb3JlLmMtMTk3MC0gKiByZXR1cm5zIC1FQlVTWS5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk3My0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTc0OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxubW0vZGFtb24vY29yZS5jLTE5NzUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTk5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSYjNDM7JiM0MzspIHtcbm1tL2RhbW9uL2NvcmUuYzoyMDAwOlx0XHRlcnIgPSBfX2RhbW9uX3N0YXJ0KGN0eHNbaV0pO1xubW0vZGFtb24vY29yZS5jLTIwMDEtXHRcdGlmIChlcnIpXG4tLVxubW0vZGFtb24vY29yZS5jPTIwNzA9aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjA5Ny0gKlxubW0vZGFtb24vY29yZS5jOjIwOTg6ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRhbW9uX3N0YXJ0KCkgd2l0aCB0aGVcbm1tL2RhbW9uL2NvcmUuYy0yMDk5LSAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMTA2PWludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjE1Mi0gKlxubW0vZGFtb24vY29yZS5jOjIxNTM6ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRhbW9uX3N0YXJ0KCkgd2l0aCB0aGVcbm1tL2RhbW9uL2NvcmUuYy0yMTU0LSAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9NDA4PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNDIwLVxubW0vZGFtb24vbHJ1X3NvcnQuYzo0MjE6XHRlcnIgPSBkYW1vbl9zdGFydChcdTAwMjZjdHgsIDEsIHRydWUpO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00MjItXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYz0zMzE9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMzQzLVxubW0vZGFtb24vcmVjbGFpbS5jOjM0NDpcdGVyciA9IGRhbW9uX3N0YXJ0KFx1MDAyNmN0eCwgMSwgdHJ1ZSk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMzQ1LVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9zdGF0LmM9MjAwPXN0YXRpYyBpbnQgZGFtb25fc3RhdF9zdGFydCh2b2lkKVxuLS1cbm1tL2RhbW9uL3N0YXQuYy0yMTItXHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vc3RhdC5jOjIxMzpcdGVyciA9IGRhbW9uX3N0YXJ0KFx1MDAyNmRhbW9uX3N0YXRfY29udGV4dCwgMSwgdHJ1ZSk7XG5tbS9kYW1vbi9zdGF0LmMtMjE0LVx0aWYgKGVycikge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjI0Mz1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMjY3LVx0fVxubW0vZGFtb24vc3lzZnMuYzoyMjY4Olx0ZXJyID0gZGFtb25fc3RhcnQoXHUwMDI2Y3R4LCAxLCBmYWxzZSk7XG5tbS9kYW1vbi9zeXNmcy5jLTIyNjktXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTE3CgkJCQkJCQlvdXRwdXQ6IDY3CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBrZXJuZWwgaW50ZXJuYWxzOgoKKipEaXZpbmcgaW50byBEQU1PTiBPcGVyYXRpb25zKioKClJpZ2h0LCBgZGFtb25fc3RhcnRgIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZvY3VzaW5nIG9uIERBTU9OJiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eS4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBvZiBvdGhlciBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaXRzIG9wZXJhdGlvbiwgcGFydGljdWxhcmx5IGBkYW1vbl9taWdyYXRlX3BhZ2VzYC4gSXQmIzM5O3MgZ29vZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBhIHJlZmVyZW5jZSBwb2ludC4KCk5vdywgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcHJlc2VuY2Ugb2Ygb3RoZXIgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHdpdGhpbiB0aGUgYG1tL2RhbW9uL29wcy1jb21tb24uY2AgZmlsZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIGhvdyB0aGVzZSBpbml0aWFsIGZ1bmN0aW9ucyBJJiMzOTt2ZSBpZGVudGlmaWVkIHJlbGF0ZSB0byB0aGUgYnJvYWRlciBwaWN0dXJlLiBNeSBhaW0gaXMgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBmbG93LCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIGludmVzdGlnYXRpb24uIFRoaXMgaXMgYSBnb29kIHdheSB0byBzdGFydCBhIGRlZXBlciBkaXZlIGludG8gdGhlIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL29wcy1jb21tb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9vcHMtY29tbW9uLmM9MjQ9c3RydWN0IGZvbGlvICpkYW1vbl9nZXRfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQxLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjQyOnZvaWQgZGFtb25fcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQzLXtcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzItXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NzM6dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzQte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMDMtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTA0OmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMDUtXHRcdFx0c3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNDktXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTUwOmludCBkYW1vbl9jb2xkX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTUxLVx0XHRcdHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MTU5PXN0YXRpYyBib29sIGRhbW9uX2ZvbGlvX21rb2xkX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNzMtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTc0OnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNzUte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0xOTQ9c3RhdGljIGJvb2wgZGFtb25fZm9saW9feW91bmdfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzNS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoyMzY6Ym9vbCBkYW1vbl9mb2xpb195b3VuZyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzNy17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTI2MC1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoyNjE6Ym9vbCBkYW1vc19mb2xpb19maWx0ZXJfbWF0Y2goc3RydWN0IGRhbW9zX2ZpbHRlciAqZmlsdGVyLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTI2Mi17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTM4NT11bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQyNC1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo0MjU6Ym9vbCBkYW1vc19vcHNfaGFzX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDI2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxNjMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IHRoaW5raW5nIHJpZ2h0IG5vdyBpcyBjZW50ZXJlZCBvbiBpZGVudGlmeWluZyB0aGUgYmVzdCBzeW1ib2wgdG8gZm9jdXMgb24uICoqQ2hvb3NpbmcgdGhlIFJpZ2h0IEZvY3VzIFN5bWJvbCBmb3IgQW5hbHlzaXMqKiBgZGFtb25fbWlncmF0ZV9wYWdlc2Agc2VlbXMgbGlrZSBhIHN0cm9uZyBjb250ZW5kZXIsIEkgdGhpbmsgaXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBOb3csIHdoYXQgYWJvdXQgc29tZSBvdGhlciBzeW1ib2xzPyBIbW1tLCBgZGFtb3NfZm9saW9fZmlsdGVyX21hdGNoYD8gVGhhdCYjMzk7cyBub3Qgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQW5kIHRoZW4gYGRhbW9uX3N0YXJ0YCwgdGhhdCYjMzk7cyBhbHNvIG5vdCBzdGF0aWMuIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBga2RhbW9uZF9mbmAsIHRoYXQgb25lICppcyogc3RhdGljLCBidXQgaXQmIzM5O3MgdGhlIG1haW4gdGhyZWFkIHNvIGNvdWxkIGJlIHNpZ25pZmljYW50LiBCdXQgaGFuZyBvbiwgZGlkbiYjMzk7dCBJIGp1c3Qgc2VlIHRoYXQgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGdldHMgY2FsbGVkIGJ5IGBkYW1vbl9wYV9taWdyYXRlYCAqYW5kKiBgZGFtb3NfdmFfbWlncmF0ZWA/IFRoYXQgc3VnZ2VzdHMgaXQmIzM5O3MgYSBjcml0aWNhbCBwb2ludCBvZiBjb252ZXJnZW5jZS4gWWVzLCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGF0IGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBhY3R1YWxseSBleHBvcnRlZCDigJMgdGhhdCYjMzk7cyBhIGtleSByZXF1aXJlbWVudC4gVGhhdCBpcyB0aGUgY29ycmVjdCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vb3BzLWNvbW1vbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NTkKCQkJCQkJCW91dHB1dDogNjYKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkludmVzdGlnYXRpbmcgYSBOb24tRXhwb3J0ZWQsIE5vbi1TdGF0aWMgRnVuY3Rpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbiB0aGF0IGlzbiYjMzk7dCBleHBvcnRlZCwgYnV0IGl0JiMzOTtzICphbHNvKiBub3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLCBpdOKAmXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgb3V0c2lkZSB0aGUgbW9kdWxlLCBidXQgaWYgaXTigJlzIG5vbi1zdGF0aWMsIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgaXQmIzM5O3MgYmVpbmcgYWNjZXNzZWQgd2l0aGluIHRoZSBmaWxlIGl0c2VsZiwgb3IgcG90ZW50aWFsbHkgdGhyb3VnaCBzb21lIGxlc3Mgb2J2aW91cyBtZWNoYW5pc20sIGxpa2UgYSBmdW5jdGlvbiBwb2ludGVyIG9yIGEgbWFjcm8gd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCwgaXMgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSAqaG93KiBpdCYjMzk7cyBiZWluZyB1c2VkLgoKVGhlIGZhY3QgdGhhdCB0aGUgbmFtZSBpc24mIzM5O3QgYXBwYXJlbnQgZnJvbSB0aGUgaGVhZGVycyBtZWFucyB0aGF0IGEgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgaXMgbmVjZXNzYXJ5LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbW0vZGFtb24vdmFkZHIuY2AuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQsIGdpdmVuIHRoZSBtZW50aW9uIG9mIHZpcnR1YWwgYWRkcmVzc2VzIGFuZCB0aGUgRGFtb20gc3Vic3lzdGVtLiBUaGF0IGZpbGUgaXMgbGlrZWx5IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIG1vc3QgaW1tZWRpYXRlIHBsYWNlIHRvIGZpbmQgb3V0IHdoYXQgaXQmIzM5O3MgdXAgdG8uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSeKAmWxsIG5lZWQgdG8gbG9vayBmb3IgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgbWVudGlvbiBvZiB0aGUgZnVuY3Rpb24gYW5kIGxvb2sgZm9yIHRoZSBjYWxsaW5nIGNvbnRleHRzIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3ZhZGRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjk2NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBEQU1PTiBNaWdyYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyB3ZSBjYW4ga2VlcCBpdCByZWxhdGl2ZWx5IHNpbXBsZSBoZXJlLiBJbml0aWFsbHksIEkgd2FzIGdvaW5nIHRvIGZvY3VzIG9uIGp1c3QgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGFuZCBgZGFtb25fc3RhcnRgLCBidXQgdGhlbiBJIHNhdyB0aGF0IHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdGAsIGBkYW1vbl9wYV9taWdyYXRlYCwgYW5kIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAuIEFsbCBvZiB0aGVzZSBhcmUgY2xlYXJseSB0aWVkIHRvIERBTU9OIG1pZ3JhdGlvbiwgd2hpY2ggY2hhbmdlcyB0aGluZ3MgYSBiaXQuCgpNeSB0aG91Z2h0IGlzIHRvIGRvIGEgcXVpY2sgc2NhbiBvZiBgbW0vZGFtb24vcGFkZHIuY2AgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBiZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBhbnl0aGluZyBlbHNlIGFmZmVjdGVkLCBidXQgc2luY2UgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGNhbGxzIGBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3RgIGRpcmVjdGx5LCBhbmQgdGhlIGxhdHRlciBpcyBtb2RpZmllZCBpbiB0aGUgcGF0Y2gsIGxldCYjMzk7cyB1c2UgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGFzIG91ciBwcmltYXJ5IGZvY3VzIHN5bWJvbC4gSXQmIzM5O3Mgbm9uLXN0YXRpYywgd2hpY2ggaXMgY29udmVuaWVudC4KCk5vdywgd2FpdCBhIG1pbnV0ZSwgYGRhbW9uX3BhX21pZ3JhdGVgIGFuZCBgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGRgIGFyZSBhbHNvIGluIHRoZSBtaXghIFRoZXkmIzM5O3JlIGNhbGxlZCBkdXJpbmcgc2NoZW1lIGFwcGxpY2F0aW9uLCB3aGljaCBpcyBjcnVjaWFsLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBzY2hlbWUgYXBwbGljYXRpb24gaGFwcGVucyB0aHJvdWdoIGBkYW1vc19hcHBseV9zY2hlbWVgLCB0aGVuIGBjLSZndDtvcHMuYXBwbHlfc2NoZW1lYCwgdGhlbiBlaXRoZXIgYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWAgb3IgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAuIE9rYXksIHNvIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgIGFuZCBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBzb3VuZCBsaWtlIGdvb2QgY2FuZGlkYXRlcyB0byBrZWVwIGluIG1pbmQsIGV2ZW4gdGhvdWdoIHRoZXkmIzM5O3JlIHN0YXRpYy4KCkhtbW0sIGlzIHRoZXJlIGFueXRoaW5nIG5vbi1zdGF0aWMgdGhhdCB0cmlnZ2VycyBzY2hlbWUgYXBwbGljYXRpb24/IGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGlzIHN0YXRpYywgYGtkYW1vbmRfZm5gIGlzIGFsc28gc3RhdGljLCBzbyB0aGV5JiMzOTtyZSBvdXQuIE9oISBgZGFtb25fc3RhcnRgIGlzIG5vbi1zdGF0aWMgYW5kIGxhdW5jaGVzIHRoZSBrZGFtb25kIHRocmVhZC4gUmlnaHQsIHNvIGBkYW1vbl9zdGFydGAgYW5kIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBib3RoIHNlZW0gc29saWQgYXMgb3VyIGZvY2FsIHBvaW50cy4KCk9uZSBmaW5hbCB0aGluZyDigJMgbGV0JiMzOTtzIHJldmlzaXQgdGhlIGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAuIEJ1dCwgd2hhdCBlbHNlPyBgREFNT05fU1lTRlNgIHdpbGwgcHJvYmFibHkgYmUgbmVlZGVkIHRvIHRyaWdnZXIgYWxsIHRoaXMgZnJvbSB1c2Vyc3BhY2UsIHNvIHdlJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIEFuZCBwcm9iYWJseSBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAgYXMgd2VsbCwgdGhleSBjb3VsZCBwb3RlbnRpYWxseSB1c2UgaXQuIFdlIHdpbGwgbmVlZCB0byBjaGVjayB3aGF0IGBEQU1PTl9TWVNGU2AgZGVwZW5kcyBvbiwgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1NZU0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTU2PWNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy03Ny1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMzMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIEtjb25maWc6IExpbmUgNjggJmFtcDsgQmV5b25kKioKCk9rYXksIGxldCYjMzk7cyBnZXQgaW50byB0aGUgd2VlZHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgbW0vZGFtb25gLiBTcGVjaWZpY2FsbHksIEkgdGhpbmsgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgYXJvdW5kIGxpbmUgNjggb2YgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoYXQgZGlyZWN0b3J5LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGF0IHN1YnN5c3RlbSBiZWdpbi4gR29pbmcgdG8gaGF2ZSB0byBwYXJzZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBoZWxwIHRleHQgdGhlcmUsIHRyeSB0byBkZXRlcm1pbmUgd2hhdCBleGFjdGx5IGlzIGJlaW5nIGNvbnRyb2xsZWQgYXQgdGhhdCBzZWN0aW9uIG9mIHRoZSBzb3VyY2UuIEdvdHRhIGJlIHF1aWNrIGFuZCB0byB0aGUgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRcdGhlbHBcbiAgNjE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDY0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA3OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MDAKCQkJCQkJCW91dHB1dDogNjYKCQkJCQkJCXRob3VnaHRzOiA5NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2ggUmV2aWV3KioKCk9rYXksIHNvIEkmIzM5O20gc2V0dGluZyB1cCBEQU1PTiBhbmQgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBjb25maWd1cmVkIGNvcnJlY3RseS4gRmlyc3QsIGBEQU1PTl9TWVNGU2AgZGVwZW5kcyBvbiBgREFNT05gIGFuZCBgU1lTRlNgLCBzbyBJJiMzOTtsbCBpbmNsdWRlIHRob3NlLiBUaGVuLCBsb29raW5nIGF0IHRoZSBvdGhlciBjb25maWdzLCBJIG5lZWQgdG8gZW5hYmxlIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAsIGFuZCBgREFNT05fU1lTRlNgLiAgSG93ZXZlciwgYERBTU9OX1ZBRERSYCBhbmQgYERBTU9OX1BBRERSYCBkZXBlbmQgb24gYERBTU9OYCBhbmQgYE1NVWAsIHdoaWNoIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgZm9yIGZ1bGwgZW5hYmxlbWVudC4gU28sIHRvIGJlIGNsZWFyLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgd2lsbCBiZSBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBhbmQgYERBTU9OX1NZU0ZTYC4KCk5vdywgSSYjMzk7bSBhbmFseXppbmcgdGhlIGNvZGUuIEkgbmVlZCB0byBpZGVudGlmeSB3aGljaCBmdW5jdGlvbnMgZnJvbSB0aGUgREFNT04gc3Vic3lzdGVtIEkmIzM5O2xsIGJlIHV0aWxpemluZy4gSSYjMzk7dmUgbm90ZWQgdGhhdCBgZGFtb25fbWlncmF0ZV9wYWdlc2AgaXMgb25lIG5vbi1zdGF0aWMgZnVuY3Rpb24sIG1lYW5pbmcgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gb3RoZXIgbW9kdWxlcyBvciBjb2RlLCBhbmQgdGhhdCYjMzk7cyBvbmUgSSYjMzk7bGwgZGVmaW5pdGVseSBuZWVkLiBOb3csIHNpbmNlIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYW5kIGl0IGlzIGNhbGxlZCBmcm9tIGBtbS9kYW1vbi9wYWRkci5jYCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgYmVzdCBlbnRyeSBwb2ludC4gSSYjMzk7dmUgYWxzbyBpZGVudGlmaWVkIGBkYW1vbl9zdGFydGAgYXMgYW5vdGhlciBub24tc3RhdGljIGZ1bmN0aW9uLCBsb2NhdGVkIGluIGBtbS9kYW1vbi9jb3JlLmNgLCB3aGljaCBpcyBhbHNvIHJlYWNoYWJsZSBmcm9tIHZhcmlvdXMgbG9jYXRpb25zLCBpbmNsdWRpbmcgYG1tL2RhbW9uL3N5c2ZzLmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBhbmQgYG1tL2RhbW9uL3N0YXQuY2AuIEdpdmVuIHRoYXQgYGRhbW9uX3N0YXJ0YCBpcyBjYWxsZWQgaW4gbWFueSBwbGFjZXMsIGFuZCBpdCBpcyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24sIHRoaXMgbWlnaHQgYmUgYSBiZXR0ZXIgZW50cnkgcG9pbnQuCgpJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIHByb3ZpZGVkIHBhdGNoLCB3aGljaCBtb2RpZmllcyBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBJdCBhZGRzIGBub2RlX3N0YXRfYWRkX2ZvbGlvYCBhbmQgYG5vZGVfc3RhdF9zdWJfZm9saW9gIHRvIHVwZGF0ZSB0aGUgaXNvbGF0ZWQgZm9saW8gY291bnQgZHVyaW5nIGZvbGlvIGlzb2xhdGlvbiBmb3IgbWlncmF0aW9uLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBjcnVjaWFsIGFkZGl0aW9uLCBlbnN1cmluZyBhY2N1cmF0ZSBhY2NvdW50aW5nIG9mIGlzb2xhdGVkIGZvbGlvcyB3aXRoaW4gREFNT04mIzM5O3MgbWlncmF0aW9uIHByb2Nlc3MuIFRoaXMgc2VlbXMgY2xlYW4gYW5kIGZ1bmN0aW9uYWwuIEkgYmVsaWV2ZSB0aGlzIGlzIGEgc29saWQgYWRkaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL3BhZGRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE3NgoJCQkJCQkJb3V0cHV0OiAxNjMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hvb3NpbmcgdGhlIFJpZ2h0IEVudHJ5IFBvaW50IGZvciBEQU1PTiBNaWdyYXRpb24gSW5pdGlhbGl6YXRpb24qKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGUgREFNT04gY29kZSBpbiBgbW0vZGFtb24vYCwgSSBzZWUgdGhhdCBib3RoIGBwYWRkci5jYCBhbmQgYHZhZGRyLmNgIGFyZSByZW1hcmthYmx5IGNsZWFuIGluIHRoYXQgdGhleSBkb24mIzM5O3QgY29udGFpbiBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRoYXQgbWVhbnMgSSBjYW4gc2FmZWx5IGRpc2NhcmQgdGhlbSBmb3IgYW4gaW5pdGlhbGl6YXRpb24gZW50cnkgcG9pbnQuIFRoZXkmIzM5O3JlIGNsZWFybHkgaW50ZW5kZWQgYXMgc3VwcG9ydCBtb2R1bGVzLiBTbywgbXkgZm9jdXMgbmF0dXJhbGx5IHNoaWZ0cyB0byBgZGFtb25fbWlncmF0ZV9wYWdlc2AgYW5kIGBkYW1vbl9zdGFydGAuIEdpdmVuIHRoYXQgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGlzIGxpa2VseSBtb3JlIGNsb3NlbHkgdGllZCB0byB0aGUgYWN0dWFsIG1pZ3JhdGlvbiBwcm9jZXNzLCBJIGxlYW4gdG93YXJkcyBgZGFtb25fc3RhcnRgIGFzIHRoZSBmdW5jdGlvbiB3aGVyZSBJJiMzOTtkIGtpY2sgb2ZmIHRoZSByZWxldmFudCBpbml0aWFsaXNhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBib3RoLCBvZiBjb3Vyc2UsIHRvIGVuc3VyZSB0aGlzIHdvbiYjMzk7dCBjYXVzZSBhbnkgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgZXhpc3RpbmcgREFNT04gb3BlcmF0aW9uIGZsb3csIGJ1dCBvbiB0aGUgZmFjZSBvZiBpdCwgYGRhbW9uX3N0YXJ0YCBsb29rcyBsaWtlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIGxvY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9taWdyYXRlX3BhZ2VzJiMzNDssCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OJiMzOTtzIGZvbGlvIG1pZ3JhdGlvbiBsb2dpYyBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgIHRvIHByb3Blcmx5IGFjY291bnQgZm9yIGlzb2xhdGVkIGZvbGlvcyBieSBjYWxsaW5nIGBub2RlX3N0YXRfYWRkX2ZvbGlvYCBhbmQgYG5vZGVfc3RhdF9zdWJfZm9saW9gLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgdGhlIERhdGEgQWNjZXNzIE1vbml0b3JpbmcgZnJhbWV3b3JrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX21pZ3JhdGVfcGFnZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04mIzM5O3MgZm9saW8gbWlncmF0aW9uIGxvZ2ljIGluIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgbW0vZGFtb24vcGFkZHIuY2AsIGFuZCBgbW0vZGFtb24vdmFkZHIuY2AgdG8gcHJvcGVybHkgYWNjb3VudCBmb3IgaXNvbGF0ZWQgZm9saW9zIGJ5IGNhbGxpbmcgYG5vZGVfc3RhdF9hZGRfZm9saW9gIGFuZCBgbm9kZV9zdGF0X3N1Yl9mb2xpb2AuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBmcmFtZXdvcmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDowNS42MDM1MzczOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2ODEwMjg1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fU1lTRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9taWdyYXRlX3BhZ2VzXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OJ3MgZm9saW8gbWlncmF0aW9uIGxvZ2ljIGluIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgbW0vZGFtb24vcGFkZHIuY2AsIGFuZCBgbW0vZGFtb24vdmFkZHIuY2AgdG8gcHJvcGVybHkgYWNjb3VudCBmb3IgaXNvbGF0ZWQgZm9saW9zIGJ5IGNhbGxpbmcgYG5vZGVfc3RhdF9hZGRfZm9saW9gIGFuZCBgbm9kZV9zdGF0X3N1Yl9mb2xpb2AuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBmcmFtZXdvcmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjA1LjYwMzU0NTMzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxMjgzMTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjA3ODVhYmZiZWY4NTMyNWNhNjAxM2U3Y2I4M2FkZGI0ZWMxZDU0OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzoyNDowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9vcHMtY29tbW9uLmMgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcXG5pbmRleCBlNTlmNzdlY2E4M2IyYi4uOTgwOWZhMTJiMDlhODAgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jXFxuKysrIGIvbW0vZGFtb24vb3BzLWNvbW1vbi5jXFxuQEAgLTM3NCw2ICszNzQsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxcbiBcXHR3aGlsZSAoIWxpc3RfZW1wdHkoZm9saW9fbGlzdCkpIHtcXG4gXFx0XFx0Zm9saW8gPSBscnVfdG9fZm9saW8oZm9saW9fbGlzdCk7XFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1KTtcXG4rXFx0XFx0bm9kZV9zdGF0X3N1Yl9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXFxuK1xcdFxcdFxcdFxcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XFxuIFxcdFxcdGZvbGlvX3B1dGJhY2tfbHJ1KGZvbGlvKTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcGFkZHIuYyBiL21tL2RhbW9uL3BhZGRyLmNcXG5pbmRleCA1YTZhNzgwNTQ3ODRhZi4uNWM2YzNhNTk3ZmQwYmYgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vcGFkZHIuY1xcbisrKyBiL21tL2RhbW9uL3BhZGRyLmNcXG5AQCAtMzQ2LDYgKzM0Niw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3BhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4gXFxuIFxcdFxcdGlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKVxcbiBcXHRcXHRcXHRnb3RvIHB1dF9mb2xpbztcXG4rXFx0XFx0bm9kZV9zdGF0X2FkZF9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXFxuK1xcdFxcdFxcdFxcdGZvbGlvX2lzX2ZpbGVfbHJ1KGZvbGlvKSk7XFxuIFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZmb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2Zm9saW9fbGlzdCk7XFxuIHB1dF9mb2xpbzpcXG4gXFx0XFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5pbmRleCA0OTc2Nzc1ZmUyNzYyYS4uMDY0ODQwMGIyZDY1YjQgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xcbisrKyBiL21tL2RhbW9uL3ZhZGRyLmNcXG5AQCAtNjI3LDcgKzYyNyw4IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuIGlzb2xhdGU6XFxuIFxcdGlmICghZm9saW9faXNvbGF0ZV9scnUoZm9saW8pKVxcbiBcXHRcXHRyZXR1cm47XFxuLVxcbitcXHRub2RlX3N0YXRfYWRkX2ZvbGlvKGZvbGlvLCBOUl9JU09MQVRFRF9BTk9OICtcXG4rXFx0XFx0XFx0Zm9saW9faXNfZmlsZV9scnUoZm9saW8pKTtcXG4gXFx0bGlzdF9hZGQoXFx1MDAyNmZvbGlvLVxcdTAwM2VscnUsIFxcdTAwMjZtaWdyYXRpb25fbGlzdHNbaV0pO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDowNi4zOTU4MDk5NjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTQ4ODg3NDI4ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fU1lTRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9taWdyYXRlX3BhZ2VzXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIERBTU9OJ3MgZm9saW8gbWlncmF0aW9uIGxvZ2ljIGluIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgbW0vZGFtb24vcGFkZHIuY2AsIGFuZCBgbW0vZGFtb24vdmFkZHIuY2AgdG8gcHJvcGVybHkgYWNjb3VudCBmb3IgaXNvbGF0ZWQgZm9saW9zIGJ5IGNhbGxpbmcgYG5vZGVfc3RhdF9hZGRfZm9saW9gIGFuZCBgbm9kZV9zdGF0X3N1Yl9mb2xpb2AuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBmcmFtZXdvcmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDYwNzg1YWJmYmVmODUzMjVjYTYwMTNlN2NiODNhZGRiNGVjMWQ1NDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwNzoyNDowMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL29wcy1jb21tb24uYyBiL21tL2RhbW9uL29wcy1jb21tb24uY1xuaW5kZXggZTU5Zjc3ZWNhODNiMmIuLjk4MDlmYTEyYjA5YTgwIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vb3BzLWNvbW1vbi5jXG4rKysgYi9tbS9kYW1vbi9vcHMtY29tbW9uLmNcbkBAIC0zNzQsNiArMzc0LDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCxcbiBcdHdoaWxlICghbGlzdF9lbXB0eShmb2xpb19saXN0KSkge1xuIFx0XHRmb2xpbyA9IGxydV90b19mb2xpbyhmb2xpb19saXN0KTtcbiBcdFx0bGlzdF9kZWwoXHUwMDI2Zm9saW8tXHUwMDNlbHJ1KTtcbitcdFx0bm9kZV9zdGF0X3N1Yl9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXG4rXHRcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0XHRmb2xpb19wdXRiYWNrX2xydShmb2xpbyk7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcGFkZHIuYyBiL21tL2RhbW9uL3BhZGRyLmNcbmluZGV4IDVhNmE3ODA1NDc4NGFmLi41YzZjM2E1OTdmZDBiZiAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3BhZGRyLmNcbisrKyBiL21tL2RhbW9uL3BhZGRyLmNcbkBAIC0zNDYsNiArMzQ2LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFxuIFx0XHRpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSlcbiBcdFx0XHRnb3RvIHB1dF9mb2xpbztcbitcdFx0bm9kZV9zdGF0X2FkZF9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXG4rXHRcdFx0XHRmb2xpb19pc19maWxlX2xydShmb2xpbykpO1xuIFx0XHRsaXN0X2FkZChcdTAwMjZmb2xpby1cdTAwM2VscnUsIFx1MDAyNmZvbGlvX2xpc3QpO1xuIHB1dF9mb2xpbzpcbiBcdFx0YWRkciArPSBmb2xpb19zaXplKGZvbGlvKTtcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xuaW5kZXggNDk3Njc3NWZlMjc2MmEuLjA2NDg0MDBiMmQ2NWI0IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vdmFkZHIuY1xuKysrIGIvbW0vZGFtb24vdmFkZHIuY1xuQEAgLTYyNyw3ICs2MjcsOCBAQCBzdGF0aWMgdm9pZCBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuIGlzb2xhdGU6XG4gXHRpZiAoIWZvbGlvX2lzb2xhdGVfbHJ1KGZvbGlvKSlcbiBcdFx0cmV0dXJuO1xuLVxuK1x0bm9kZV9zdGF0X2FkZF9mb2xpbyhmb2xpbywgTlJfSVNPTEFURURfQU5PTiArXG4rXHRcdFx0Zm9saW9faXNfZmlsZV9scnUoZm9saW8pKTtcbiBcdGxpc3RfYWRkKFx1MDAyNmZvbGlvLVx1MDAzZWxydSwgXHUwMDI2bWlncmF0aW9uX2xpc3RzW2ldKTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDowNi4zOTU4MTIyNDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTYwNTc2MDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEQU1PTiBQYXRjaCBmb3IgRm9saW8gSXNvbGF0aW9uIFN0YXRpc3RpY3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBhbmQgaXQncyBtb2RpZnlpbmcgYSBmZXcga2V5IGZpbGVzOiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFkZGluZyBjYWxscyB0byBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYCB3aGVuIHdlJ3JlIGlzb2xhdGluZyBhbmQgcHV0dGluZyBiYWNrIGZvbGlvcyBkdXJpbmcgbWlncmF0aW9uIHdpdGhpbiBEQU1PTi4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBleGlzdGluZyBEQU1PTiBjb25maWd1cmF0aW9uLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB3aGljaCBjb25maWcgb3B0aW9ucyBnb3Zlcm4gdGhlc2UgZmlsZXMsIGFuZCBob3cgdGhlc2UgY2hhbmdlcyBpbnRlcmFjdCB3aXRoIHRob3NlIG9wdGlvbnMuIEkga25vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQgZm9yIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgbW0vZGFtb24vcGFkZHIuY2AsIGFuZCBgbW0vZGFtb24vdmFkZHIuY2AuIFRoaXMgaXMgd2hlcmUgYGdyZXBwZXJgIGlzIGdvaW5nIHRvIGJlIG15IGJlc3QgZnJpZW5kLiBJJ2xsIGZpcmUgaXQgdXAgYW5kIHVzZSBpdCB0byBwcmVjaXNlbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDgwLCJPdXRwdXRUb2tlbnMiOjEwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjEwLjk1NjM5MTA5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI1MTIzNjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uL29wcy1jb21tb24ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTEuMTg4OTEwNDUzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDkwMjM4NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb24vcGFkZHIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTEuNDU5ODIxMzg4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTU1NTkyNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb24vdmFkZHIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTEuNzU1Mzg5ODAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5NDI5MjMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUXVpY2sgTWFrZWZpbGUgQ2hlY2sqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gYW55dGhpbmcgZWxzZSwgbGV0IG1lIGp1c3QgcXVpY2tseSBnbGFuY2UgYXQgdGhlIGBtbS9kYW1vbi9NYWtlZmlsZWAuIEl0J3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNldCB1cCBhcyBJIGV4cGVjdCBmb3IgYW55IGZ1cnRoZXIgZXhwbG9yYXRpb24uIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGluY2x1c2lvbiBvZiBhbnkgc3BlY2lmaWMgY29tcGlsZXIgZmxhZ3MsIG9iamVjdCBmaWxlcywgb3IgZGVwZW5kZW5jaWVzIGZvciB0aGF0IHBhcnRpY3VsYXIgZGlyZWN0b3J5LiBUaGlzIGJyaWVmIGNoZWNrIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgXCJsYXkgb2YgdGhlIGxhbmRcIiBiZWZvcmUgSSBkaWcgZGVlcGVyIGludG8gdGhlIG1vcmUgY29tcGxleCBmdW5jdGlvbmFsaXRpZXMgb2YgRGFtb24gb3IgYW55IGFzc29jaWF0ZWQgbW9kdWxlcy4gSXQncyBtb3N0bHkgYSBtZW50YWwgbm90ZSB0byByZW1pbmQgbXlzZWxmIG9mIHRoZSBidWlsZCBwcm9jZXNzIGZvciBhIHF1aWNrIHJlZnJlc2hlciwgYmVmb3JlIEkgY29udGludWUgZXhwbG9yaW5nIHRoYXQgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoxNC42NDk2ODU1ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai15XFx0XFx0XFx0XFx0Oj0gY29yZS5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cXG4gICA1OlxcdG9iai0kKENPTkZJR19EQU1PTl9QQUREUilcXHQrPSBvcHMtY29tbW9uLm8gcGFkZHIub1xcbiAgIDY6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVxcdCs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xcbiAgIDg6XFx0b2JqLSQoQ09ORklHX0RBTU9OX0xSVV9TT1JUKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gbHJ1X3NvcnQub1xcbiAgIDk6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1NUQVQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBzdGF0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTQuNjQ5Nzc5NjE1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MDk1NTY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBEQU1PTidzIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgREFNT04gaXMgY29uZmlndXJlZC4gSSBrbm93IHRoYXQgYENPTkZJR19EQU1PTl9WQUREUmAgYW5kIGBDT05GSUdfREFNT05fUEFERFJgIGFyZSB0aGUga2V5IHNldHRpbmdzIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQuIEknbSBnb2luZyB0byBxdWlja2x5IGhlYWQgb3ZlciB0byBgbW0vZGFtb24vS2NvbmZpZ2AgdG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXNlIGNvbmZpZ3MgbWlnaHQgaGF2ZS4gVGhhdCdsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB3aGF0IG9wdGlvbnMgSSBuZWVkIHRvIGVuYWJsZSBvciBkaXNhYmxlIGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGlmIEkgd2FudCB0byBwbGF5IGFyb3VuZCB3aXRoIERBTU9OJ3MgdmlydHVhbCBhbmQgcGh5c2ljYWwgYWRkcmVzcyBtb25pdG9yaW5nLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBhbnl0aGluZyBlbHNlIGluIHRoZSBrZXJuZWwgaXMgaW1wYWN0ZWQgYnkgdGhvc2UgY2hvaWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1NywiT3V0cHV0VG9rZW5zIjo2NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTguNzMwNzM3NzkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQwNjk1MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OX1ZBRERSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0yNj1jb25maWcgREFNT05fS1VOSVRfVEVTVFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz00Nz1jb25maWcgREFNT05fUEFERFJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoxOS4xOTQ4MTIzODhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDM0MDI1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05fUEFERFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTM4PWNvbmZpZyBEQU1PTl9WQUREUlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MTkuMzU1MTU4Nzk5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2ODUwMTEwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIEtjb25maWc6IG1tL2RhbW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIGBtbS9kYW1vbi9LY29uZmlnYCBmaWxlLiBJIHNwZWNpZmljYWxseSBuZWVkIHRvIGNoZWNrIG91dCB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lcyAzOCBhbmQgNDcuIE15IHNwaWRlciBzZW5zZXMgYXJlIHRpbmdsaW5nLCBhbmQgSSBoYXZlIGEgZmVlbGluZyB0aG9zZSBsaW5lcyBob2xkIHRoZSBrZXkgdG8gc29tZXRoaW5nIGltcG9ydGFudCDigJMgbWF5YmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgYSBjb25kaXRpb25hbCBkZXBlbmRlbmN5LCBvciBhIGZsYWcgdGhhdOKAmXMgY2F1c2luZyBtZSBhIGhlYWRhY2hlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaGVyZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgbWFnaWMgaXMgaG9sZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyMi4wNDAxNzIzODNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDM0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIERBTU9OX1ZBRERSXFxuICAzOTpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNDE6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA0MjpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDQ1OlxcdFxcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgREFNT05fUEFERFJcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNTA6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA1MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDU0OlxcdFxcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuICA1NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDU5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjIyLjA0MDI3ODMyM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE4NzQ2MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBEQU1PTiBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gaXQgbG9va3MgbGlrZSBJJ20gZGVhbGluZyB3aXRoIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGFuZCBgREFNT05fUEFERFJgIGFzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBEQU1PTmAgY29uZmlndXJhdGlvbiBpdHNlbGYuIExldCdzIHN0YXJ0IHRoZXJlLiBTZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgc3BlY2lmaWMgYWRkcmVzcyBkZXRhaWxzLiBMZXQncyBzZWUgd2hhdCB0aGF0IGBEQU1PTmAgY29uZmlnIHRlbGxzIHVzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjI0Ljg1OTAyNzU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU4MjU2NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyNC45NzQ4NTkzNTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1NzI0NTg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgREFNT04gTWlncmF0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGhpdHRpbmcgYSBmZXcga2V5IGZ1bmN0aW9ucyBpbiB0aGUgREFNT04gbWlncmF0aW9uIGNvZGU6IGBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3RgIGluIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgLCBgZGFtb25fcGFfbWlncmF0ZWAgaW4gYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkYCBpbiBgbW0vZGFtb24vdmFkZHIuY2AuIE15IGluaXRpYWwgY2hlY2sgY29uZmlybXMgdGhlc2UgYXJlIGRlZmluaXRlbHkgYWN0aXZlIGNvbXBvbmVudHM7IG5vIGRlYWQgY29kZSBoZXJlLiBUaGUgcGF0Y2ggbXVzdCBiZSBkZXNpZ25lZCB0byBpbXBhY3QgdGhlc2Ugc3BlY2lmaWMgcm91dGluZXMuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjb3JlIHN5bWJvbHMgdGhlIHBhdGNoIGlzIHRhcmdldGluZyB3aXRoaW4gdGhvc2UgYXJlYXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWluZyBhbHRlcmVkIGFuZCB3aHksIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIExldCdzIGRpZyBpbiBhbmQgZmluZCB0aG9zZSBmb2N1cyBzeW1ib2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTEyLCJPdXRwdXRUb2tlbnMiOjExMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjI5LjAzMjEwNzg4M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3ODIyODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9vcHMtY29tbW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vb3BzLWNvbW1vbi5jPTI2MT1ib29sIGRhbW9zX2ZvbGlvX2ZpbHRlcl9tYXRjaChzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmaWx0ZXIsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzAyLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzozMDM6c3RhdGljIHVuc2lnbmVkIGludCBfX2RhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzA0LVxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgKm1pZ3JhdGVfZm9saW9zLCBzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMzMi1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MzMzOnN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMzNC1cXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTM2MC1cXHQvKiBNaWdyYXRlIGZvbGlvcyBzZWxlY3RlZCBmb3IgbWlncmF0aW9uICovXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjM2MTpcXHRucl9taWdyYXRlZCArPSBfX2RhbW9uX21pZ3JhdGVfZm9saW9fbGlzdChcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzYyLVxcdFxcdFxcdFxcdTAwMjZtaWdyYXRlX2ZvbGlvcywgcGdkYXQsIHRhcmdldF9uaWQpO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTM4NT11bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDA5LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo0MTA6XFx0XFx0bnJfbWlncmF0ZWQgKz0gZGFtb25fbWlncmF0ZV9mb2xpb19saXN0KFxcdTAwMjZub2RlX2ZvbGlvX2xpc3QsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQxMS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBOT0RFX0RBVEEobmlkKSxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy00MTUtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjQxNjpcXHRucl9taWdyYXRlZCArPSBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3QoXFx1MDAyNm5vZGVfZm9saW9fbGlzdCxcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDE3LVxcdFxcdFxcdFxcdFxcdFxcdCAgIE5PREVfREFUQShuaWQpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyOS40Mjk5MzY2OTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTg5NDg1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9wYV9taWdyYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL3BhZGRyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vcGFkZHIuYz0zMTk9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfZGVhY3RpdmF0ZV9wYWdlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbi0tXFxubW0vZGFtb24vcGFkZHIuYy0zMjUtXFxubW0vZGFtb24vcGFkZHIuYzozMjY6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL3BhZGRyLmMtMzI3LVxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkcl91bml0LCBzdHJ1Y3QgZGFtb3MgKnMsXFxuLS1cXG5tbS9kYW1vbi9wYWRkci5jPTM4OT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9wYV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vcGFkZHIuYy00MDUtXFx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XFxubW0vZGFtb24vcGFkZHIuYzo0MDY6XFx0XFx0cmV0dXJuIGRhbW9uX3BhX21pZ3JhdGUociwgYXVuaXQsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XFxubW0vZGFtb24vcGFkZHIuYy00MDctXFx0Y2FzZSBEQU1PU19TVEFUOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyOS41NDk4MzgxNjVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODAwMDk2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi92YWRkci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3ZhZGRyLmM9NTc0PXN0cnVjdCBkYW1vc192YV9taWdyYXRlX3ByaXZhdGUge1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYy01ODQtICovXFxubW0vZGFtb24vdmFkZHIuYzo1ODU6c3RhdGljIHZvaWQgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoc3RydWN0IGZvbGlvICpmb2xpbyxcXG5tbS9kYW1vbi92YWRkci5jLTU4Ni1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYz02MzU9c3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTY1OC1cXHRcXHRcXHRnb3RvIGh1Z2Vfb3V0O1xcbm1tL2RhbW9uL3ZhZGRyLmM6NjU5OlxcdFxcdGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkKGZvbGlvLCB3YWxrLVxcdTAwM2V2bWEsIGFkZHIsIGRlc3RzLFxcbm1tL2RhbW9uL3ZhZGRyLmMtNjYwLVxcdFxcdFxcdFxcdG1pZ3JhdGlvbl9saXN0cyk7XFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTY4MS1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi92YWRkci5jOjY4MjpcXHRcXHRkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChmb2xpbywgd2Fsay1cXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcXG5tbS9kYW1vbi92YWRkci5jLTY4My1cXHRcXHRcXHRcXHRtaWdyYXRpb25fbGlzdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDoyOS43MDc4NDUzOTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwNjEyMjk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJZGVudGlmeWluZyBFbnRyeSBQb2ludHMgZm9yIE1pZ3JhdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSB0aHJlZSBtaWdyYXRpb24gZnVuY3Rpb25zOiBgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0YCwgYGRhbW9uX3BhX21pZ3JhdGVgLCBhbmQgYGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkYC4gVGhlIGNvZGUgY2xlYXJseSBtYXJrcyB0aGVtIGFzIGBzdGF0aWNgLCB3aGljaCBtZWFucyB0aGV5J3JlIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmUgKmFyZSogdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlc2UgZnVuY3Rpb25zP1wiIFdlIG5lZWQgdG8gdHJhY2UgdGhlaXIgY2FsbCBjaGFpbnMuXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gYGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdGAgaXMgY2FsbGVkIGJ5IGBkYW1vbl9taWdyYXRlX3BhZ2VzYC4gRWFzeSBlbm91Z2guIFRoZW4sIGBkYW1vbl9wYV9taWdyYXRlYCBpcyBjYWxsZWQgYnkgYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWAuIEdvdCBpdC4gTm93LCBmb3IgYGRhbW9zX3ZhX21pZ3JhdGVfZGVzdHNfYWRkYCwgaXQncyBjYWxsZWQgYnkgYGRhbW9zX3ZhX21pZ3JhdGVfcG1kX2VudHJ5YCwgYnV0IHRoYXQgKml0c2VsZiogaXMgc3RhdGljLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIHdoYXQgY2FsbHMgKnRoYXQqIGZ1bmN0aW9uLCBgZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnlgPyBXZSBuZWVkIHRvIGtlZXAgZGlnZ2luZyB0byBmaW5kIHRoZSB1bHRpbWF0ZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBmdW5jdGlvbidzIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTYzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MzQuMTEzOTcxODU3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTEwMzAyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vdmFkZHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi92YWRkci5jPTU4NT1zdGF0aWMgdm9pZCBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy02MzQtXFxubW0vZGFtb24vdmFkZHIuYzo2MzU6c3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxubW0vZGFtb24vdmFkZHIuYy02MzYtXFx0XFx0dW5zaWduZWQgbG9uZyBuZXh0LCBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9NzM4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03NTAtXFx0c3RydWN0IG1tX3dhbGtfb3BzIHdhbGtfb3BzID0ge1xcbm1tL2RhbW9uL3ZhZGRyLmM6NzUxOlxcdFxcdC5wbWRfZW50cnkgPSBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeSxcXG5tbS9kYW1vbi92YWRkci5jLTc1Mi1cXHRcXHQucHRlX2VudHJ5ID0gTlVMTCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6MzQuMzA1MDA4OTM3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjcyMjE2NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkFuYWx5emluZyB0aGUgU3RhdGljIE5hdHVyZSBvZiBgZGFtb3NfdmFfbWlncmF0ZWAqKlxuXG5Pa2F5LCBzbyBgZGFtb3NfdmFfbWlncmF0ZWAgaXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGEgZmV3IHRoaW5ncywgYnV0IGJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMsIGxldCdzIHRha2UgYSBtZXRob2RpY2FsIGFwcHJvYWNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgaXQncyBzdGF0aWMg4oCTIHdoYXQgZXhhY3RseSAqY2FsbHMqIGBkYW1vc192YV9taWdyYXRlYD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlLiBTdGF0aWMgZnVuY3Rpb25zIGhhdmUgdGhlaXIgc3BlY2lmaWMgaW1wbGljYXRpb25zIHJlZ2FyZGluZyBzY29wZSwgbGlmZWN5Y2xlLCBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cywgYW5kIHRoYXQgaGFzIGEgZGlyZWN0IGluZmx1ZW5jZSBvbiBob3cgaXQncyB1c2VkIHdpdGhpbiBhIG1vZHVsZSwgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzLiBTbywgdGhlIGludmVzdGlnYXRpb24gYmVnaW5zOiBJIG5lZWQgdG8gaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzLiBGcm9tIHRoZXJlLCBJIGNhbiB1bmRlcnN0YW5kIGl0cyBwbGFjZSBpbiB0aGlzIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjM3LjM3MjI0NDg4OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTcxODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX3ZhX21pZ3JhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vdmFkZHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi92YWRkci5jPTU0NT1zdGF0aWMgYm9vbCBkYW1vc192YV9maWx0ZXJfb3V0KHN0cnVjdCBkYW1vcyAqc2NoZW1lLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy01NzMtXFxubW0vZGFtb24vdmFkZHIuYzo1NzQ6c3RydWN0IGRhbW9zX3ZhX21pZ3JhdGVfcHJpdmF0ZSB7XFxubW0vZGFtb24vdmFkZHIuYy01NzUtXFx0c3RydWN0IGxpc3RfaGVhZCAqbWlncmF0aW9uX2xpc3RzO1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYy01ODQtICovXFxubW0vZGFtb24vdmFkZHIuYzo1ODU6c3RhdGljIHZvaWQgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoc3RydWN0IGZvbGlvICpmb2xpbyxcXG5tbS9kYW1vbi92YWRkci5jLTU4Ni1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy02MzQtXFxubW0vZGFtb24vdmFkZHIuYzo2MzU6c3RhdGljIGludCBkYW1vc192YV9taWdyYXRlX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxubW0vZGFtb24vdmFkZHIuYy02MzYtXFx0XFx0dW5zaWduZWQgbG9uZyBuZXh0LCBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG5tbS9kYW1vbi92YWRkci5jLTYzNy17XFxubW0vZGFtb24vdmFkZHIuYzo2Mzg6XFx0c3RydWN0IGRhbW9zX3ZhX21pZ3JhdGVfcHJpdmF0ZSAqcHJpdiA9IHdhbGstXFx1MDAzZXByaXZhdGU7XFxubW0vZGFtb24vdmFkZHIuYy02MzktXFx0c3RydWN0IGxpc3RfaGVhZCAqbWlncmF0aW9uX2xpc3RzID0gcHJpdi1cXHUwMDNlbWlncmF0aW9uX2xpc3RzO1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYy02NTgtXFx0XFx0XFx0Z290byBodWdlX291dDtcXG5tbS9kYW1vbi92YWRkci5jOjY1OTpcXHRcXHRkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZChmb2xpbywgd2Fsay1cXHUwMDNldm1hLCBhZGRyLCBkZXN0cyxcXG5tbS9kYW1vbi92YWRkci5jLTY2MC1cXHRcXHRcXHRcXHRtaWdyYXRpb25fbGlzdHMpO1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYy02ODEtXFx0XFx0XFx0Y29udGludWU7XFxubW0vZGFtb24vdmFkZHIuYzo2ODI6XFx0XFx0ZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGQoZm9saW8sIHdhbGstXFx1MDAzZXZtYSwgYWRkciwgZGVzdHMsXFxubW0vZGFtb24vdmFkZHIuYy02ODMtXFx0XFx0XFx0XFx0bWlncmF0aW9uX2xpc3RzKTtcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9NzE5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX21hZHZpc2Uoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03MzctXFxubW0vZGFtb24vdmFkZHIuYzo3Mzg6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXFxubW0vZGFtb24vdmFkZHIuYy03MzktXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03NDItXFx0TElTVF9IRUFEKGZvbGlvX2xpc3QpO1xcbm1tL2RhbW9uL3ZhZGRyLmM6NzQzOlxcdHN0cnVjdCBkYW1vc192YV9taWdyYXRlX3ByaXZhdGUgcHJpdjtcXG5tbS9kYW1vbi92YWRkci5jLTc0NC1cXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtNzUwLVxcdHN0cnVjdCBtbV93YWxrX29wcyB3YWxrX29wcyA9IHtcXG5tbS9kYW1vbi92YWRkci5jOjc1MTpcXHRcXHQucG1kX2VudHJ5ID0gZGFtb3NfdmFfbWlncmF0ZV9wbWRfZW50cnksXFxubW0vZGFtb24vdmFkZHIuYy03NTItXFx0XFx0LnB0ZV9lbnRyeSA9IE5VTEwsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTg3OT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy05MDUtXFx0Y2FzZSBEQU1PU19NSUdSQVRFX0NPTEQ6XFxubW0vZGFtb24vdmFkZHIuYzo5MDY6XFx0XFx0cmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG5tbS9kYW1vbi92YWRkci5jLTkwNy1cXHRjYXNlIERBTU9TX1NUQVQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjM3LjUxNjgyNTk3MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE0NjE3ODg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIOKAkyB0aGV5J3JlIHNjb3BlZCBpbnRlcm5hbGx5LCBidXQgdGhleSBjYW4gc3RpbGwgaW50ZXJhY3Qgd2l0aCBnbG9iYWwgb3Igc3RhdGljIGRhdGEuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQuXG5cbk15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGlkZW50aWZ5ICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UuIEknbGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gc2VlIHRoZSBjYWxsIGdyYXBoLiBJZGVudGlmeWluZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IOKAkyB0aGUgcmVhc29ucyBmb3IgaXRzIGludm9jYXRpb24sIHRoZSBkYXRhIGJlaW5nIHBhc3NlZCBpbiwgYW5kIHVsdGltYXRlbHksIGl0cyBvdmVyYWxsIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHRzIHdpbGwgYWxsb3cgbWUgdG8gZ3Jhc3AgdGhlIGludGVudCBiZWhpbmQgdGhlIHN0YXRpYyBuYXR1cmUuIEkgc3VzcGVjdCBpdCdzIGNyaXRpY2FsIHRvIGEgc3BlY2lmaWMgbW9kdWxlIG9yIGNvbXBvbmVudCBhbmQgSSBtdXN0IGRldGVybWluZSBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVyIGZ1bmN0aW9ucy4gSSdsbCBnZXQgdG8gd29yayBhbmQgdHJhY2UgdGhvc2UgY2FsbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo0MC45MzE0NDgxMDVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTE2Mjc2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl92YV9hcHBseV9zY2hlbWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vdmFkZHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi92YWRkci5jPTg1ND1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtODc4LVxcbm1tL2RhbW9uL3ZhZGRyLmM6ODc5OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxubW0vZGFtb24vdmFkZHIuYy04ODAtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9OTM3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3ZhX2luaXRjYWxsKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTk0Ni1cXHRcXHQuY2xlYW51cF90YXJnZXQgPSBkYW1vbl92YV9jbGVhbnVwX3RhcmdldCxcXG5tbS9kYW1vbi92YWRkci5jOjk0NzpcXHRcXHQuYXBwbHlfc2NoZW1lID0gZGFtb25fdmFfYXBwbHlfc2NoZW1lLFxcbm1tL2RhbW9uL3ZhZGRyLmMtOTQ4LVxcdFxcdC5nZXRfc2NoZW1lX3Njb3JlID0gZGFtb25fdmFfc2NoZW1lX3Njb3JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo0MS4wODA2MTYzOTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMzYwNTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgSSdtIHRoaW5raW5nIGhlcmUuLi5cblxuKipEZWNvbnN0cnVjdGluZyBEYW1vbidzIEFwcGx5IFNjaGVtZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBob3cgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAgYW5kIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgIGFyZSBiZWluZyB1c2VkLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOyB0aGV5J3JlIGFzc2lnbmVkIHRvIHRoZSBgLmFwcGx5X3NjaGVtZWAgYXR0cmlidXRlIG9mIGBkYW1vbl9vcGVyYXRpb25zYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0ZXJtcyBvZiB0aGUgdXN1YWwgRGFtb24gaW1wbGVtZW50YXRpb24g4oCTIHlvdSdkIGV4cGVjdCBkaWZmZXJlbnQgc2NoZW1lcyB0byBiZSBhcHBsaWVkIGluIGRpZmZlcmVudCBjb250ZXh0cywgdmlydHVhbCBhZGRyZXNzIHNwYWNlIHZzLiBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuXG5Ob3csIG15IGN1cmlvc2l0eSBpcyBwaXF1ZWQuIFRoZSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGlzIGAuYXBwbHlfc2NoZW1lYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBmbG93IGFuZCB0aGUgc3BlY2lmaWMgc2NlbmFyaW9zIHdoZXJlIHRoZXNlIHNjaGVtZXMgZ2V0IGFwcGxpZWQuIEtub3dpbmcgdGhlIGNvbnRleHRzIHdpbGwgZ2l2ZSBpbnNpZ2h0IGludG8gaG93IHRoZXNlIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgYXJlIGludm9rZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCB0cmFjZSB0aG9zZSBmdW5jdGlvbiBjYWxscy4gTGV0J3Mgc2VlIHdoYXQgdGhlIHN0YWNrIGxvb2tzIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMzQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo0NC41OTQyMjQ5NTVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDU3Njc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJcXFxcLmFwcGx5X3NjaGVtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI1NzI9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjYwOC1cXG5tbS9kYW1vbi9jb3JlLmM6MjYwOTpcXHRpZiAoYy1cXHUwMDNlb3BzLmFwcGx5X3NjaGVtZSkge1xcbm1tL2RhbW9uL2NvcmUuYy0yNjEwLVxcdFxcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjYyMi1cXHRcXHRcXHRcXHRkYW1vbl9ucl9yZWdpb25zKHQpLCBkb190cmFjZSk7XFxubW0vZGFtb24vY29yZS5jOjI2MjM6XFx0XFx0c3pfYXBwbGllZCA9IGMtXFx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcXG5tbS9kYW1vbi9jb3JlLmMtMjYyNC1cXHRcXHRcXHRcXHRcXHUwMDI2c3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xcbi0tXFxubW0vZGFtb24vcGFkZHIuYz00Mzc9c3RhdGljIGludCBfX2luaXQgZGFtb25fcGFfaW5pdGNhbGwodm9pZClcXG4tLVxcbm1tL2RhbW9uL3BhZGRyLmMtNDQ2LVxcdFxcdC50YXJnZXRfdmFsaWQgPSBOVUxMLFxcbm1tL2RhbW9uL3BhZGRyLmM6NDQ3OlxcdFxcdC5hcHBseV9zY2hlbWUgPSBkYW1vbl9wYV9hcHBseV9zY2hlbWUsXFxubW0vZGFtb24vcGFkZHIuYy00NDgtXFx0XFx0LmdldF9zY2hlbWVfc2NvcmUgPSBkYW1vbl9wYV9zY2hlbWVfc2NvcmUsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTkzNz1zdGF0aWMgaW50IF9faW5pdCBkYW1vbl92YV9pbml0Y2FsbCh2b2lkKVxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy05NDYtXFx0XFx0LmNsZWFudXBfdGFyZ2V0ID0gZGFtb25fdmFfY2xlYW51cF90YXJnZXQsXFxubW0vZGFtb24vdmFkZHIuYzo5NDc6XFx0XFx0LmFwcGx5X3NjaGVtZSA9IGRhbW9uX3ZhX2FwcGx5X3NjaGVtZSxcXG5tbS9kYW1vbi92YWRkci5jLTk0OC1cXHRcXHQuZ2V0X3NjaGVtZV9zY29yZSA9IGRhbW9uX3ZhX3NjaGVtZV9zY29yZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6NDQuOTg0ODA3NDg0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTg2ODQ1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERBTU9OIEV4ZWN1dGlvbiBGbG93KipcblxuQWxyaWdodCwgc28gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgaXMgZGVmaW5pdGVseSB0aGUgZHJpdmVyIG9mIHRoZSBzaG93LCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBhY3R1YWxseSAqZG9lcyogYnkgdHJhY2luZyBpdHMgY2FsbHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHpvb20gaW4gb24gYGRhbW9zX2FwcGx5X3NjaGVtZWAuIFRoaXMgZnVuY3Rpb24gaXMgcGl2b3RhbDsgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGFjdHVhbCBleGVjdXRpb24gcGF0aC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBTdGF0aWMgb25lcyBhcmUgdXN1YWxseSBqdXN0IHNldHVwIG9yIGludGVybmFsIGRldGFpbHMgSSdtIHByb2JhYmx5IG5vdCBhcyBpbnRlcmVzdGVkIGluIGF0IHRoZSBtb21lbnQuIEkgd2FudCB0aGUgbWVhdHksIGR5bmFtaWMgcGFydHMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBzeXN0ZW0uIE15IGdvYWwgaXMgdG8gbWFwIG91dCBob3cgREFNT04gaW50ZXJhY3RzIHdpdGggc3lzZnMgb3IsIGluZGVlZCwgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDc4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjQ6NDguMjgzNDk1MDg1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzA4ODczMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2RhbW9uZF9hcHBseV9zY2hlbWVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9MzIwMz1zdGF0aWMgdm9pZCBkYW1vc190cmFjZV9zdGF0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjE4LVxcbm1tL2RhbW9uL2NvcmUuYzozMjE5OnN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjIwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNzUyPXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM4MjQtXFx0XFx0LypcXG5tbS9kYW1vbi9jb3JlLmM6MzgyNTpcXHRcXHQgKiBkbyBrZGFtb25kX2NhbGwoKSBhbmQga2RhbW9uZF9hcHBseV9zY2hlbWVzKCkgYWZ0ZXJcXG5tbS9kYW1vbi9jb3JlLmMtMzgyNi1cXHRcXHQgKiBrZGFtb25kX21lcmdlX3JlZ2lvbnMoKSBpZiBwb3NzaWJsZSwgdG8gcmVkdWNlIG92ZXJoZWFkXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzgzOS1cXHRcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmN0eC1cXHUwMDNlc2NoZW1lcykpXFxubW0vZGFtb24vY29yZS5jOjM4NDA6XFx0XFx0XFx0a2RhbW9uZF9hcHBseV9zY2hlbWVzKGN0eCk7XFxubW0vZGFtb24vY29yZS5jLTM4NDEtXFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo0OC40NTQzOTE0MjZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyMzM4NzYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgREFNT04gVGhyZWFkIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIGBrZGFtb25kX2ZuYCBpcyB0aGUgY29yZSB0aHJlYWQgZnVuY3Rpb24gZm9yIERBTU9OLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgaGVhcnQgb2YgdGhlIERBTU9OIHByb2Nlc3MuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG9uIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHBhZ2UgbWFuYWdlbWVudC4gVGhlIG9idmlvdXMgY2FuZGlkYXRlcyBhcmUgYGRhbW9uX21pZ3JhdGVfcGFnZXNgLCBgZGFtb25fcGFfYXBwbHlfc2NoZW1lYCwgYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAsIGFuZCwgb2YgY291cnNlLCB0aGUgdGhyZWFkIGZ1bmN0aW9uIGl0c2VsZiwgYGtkYW1vbmRfZm5gLlxuXG5IbW0sIHdhaXQgYSBzZWNvbmQuIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpc24ndCBkZWNsYXJlZCBzdGF0aWMuIFRoYXQgcmFpc2VzIGEgZmxhZy4gSWYgaXQncyBub3Qgc3RhdGljLCBpdCBzdWdnZXN0cyB0aGF0IGl0IG1pZ2h0IGJlIGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBvdXRzaWRlIG9mIERBTU9OJ3MgY29yZSBtb2R1bGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBEQU1PTiBjb3JlIGxvZ2ljIGJldHRlci4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBhbmQgc2VlIHdoYXQgaXQncyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo1Mi41Nzc3ODE4ODJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTc5MzA3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9taWdyYXRlX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9vcHMtY29tbW9uLmM9MzMzPXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fbWlncmF0ZV9mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzg0LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzozODU6dW5zaWduZWQgbG9uZyBkYW1vbl9taWdyYXRlX3BhZ2VzKHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsIGludCB0YXJnZXRfbmlkKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0zODYte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTIwPWJvb2wgZGFtb3NfZm9saW9fZmlsdGVyX21hdGNoKHN0cnVjdCBkYW1vc19maWx0ZXIgKmZpbHRlciwgc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjIxOnVuc2lnbmVkIGxvbmcgZGFtb25fbWlncmF0ZV9wYWdlcyhzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LCBpbnQgdGFyZ2V0X25pZCk7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTIyLVxcbi0tXFxubW0vZGFtb24vcGFkZHIuYz0zMjY9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcGFfbWlncmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbi0tXFxubW0vZGFtb24vcGFkZHIuYy0zNTUtXFx0fVxcbm1tL2RhbW9uL3BhZGRyLmM6MzU2OlxcdGFwcGxpZWQgPSBkYW1vbl9taWdyYXRlX3BhZ2VzKFxcdTAwMjZmb2xpb19saXN0LCBzLVxcdTAwM2V0YXJnZXRfbmlkKTtcXG5tbS9kYW1vbi9wYWRkci5jLTM1Ny1cXHRjb25kX3Jlc2NoZWQoKTtcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9NzM4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX21pZ3JhdGUoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy03NzQtXFx0XFx0bmlkID0gdXNlX3RhcmdldF9uaWQgPyBzLVxcdTAwM2V0YXJnZXRfbmlkIDogZGVzdHMtXFx1MDAzZW5vZGVfaWRfYXJyW2ldO1xcbm1tL2RhbW9uL3ZhZGRyLmM6Nzc1OlxcdFxcdGFwcGxpZWQgKz0gZGFtb25fbWlncmF0ZV9wYWdlcyhcXHUwMDI2cHJpdi5taWdyYXRpb25fbGlzdHNbaV0sIG5pZCk7XFxubW0vZGFtb24vdmFkZHIuYy03NzYtXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI0OjUyLjcyOTU4MTk1M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjExOTkzMzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIEtlcm5lbCBUaHJlYWQgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGxvb2tzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgREFNT04gbWlncmF0aW9uIHByb2Nlc3MuIFdhaXQsIGhhbmcgb24sIEkgc2VlIGBkYW1vbl9wYV9hcHBseV9zY2hlbWVgIGFuZCBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBkZWZpbmVkIGFzIHN0YXRpYyBidXQgdGhleSdyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgc28gdGhleSBjYW4gYmUgdHJpZ2dlcmVkIHNvbWVob3cuIEFuZCB0aGVuIEkgc3BvdCBgZGFtb3NfYXBwbHlfc2NoZW1lYCBpcyBhbHNvIHN0YXRpYyAtIGludGVyZXN0aW5nLiBOb3csIG15IG5leHQgbW92ZSBpcyB0byBzZWUgaWYgYW55IG9mIHRoZXNlIGFyZSBjb25uZWN0ZWQgdG8gc3lzZnMgZW50cnkgcG9pbnRzIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvbnRyb2wgbGl2ZXMuXG5cblJpZ2h0LCBleGVjdXRpb24gaXRzZWxmIGhhcHBlbnMgd2l0aGluIGBrZGFtb25kX2ZuYCwgd2hpY2ggaXMgYSBrZXJuZWwgdGhyZWFkLiBTbywgdGhhdCB0aHJlYWQgZnVuY3Rpb24gaXMgYW5vdGhlciBnb29kIGZvY3VzIHN5bWJvbCwgYnV0LCB5b3Uga25vdywgaXQncyBhIHRocmVhZC4gTGV0IG1lIHRoaW5rLCBhcmUgdGhlcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcz8gSSBzaG91bGQgY2hlY2sgYG1tL2RhbW9uL3N5c2ZzLmNgIOKAkyB0aGF0J3MgcHJvYmFibHkgd2hlcmUgdGhlIERBTU9OIHNldHVwIGFuZCBpbml0aWFsaXNhdGlvbiBoYXBwZW4uIFRoYXQncyBteSBuZXh0IGRlc3RpbmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQxMSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo1Ni45NDE1Nzg5ODVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDI2NjEzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9zeXNmcy5jPTIyMjA9c3RhdGljIGludCBkYW1vbl9zeXNmc19yZXBlYXRfY2FsbF9mbih2b2lkICpkYXRhKVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMjQyLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjI0MzpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXFxubW0vZGFtb24vc3lzZnMuYy0yMjQ0LXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjI4OD1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMjk1LVxcdCAqIERBTU9OLCB3ZSBmcmVlIGtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eCBpbiBuZXh0XFxubW0vZGFtb24vc3lzZnMuYzoyMjk2OlxcdCAqIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oKSwgb3Iga2RhbW9uZHNfbnJfc3RvcmUoKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI5Ny1cXHQgKi9cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjM2ND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMzcxLVxcdGNhc2UgREFNT05fU1lTRlNfQ01EX09OOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3MjpcXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbihrZGFtb25kKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzMtXFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfT0ZGOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNDo1Ny4xMDU4NTA3NjZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1MzA4ODM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIFN5c2ZzIEhhbmRsaW5nIGZvciBEQU1PTioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBEQU1PTiBpbnRlcmFjdHMgd2l0aCBzeXNmcy4gVGhlIGNydWNpYWwgZW50cnkgcG9pbnQgZm9yIHRoaXMsIGZyb20gd2hhdCBJJ20gcmVhZGluZywgaXMgdGhlIGBkYW1vbl9zeXNmc19oYW5kbGVfY21kYCBmdW5jdGlvbi4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgYWN0aW9uIHN0YXJ0cyB3aGVuIGEgdXNlciBhdHRlbXB0cyB0byB3cml0ZSB0byBhIHN5c2ZzIGZpbGUgYXNzb2NpYXRlZCB3aXRoIERBTU9OLiBOYXR1cmFsbHksIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgaGFwcGVucyB3aXRoaW4gYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZmxvdyBhbmQgZmlndXJlIG91dCBob3cgY29tbWFuZHMgYXJlIGludGVycHJldGVkIGFuZCBleGVjdXRlZC4gVGhpcyBpcyB0aGUgY29yZSBvZiBob3cgdXNlcnMgY29uZmlndXJlIGFuZCBpbnRlcmFjdCB3aXRoIERBTU9OLCBzbyBpdCB3YXJyYW50cyBhIHRob3JvdWdoIGV4YW1pbmF0aW9uLiBMZXQncyBzZWUgd2hhdCdzIHVuZGVyIHRoZSBob29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjIzMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjAwLjg1ODk0MjI5MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwODkzOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmM9MjMzND1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnMoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTUtLypcXG5tbS9kYW1vbi9zeXNmcy5jOjIzNTY6ICogZGFtb25fc3lzZnNfaGFuZGxlX2NtZCgpIC0gSGFuZGxlIGEgY29tbWFuZCBmb3IgYSBzcGVjaWZpYyBrZGFtb25kLlxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM1Ny0gKiBAY21kOlxcdFRoZSBjb21tYW5kIHRvIGhhbmRsZS5cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2My0gKi9cXG5tbS9kYW1vbi9zeXNmcy5jOjIzNjQ6c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjUtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTI0MDQ9c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjQxNS1cXHRcXHRpZiAoc3lzZnNfc3RyZXEoYnVmLCBkYW1vbl9zeXNmc19jbWRfc3Ryc1tjbWRdKSkge1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjQxNjpcXHRcXHRcXHRyZXQgPSBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGNtZCwga2RhbW9uZCk7XFxubW0vZGFtb24vc3lzZnMuYy0yNDE3LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTowMC45OTk4NDIzMDRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2MjEyNjE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGlnZ2luZyBpbnRvIERBTU9OJ3MgU3lzZnMgSW50ZXJmYWNlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGhvdyBEQU1PTiBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzZnMuIEkndmUgZ290IGBzdGF0ZV9zdG9yZWAgaW4gbWluZCDigJMgdGhhdCdzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBzeXNmcyBmaWxlcy4gQnV0LCBub3cgSSdtIHJlbWVtYmVyaW5nIHRoYXQgYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIGlzIGRlY2xhcmVkIGFzICpzdGF0aWMqLiBUaGF04oCZcyBhIGJpdCBvZiBhIHJvYWRibG9jayBpZiBJ4oCZbSB0cnlpbmcgdG8gdHJhY2UgdGhlIGNvbW1hbmQgcHJvY2Vzc2luZyBmbG93LlxuXG5Pa2F5LCBubyBwcm9ibGVtLiBMZXQncyBmaW5kIGFueSBvdGhlciBpbnRlcmVzdGluZyBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL3N5c2ZzLmNgIHdoaWNoICphcmVuJ3QqIGRlY2xhcmVkIGFzIHN0YXRpYyBhbmQgc2VlIHdoYXQgdGhleSB0ZWxsIHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgzNSwiT3V0cHV0VG9rZW5zIjo2NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjA0LjU2MTk3MTU2MVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg3Njg3NTI0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vc3lzZnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6MDQuODQ5NjY2NjQ1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjM5MDgyOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgZ2VhcmVkIHRvd2FyZHMgYSB1c2VyIHdobyBrbm93cyB0aGVpciB3YXkgYXJvdW5kIHN5c3RlbS1sZXZlbCBjb2RlOlxuXG4qKkFuYWx5emluZyBgbW0vZGFtb24vc3lzZnMuY2AgLSBRdWljayBNZXRob2QqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gaW4gYG1tL2RhbW9uL3N5c2ZzLmNgLiBJIGNvdWxkIGRpdmUgcmlnaHQgaW4gd2l0aCBgcmVhZC1maWxlYCBhbmQganVzdCBzdGFydCBzY3JvbGxpbmcgdGhyb3VnaCB0aGUgY29kZSwgYnV0IEknbSB0aGlua2luZyBhIGZhc3RlciwgbW9yZSB0YXJnZXRlZCBhcHByb2FjaCBtaWdodCBiZSBiZXR0ZXIuIExldCdzIHNlZS4uLiBhIHF1aWNrIGBncmVwcGVyYCBzY2FuIGlzIHByb2JhYmx5IHRoZSB3YXkgdG8gZ28gaGVyZS4gSSdsbCB6ZXJvIGluIG9uIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuIFNvLCBsZXQncyB1c2UgYGdyZXBwZXJgIHdpdGggdGhlIHBhdHRlcm5zIGBeaW50IGAgb3IgYF52b2lkIGAgdG8gZ3JhYiBhbGwgdGhlIGxpbmVzIHRoYXQgZGVmaW5lIGZ1bmN0aW9ucyByZXR1cm5pbmcgYW4gYGludGAgb3IgYHZvaWRgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgaW50ZXJmYWNlIGFuZCBzdHJ1Y3R1cmUsIHdpdGhvdXQgZ2V0dGluZyBib2dnZWQgZG93biBpbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyByaWdodCBhd2F5LiBUaGF0IHNob3VsZCBxdWlja2x5IGdldCBtZSBvcmllbnRlZCBpbiB0aGlzIGZpbGUuIEl0J3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBzdGFydCwgZm9yIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMTI2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6MDguMTEzNTc5ODA4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTk1MDU0MDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL3N5c2ZzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjA4LjQ3MzA5Njc3OFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjIyOTkxNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipTdGF0aWMgRGVjbGFyYXRpb25zIGFuZCBGdW5jdGlvbiBTY29wZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc29tZXRoaW5nIGp1bXBzIG91dCBhdCBtZTogYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBObyBiaWcgZGVhbCwgcHJvYmFibHkgZGVzaWduZWQgdG8gYmUgYW4gaW50ZXJuYWwgaGVscGVyLCBvciBwcmV2ZW50IGFjY2lkZW50YWwgbmFtZSBjb2xsaXNpb25zIHdpdGggb3RoZXIgZnVuY3Rpb25zLiBCdXQgaXQgZG9lcyByYWlzZSBhIHF1ZXN0aW9uIOKAkyBhcmUgdGhlcmUgc2ltaWxhciBkZXNpZ24gY2hvaWNlcyBlbHNld2hlcmU/IEl0IG1ha2VzIG1lIHRoaW5rIEkgc2hvdWxkIHZlcmlmeSBob3cgaXQgaXMgdXNlZCBhbmQgaWYgdGhlIGRldmVsb3BlciBpbnRlbmRlZCBpdCB0byBiZSBzbyBsaW1pdGVkLlxuXG5NeSBuZXh0IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBkYW1vbl9taWdyYXRlX3BhZ2VzYC4gQWgsIGl0J3Mgbm90IHN0YXRpYy4gVGhhdCdzIGdvb2QsIHN1Z2dlc3RzIGl0J3MgbGlrZWx5IGEgZnVuY3Rpb24gaW50ZW5kZWQgZm9yIGJyb2FkZXIgdXNlIHdpdGhpbiB0aGUgbGFyZ2VyIERhbW9uIGZyYW1ld29yaywgcG90ZW50aWFsbHkgY2FsbGVkIGZyb20gb3RoZXIgbW9kdWxlcyBvciBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0IGRpZmZlcmVuY2UgYXMgSSB0cmFjZSB0aHJvdWdoIHRoZSBjYWxsaW5nIGhpZXJhcmNoeS4gVGhhdCdzIGFuIGltcG9ydGFudCBkZXNpZ24gZWxlbWVudCB0byBrZWVwIGluIG1pbmQsIHN0YXRpYyB2cyBub24tc3RhdGljLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGRhbW9uX3N0YXJ0YC4gTGV0IG1lIHNlZSwgaG93IGlzIHRoYXQgZGVjbGFyZWQ/IFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCB2aXNpYmlsaXR5IG9mIHRoZXNlIGtleSBmdW5jdGlvbnMgd2l0aGluIHRoZSBEYW1vbiBzdWJzeXN0ZW0uIFRoZSBpbnRlcnBsYXkgb2YgdGhvc2UgdGhyZWUgZnVuY3Rpb25zIGFuZCBhbnkgcG90ZW50aWFsIGNvdXBsaW5nIG9mIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDI4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6MTUuMDk2MDkyOTE4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg3MzY2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz0xMDEzPXN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAzOC0gKiBJbiBkZXRhaWwsIGFsbCBEQU1PTiBBUEkgY2FsbGVycyBkaXJlY3RseSBjYWxsIHRoaXMgZnVuY3Rpb24gZm9yIGluaXRpYWxcXG5tbS9kYW1vbi9jb3JlLmM6MTAzOTogKiBzZXR1cCBvZiBkYW1vbl9jdHggYmVmb3JlIGNhbGxpbmcgZGFtb25fc3RhcnQoKS4gIFNvbWUgb2YgdGhlIEFQSSBjYWxsZXJzXFxubW0vZGFtb24vY29yZS5jLTEwNDAtICogYWxzbyBpbmRpcmVjdGx5IGNhbGwgdGhpcyBmdW5jdGlvbiB2aWEgZGFtb25fY2FsbCgpIC1cXHUwMDNlIGRhbW9uX2NvbW1pdCgpIGZvclxcbi0tXFxubW0vZGFtb24vY29yZS5jPTE5MjU9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE5MjctLypcXG5tbS9kYW1vbi9jb3JlLmM6MTkyODogKiBfX2RhbW9uX3N0YXJ0KCkgLSBTdGFydHMgbW9uaXRvcmluZyB3aXRoIGdpdmVuIGNvbnRleHQuXFxubW0vZGFtb24vY29yZS5jLTE5MjktICogQGN0eDpcXHRtb25pdG9yaW5nIGNvbnRleHRcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTM0LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxOTM1OnN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTE5MzYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTE5NTc9c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE5NTktLyoqXFxubW0vZGFtb24vY29yZS5jOjE5NjA6ICogZGFtb25fc3RhcnQoKSAtIFN0YXJ0cyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXFxubW0vZGFtb24vY29yZS5jLTE5NjEtICogQGN0eHM6XFx0YW4gYXJyYXkgb2YgdGhlIHBvaW50ZXJzIGZvciBjb250ZXh0cyB0byBzdGFydCBtb25pdG9yaW5nXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2OC0gKiBAZXhjbHVzaXZlIGlzIHRydWUgYW5kIGEgZ3JvdXAgb2YgdGhyZWFkcyB0aGF0IGNyZWF0ZWQgYnkgb3RoZXJcXG5tbS9kYW1vbi9jb3JlLmM6MTk2OTogKiAnZGFtb25fc3RhcnQoKScgY2FsbCBpcyBjdXJyZW50bHkgcnVubmluZywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgYnV0XFxubW0vZGFtb24vY29yZS5jLTE5NzAtICogcmV0dXJucyAtRUJVU1kuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk3My0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTk3NDppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG5tbS9kYW1vbi9jb3JlLmMtMTk3NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk5OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfY3R4czsgaSsrKSB7XFxubW0vZGFtb24vY29yZS5jOjIwMDA6XFx0XFx0ZXJyID0gX19kYW1vbl9zdGFydChjdHhzW2ldKTtcXG5tbS9kYW1vbi9jb3JlLmMtMjAwMS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTIwNzA9aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDk3LSAqXFxubW0vZGFtb24vY29yZS5jOjIwOTg6ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRhbW9uX3N0YXJ0KCkgd2l0aCB0aGVcXG5tbS9kYW1vbi9jb3JlLmMtMjA5OS0gKiBAY3R4IGhhcyBzdWNjZWVkZWQuICBPdGhlcndpc2UsIHRoaXMgZnVuY3Rpb24gY291bGQgZmFsbCBpbnRvIGFuIGluZGVmaW5pdGVcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMTA2PWludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTUyLSAqXFxubW0vZGFtb24vY29yZS5jOjIxNTM6ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRhbW9uX3N0YXJ0KCkgd2l0aCB0aGVcXG5tbS9kYW1vbi9jb3JlLmMtMjE1NC0gKiBAY3R4IGhhcyBzdWNjZWVkZWQuICBPdGhlcndpc2UsIHRoaXMgZnVuY3Rpb24gY291bGQgZmFsbCBpbnRvIGFuIGluZGVmaW5pdGVcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9NDA4PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00MjAtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0MjE6XFx0ZXJyID0gZGFtb25fc3RhcnQoXFx1MDAyNmN0eCwgMSwgdHJ1ZSk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy00MjItXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYz0zMzE9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0zNDMtXFxubW0vZGFtb24vcmVjbGFpbS5jOjM0NDpcXHRlcnIgPSBkYW1vbl9zdGFydChcXHUwMDI2Y3R4LCAxLCB0cnVlKTtcXG5tbS9kYW1vbi9yZWNsYWltLmMtMzQ1LVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9zdGF0LmM9MjAwPXN0YXRpYyBpbnQgZGFtb25fc3RhdF9zdGFydCh2b2lkKVxcbi0tXFxubW0vZGFtb24vc3RhdC5jLTIxMi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9zdGF0LmM6MjEzOlxcdGVyciA9IGRhbW9uX3N0YXJ0KFxcdTAwMjZkYW1vbl9zdGF0X2NvbnRleHQsIDEsIHRydWUpO1xcbm1tL2RhbW9uL3N0YXQuYy0yMTQtXFx0aWYgKGVycikge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMjQzPXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI2Ny1cXHR9XFxubW0vZGFtb24vc3lzZnMuYzoyMjY4OlxcdGVyciA9IGRhbW9uX3N0YXJ0KFxcdTAwMjZjdHgsIDEsIGZhbHNlKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIyNjktXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNToxNS4yNjQ4Mzg3MjlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1NDcxNTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGludGVybmFsczpcblxuKipEaXZpbmcgaW50byBEQU1PTiBPcGVyYXRpb25zKipcblxuUmlnaHQsIGBkYW1vbl9zdGFydGAgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZm9jdXNpbmcgb24gREFNT04ncyBjb3JlIGZ1bmN0aW9uYWxpdHkuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgb2Ygb3RoZXIga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0cyBvcGVyYXRpb24sIHBhcnRpY3VsYXJseSBgZGFtb25fbWlncmF0ZV9wYWdlc2AuIEl0J3MgZ29vZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBhIHJlZmVyZW5jZSBwb2ludC5cblxuTm93LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mIG90aGVyIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3aXRoaW4gdGhlIGBtbS9kYW1vbi9vcHMtY29tbW9uLmNgIGZpbGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBob3cgdGhlc2UgaW5pdGlhbCBmdW5jdGlvbnMgSSd2ZSBpZGVudGlmaWVkIHJlbGF0ZSB0byB0aGUgYnJvYWRlciBwaWN0dXJlLiBNeSBhaW0gaXMgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBmbG93LCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIGludmVzdGlnYXRpb24uIFRoaXMgaXMgYSBnb29kIHdheSB0byBzdGFydCBhIGRlZXBlciBkaXZlIGludG8gdGhlIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUxMTcsIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNToxOS4zMTk1NTc4NTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjM4Mzg0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vb3BzLWNvbW1vbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL29wcy1jb21tb24uYz0yND1zdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy00MS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NDI6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQzLXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy03Mi1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NzM6dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTc0LXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMDMtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjEwNDppbnQgZGFtb25faG90X3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwNS1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTQ5LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNTA6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTUxLVxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYz0xNTk9c3RhdGljIGJvb2wgZGFtb25fZm9saW9fbWtvbGRfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTczLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNzQ6dm9pZCBkYW1vbl9mb2xpb19ta29sZChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNzUte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTE5ND1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb195b3VuZ19vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMzUtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjIzNjpib29sIGRhbW9uX2ZvbGlvX3lvdW5nKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzNy17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjYwLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzoyNjE6Ym9vbCBkYW1vc19mb2xpb19maWx0ZXJfbWF0Y2goc3RydWN0IGRhbW9zX2ZpbHRlciAqZmlsdGVyLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yNjIte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTM4NT11bnNpZ25lZCBsb25nIGRhbW9uX21pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwgaW50IHRhcmdldF9uaWQpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDI0LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo0MjU6Ym9vbCBkYW1vc19vcHNfaGFzX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQyNi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjE5LjQ4NTk5NDcyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTg1MjE2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgbXkgdGhpbmtpbmcgcmlnaHQgbm93IGlzIGNlbnRlcmVkIG9uIGlkZW50aWZ5aW5nIHRoZSBiZXN0IHN5bWJvbCB0byBmb2N1cyBvbi4gKipDaG9vc2luZyB0aGUgUmlnaHQgRm9jdXMgU3ltYm9sIGZvciBBbmFseXNpcyoqIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBzZWVtcyBsaWtlIGEgc3Ryb25nIGNvbnRlbmRlciwgSSB0aGluayBpdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gTm93LCB3aGF0IGFib3V0IHNvbWUgb3RoZXIgc3ltYm9scz8gSG1tbSwgYGRhbW9zX2ZvbGlvX2ZpbHRlcl9tYXRjaGA/IFRoYXQncyBub3Qgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQW5kIHRoZW4gYGRhbW9uX3N0YXJ0YCwgdGhhdCdzIGFsc28gbm90IHN0YXRpYy4gSSdtIGFsc28gY29uc2lkZXJpbmcgYGtkYW1vbmRfZm5gLCB0aGF0IG9uZSAqaXMqIHN0YXRpYywgYnV0IGl0J3MgdGhlIG1haW4gdGhyZWFkIHNvIGNvdWxkIGJlIHNpZ25pZmljYW50LiBCdXQgaGFuZyBvbiwgZGlkbid0IEkganVzdCBzZWUgdGhhdCBgZGFtb25fbWlncmF0ZV9wYWdlc2AgZ2V0cyBjYWxsZWQgYnkgYGRhbW9uX3BhX21pZ3JhdGVgICphbmQqIGBkYW1vc192YV9taWdyYXRlYD8gVGhhdCBzdWdnZXN0cyBpdCdzIGEgY3JpdGljYWwgcG9pbnQgb2YgY29udmVyZ2VuY2UuIFllcywgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGF0IGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBhY3R1YWxseSBleHBvcnRlZCDigJMgdGhhdCdzIGEga2V5IHJlcXVpcmVtZW50LiBUaGF0IGlzIHRoZSBjb3JyZWN0IHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE2MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNToyMy45MDQ1MjA4WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDIzNDI5MDcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vb3BzLWNvbW1vbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNToyNC4xNDY4NzM3ODdaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExNDY0MzA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgTm9uLUV4cG9ydGVkLCBOb24tU3RhdGljIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGRlYWxpbmcgd2l0aCBhIGZ1bmN0aW9uIHRoYXQgaXNuJ3QgZXhwb3J0ZWQsIGJ1dCBpdCdzICphbHNvKiBub3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSWYgaXQncyBub3QgZXhwb3J0ZWQsIGl04oCZcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBvdXRzaWRlIHRoZSBtb2R1bGUsIGJ1dCBpZiBpdOKAmXMgbm9uLXN0YXRpYywgdGhlcmUncyBhIGdvb2QgY2hhbmNlIGl0J3MgYmVpbmcgYWNjZXNzZWQgd2l0aGluIHRoZSBmaWxlIGl0c2VsZiwgb3IgcG90ZW50aWFsbHkgdGhyb3VnaCBzb21lIGxlc3Mgb2J2aW91cyBtZWNoYW5pc20sIGxpa2UgYSBmdW5jdGlvbiBwb2ludGVyIG9yIGEgbWFjcm8gd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCwgaXMgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSAqaG93KiBpdCdzIGJlaW5nIHVzZWQuXG5cblRoZSBmYWN0IHRoYXQgdGhlIG5hbWUgaXNuJ3QgYXBwYXJlbnQgZnJvbSB0aGUgaGVhZGVycyBtZWFucyB0aGF0IGEgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgaXMgbmVjZXNzYXJ5LiBMZXQncyBzdGFydCB3aXRoIGBtbS9kYW1vbi92YWRkci5jYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBzdGFydGluZyBwb2ludCwgZ2l2ZW4gdGhlIG1lbnRpb24gb2YgdmlydHVhbCBhZGRyZXNzZXMgYW5kIHRoZSBEYW1vbSBzdWJzeXN0ZW0uIFRoYXQgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBpbW1lZGlhdGUgcGxhY2UgdG8gZmluZCBvdXQgd2hhdCBpdCdzIHVwIHRvLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSeKAmWxsIG5lZWQgdG8gbG9vayBmb3IgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBtZW50aW9uIG9mIHRoZSBmdW5jdGlvbiBhbmQgbG9vayBmb3IgdGhlIGNhbGxpbmcgY29udGV4dHMgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1NTksIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTozMC4yNjE1MjAzMTRaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTQ0NTc2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL3ZhZGRyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjMwLjQ0Mjk3NDkyNVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDgwMTEzNTA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBEQU1PTiBNaWdyYXRpb24gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgd2UgY2FuIGtlZXAgaXQgcmVsYXRpdmVseSBzaW1wbGUgaGVyZS4gSW5pdGlhbGx5LCBJIHdhcyBnb2luZyB0byBmb2N1cyBvbiBqdXN0IGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBhbmQgYGRhbW9uX3N0YXJ0YCwgYnV0IHRoZW4gSSBzYXcgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBkYW1vbl9taWdyYXRlX2ZvbGlvX2xpc3RgLCBgZGFtb25fcGFfbWlncmF0ZWAsIGFuZCBgZGFtb3NfdmFfbWlncmF0ZV9kZXN0c19hZGRgLiBBbGwgb2YgdGhlc2UgYXJlIGNsZWFybHkgdGllZCB0byBEQU1PTiBtaWdyYXRpb24sIHdoaWNoIGNoYW5nZXMgdGhpbmdzIGEgYml0LlxuXG5NeSB0aG91Z2h0IGlzIHRvIGRvIGEgcXVpY2sgc2NhbiBvZiBgbW0vZGFtb24vcGFkZHIuY2AgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBiZSBzdXJlIHRoZXJlIGlzbid0IGFueXRoaW5nIGVsc2UgYWZmZWN0ZWQsIGJ1dCBzaW5jZSBgZGFtb25fbWlncmF0ZV9wYWdlc2AgY2FsbHMgYGRhbW9uX21pZ3JhdGVfZm9saW9fbGlzdGAgZGlyZWN0bHksIGFuZCB0aGUgbGF0dGVyIGlzIG1vZGlmaWVkIGluIHRoZSBwYXRjaCwgbGV0J3MgdXNlIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBhcyBvdXIgcHJpbWFyeSBmb2N1cyBzeW1ib2wuIEl0J3Mgbm9uLXN0YXRpYywgd2hpY2ggaXMgY29udmVuaWVudC5cblxuTm93LCB3YWl0IGEgbWludXRlLCBgZGFtb25fcGFfbWlncmF0ZWAgYW5kIGBkYW1vc192YV9taWdyYXRlX2Rlc3RzX2FkZGAgYXJlIGFsc28gaW4gdGhlIG1peCEgVGhleSdyZSBjYWxsZWQgZHVyaW5nIHNjaGVtZSBhcHBsaWNhdGlvbiwgd2hpY2ggaXMgY3J1Y2lhbC4gTGV0J3Mgc2VlLi4uIHRoZSBzY2hlbWUgYXBwbGljYXRpb24gaGFwcGVucyB0aHJvdWdoIGBkYW1vc19hcHBseV9zY2hlbWVgLCB0aGVuIGBjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWVgLCB0aGVuIGVpdGhlciBgZGFtb25fcGFfYXBwbHlfc2NoZW1lYCBvciBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYC4gT2theSwgc28gYGRhbW9uX3BhX2FwcGx5X3NjaGVtZWAgYW5kIGBkYW1vbl92YV9hcHBseV9zY2hlbWVgIHNvdW5kIGxpa2UgZ29vZCBjYW5kaWRhdGVzIHRvIGtlZXAgaW4gbWluZCwgZXZlbiB0aG91Z2ggdGhleSdyZSBzdGF0aWMuXG5cbkhtbW0sIGlzIHRoZXJlIGFueXRoaW5nIG5vbi1zdGF0aWMgdGhhdCB0cmlnZ2VycyBzY2hlbWUgYXBwbGljYXRpb24/IGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGlzIHN0YXRpYywgYGtkYW1vbmRfZm5gIGlzIGFsc28gc3RhdGljLCBzbyB0aGV5J3JlIG91dC4gT2ghIGBkYW1vbl9zdGFydGAgaXMgbm9uLXN0YXRpYyBhbmQgbGF1bmNoZXMgdGhlIGtkYW1vbmQgdGhyZWFkLiBSaWdodCwgc28gYGRhbW9uX3N0YXJ0YCBhbmQgYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGJvdGggc2VlbSBzb2xpZCBhcyBvdXIgZm9jYWwgcG9pbnRzLlxuXG5PbmUgZmluYWwgdGhpbmcg4oCTIGxldCdzIHJldmlzaXQgdGhlIGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAuIEJ1dCwgd2hhdCBlbHNlPyBgREFNT05fU1lTRlNgIHdpbGwgcHJvYmFibHkgYmUgbmVlZGVkIHRvIHRyaWdnZXIgYWxsIHRoaXMgZnJvbSB1c2Vyc3BhY2UsIHNvIHdlJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gQW5kIHByb2JhYmx5IGBEQU1PTl9SRUNMQUlNYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBhcyB3ZWxsLCB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IHVzZSBpdC4gV2Ugd2lsbCBuZWVkIHRvIGNoZWNrIHdoYXQgYERBTU9OX1NZU0ZTYCBkZXBlbmRzIG9uLCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjk2NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTo0MS4yNDQxMTMxMDhaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NTg0MTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05fU1lTRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTU2PWNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxcbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy02OS1cXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTc1LVxcbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTo0MS44MDk5NjA3ODdaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3NzgxMzcwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBLY29uZmlnOiBMaW5lIDY4IFx1MDAyNiBCZXlvbmQqKlxuXG5Pa2F5LCBsZXQncyBnZXQgaW50byB0aGUgd2VlZHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBgbW0vZGFtb25gLiBTcGVjaWZpY2FsbHksIEkgdGhpbmsgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgYXJvdW5kIGxpbmUgNjggb2YgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoYXQgZGlyZWN0b3J5LiBJJ20gYXNzdW1pbmcgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhhdCBzdWJzeXN0ZW0gYmVnaW4uIEdvaW5nIHRvIGhhdmUgdG8gcGFyc2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgaGVscCB0ZXh0IHRoZXJlLCB0cnkgdG8gZGV0ZXJtaW5lIHdoYXQgZXhhY3RseSBpcyBiZWluZyBjb250cm9sbGVkIGF0IHRoYXQgc2VjdGlvbiBvZiB0aGUgc291cmNlLiBHb3R0YSBiZSBxdWljayBhbmQgdG8gdGhlIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEzMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDA3OjI1OjQ1LjE4Nzc5NjYzNFoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRcXHRoZWxwXFxuICA2MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiB2aXJ0dWFsIGFkZHJlc3NlcyBvcGVyYXRpb25zIEt1bml0IHRlc3Qgc3VpdGUuXFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXFxuICA2NDpcXHRcXHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA2NzpcXHRcXG4gIDY4OlxcdGNvbmZpZyBEQU1PTl9TWVNGU1xcbiAgNjk6XFx0XFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbiAgNzA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbiAgNzE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcXG4gIDc0OlxcdFxcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXFxuICA3NTpcXHRcXG4gIDc2OlxcdGNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxuICA3NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbiAgNzk6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6NDUuMTg3OTEyMzQ0WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTk1MDE4MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoIFJldmlldyoqXG5cbk9rYXksIHNvIEknbSBzZXR0aW5nIHVwIERBTU9OIGFuZCBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBGaXJzdCwgYERBTU9OX1NZU0ZTYCBkZXBlbmRzIG9uIGBEQU1PTmAgYW5kIGBTWVNGU2AsIHNvIEknbGwgaW5jbHVkZSB0aG9zZS4gVGhlbiwgbG9va2luZyBhdCB0aGUgb3RoZXIgY29uZmlncywgSSBuZWVkIHRvIGVuYWJsZSBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBhbmQgYERBTU9OX1NZU0ZTYC4gIEhvd2V2ZXIsIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgZGVwZW5kIG9uIGBEQU1PTmAgYW5kIGBNTVVgLCB3aGljaCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGZvciBmdWxsIGVuYWJsZW1lbnQuIFNvLCB0byBiZSBjbGVhciwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHdpbGwgYmUgYERBTU9OYCwgYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCwgYW5kIGBEQU1PTl9TWVNGU2AuXG5cbk5vdywgSSdtIGFuYWx5emluZyB0aGUgY29kZS4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIGZ1bmN0aW9ucyBmcm9tIHRoZSBEQU1PTiBzdWJzeXN0ZW0gSSdsbCBiZSB1dGlsaXppbmcuIEkndmUgbm90ZWQgdGhhdCBgZGFtb25fbWlncmF0ZV9wYWdlc2AgaXMgb25lIG5vbi1zdGF0aWMgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyByZWFjaGFibGUgZnJvbSBvdGhlciBtb2R1bGVzIG9yIGNvZGUsIGFuZCB0aGF0J3Mgb25lIEknbGwgZGVmaW5pdGVseSBuZWVkLiBOb3csIHNpbmNlIGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBpbiBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYW5kIGl0IGlzIGNhbGxlZCBmcm9tIGBtbS9kYW1vbi9wYWRkci5jYCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgYmVzdCBlbnRyeSBwb2ludC4gSSd2ZSBhbHNvIGlkZW50aWZpZWQgYGRhbW9uX3N0YXJ0YCBhcyBhbm90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb24sIGxvY2F0ZWQgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHdoaWNoIGlzIGFsc28gcmVhY2hhYmxlIGZyb20gdmFyaW91cyBsb2NhdGlvbnMsIGluY2x1ZGluZyBgbW0vZGFtb24vc3lzZnMuY2AsIGBtbS9kYW1vbi9yZWNsYWltLmNgLCBgbW0vZGFtb24vbHJ1X3NvcnQuY2AsIGFuZCBgbW0vZGFtb24vc3RhdC5jYC4gR2l2ZW4gdGhhdCBgZGFtb25fc3RhcnRgIGlzIGNhbGxlZCBpbiBtYW55IHBsYWNlcywgYW5kIGl0IGlzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwgdGhpcyBtaWdodCBiZSBhIGJldHRlciBlbnRyeSBwb2ludC5cblxuSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIHByb3ZpZGVkIHBhdGNoLCB3aGljaCBtb2RpZmllcyBgbW0vZGFtb24vb3BzLWNvbW1vbi5jYCwgYG1tL2RhbW9uL3BhZGRyLmNgLCBhbmQgYG1tL2RhbW9uL3ZhZGRyLmNgLiBJdCBhZGRzIGBub2RlX3N0YXRfYWRkX2ZvbGlvYCBhbmQgYG5vZGVfc3RhdF9zdWJfZm9saW9gIHRvIHVwZGF0ZSB0aGUgaXNvbGF0ZWQgZm9saW8gY291bnQgZHVyaW5nIGZvbGlvIGlzb2xhdGlvbiBmb3IgbWlncmF0aW9uLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBjcnVjaWFsIGFkZGl0aW9uLCBlbnN1cmluZyBhY2N1cmF0ZSBhY2NvdW50aW5nIG9mIGlzb2xhdGVkIGZvbGlvcyB3aXRoaW4gREFNT04ncyBtaWdyYXRpb24gcHJvY2Vzcy4gVGhpcyBzZWVtcyBjbGVhbiBhbmQgZnVuY3Rpb25hbC4gSSBiZWxpZXZlIHRoaXMgaXMgYSBzb2xpZCBhZGRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2MDAsIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwNzoyNTo1NS4zODI5MzM3OVoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0Mjk3ODk3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vcGFkZHIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjU6NTUuNjI3MjQwOTA3WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNjUzMjI3NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNob29zaW5nIHRoZSBSaWdodCBFbnRyeSBQb2ludCBmb3IgREFNT04gTWlncmF0aW9uIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGUgREFNT04gY29kZSBpbiBgbW0vZGFtb24vYCwgSSBzZWUgdGhhdCBib3RoIGBwYWRkci5jYCBhbmQgYHZhZGRyLmNgIGFyZSByZW1hcmthYmx5IGNsZWFuIGluIHRoYXQgdGhleSBkb24ndCBjb250YWluIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCBtZWFucyBJIGNhbiBzYWZlbHkgZGlzY2FyZCB0aGVtIGZvciBhbiBpbml0aWFsaXphdGlvbiBlbnRyeSBwb2ludC4gVGhleSdyZSBjbGVhcmx5IGludGVuZGVkIGFzIHN1cHBvcnQgbW9kdWxlcy4gU28sIG15IGZvY3VzIG5hdHVyYWxseSBzaGlmdHMgdG8gYGRhbW9uX21pZ3JhdGVfcGFnZXNgIGFuZCBgZGFtb25fc3RhcnRgLiBHaXZlbiB0aGF0IGBkYW1vbl9taWdyYXRlX3BhZ2VzYCBpcyBsaWtlbHkgbW9yZSBjbG9zZWx5IHRpZWQgdG8gdGhlIGFjdHVhbCBtaWdyYXRpb24gcHJvY2VzcywgSSBsZWFuIHRvd2FyZHMgYGRhbW9uX3N0YXJ0YCBhcyB0aGUgZnVuY3Rpb24gd2hlcmUgSSdkIGtpY2sgb2ZmIHRoZSByZWxldmFudCBpbml0aWFsaXNhdGlvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGJvdGgsIG9mIGNvdXJzZSwgdG8gZW5zdXJlIHRoaXMgd29uJ3QgY2F1c2UgYW55IHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGV4aXN0aW5nIERBTU9OIG9wZXJhdGlvbiBmbG93LCBidXQgb24gdGhlIGZhY2Ugb2YgaXQsIGBkYW1vbl9zdGFydGAgbG9va3MgbGlrZSB0aGUgbW9yZSBhcHByb3ByaWF0ZSBsb2NhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxNzYsIk91dHB1dFRva2VucyI6MTYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDc6MjY6MDAuOTkyNTY4Mjg1WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkxOTc5ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX21pZ3JhdGVfcGFnZXNcIixcbiAgICBcImRhbW9uX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04ncyBmb2xpbyBtaWdyYXRpb24gbG9naWMgaW4gYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBwcm9wZXJseSBhY2NvdW50IGZvciBpc29sYXRlZCBmb2xpb3MgYnkgY2FsbGluZyBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIGZyYW1ld29yay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX21pZ3JhdGVfcGFnZXNcIixcbiAgICBcImRhbW9uX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgREFNT04ncyBmb2xpbyBtaWdyYXRpb24gbG9naWMgaW4gYG1tL2RhbW9uL29wcy1jb21tb24uY2AsIGBtbS9kYW1vbi9wYWRkci5jYCwgYW5kIGBtbS9kYW1vbi92YWRkci5jYCB0byBwcm9wZXJseSBhY2NvdW50IGZvciBpc29sYXRlZCBmb2xpb3MgYnkgY2FsbGluZyBgbm9kZV9zdGF0X2FkZF9mb2xpb2AgYW5kIGBub2RlX3N0YXRfc3ViX2ZvbGlvYC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIGZyYW1ld29yay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[1] Phase: Succeeded StartedAt: 2026-07-27 07:26:13 +0000 UTC FinishedAt: 2026-07-27 07:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 07:26:13 +0000 UTC FinishedAt: 2026-07-27 07:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2] Phase: Succeeded StartedAt: 2026-07-27 07:26:13 +0000 UTC FinishedAt: 2026-07-27 12:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 07:26:14 +0000 UTC FinishedAt: 2026-07-27 12:04:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 07:26:14 +0000 UTC FinishedAt: 2026-07-27 07:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 07:26:14 +0000 UTC FinishedAt: 2026-07-27 07:26:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-convert-artifact-3209703961/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 07:26:58 +0000 UTC FinishedAt: 2026-07-27 08:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 07:26:58 +0000 UTC FinishedAt: 2026-07-27 08:05:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0bcb7091-17f4-41b7-9a34-d734910b771f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-convert-artifact-3209703961/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fc5c3be2-3d3b-497d-ae9a-092feddb5663", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-3091813815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 07:26:58 +0000 UTC FinishedAt: 2026-07-27 08:05:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0bcb7091-17f4-41b7-9a34-d734910b771f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-convert-artifact-3209703961/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fc5c3be2-3d3b-497d-ae9a-092feddb5663", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-3091813815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 08:05:49 +0000 UTC FinishedAt: 2026-07-27 08:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 08:05:49 +0000 UTC FinishedAt: 2026-07-27 08:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 08:05:49 +0000 UTC FinishedAt: 2026-07-27 08:05:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 08:05:49 +0000 UTC FinishedAt: 2026-07-27 08:05:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-convert-artifact-1665047532/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 08:05:59 +0000 UTC FinishedAt: 2026-07-27 08:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 08:05:59 +0000 UTC FinishedAt: 2026-07-27 08:07:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fc5c3be2-3d3b-497d-ae9a-092feddb5663,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-3091813815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 08:08:00 +0000 UTC FinishedAt: 2026-07-27 08:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 08:08:00 +0000 UTC FinishedAt: 2026-07-27 08:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 08:08:00 +0000 UTC FinishedAt: 2026-07-27 08:59:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 08:08:00 +0000 UTC FinishedAt: 2026-07-27 08:59:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0bcb7091-17f4-41b7-9a34-d734910b771f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-convert-artifact-1665047532/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "6d724685-bc53-43bb-a9c4-0beda91c6e05", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-1908765320/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 08:08:00 +0000 UTC FinishedAt: 2026-07-27 08:59:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0bcb7091-17f4-41b7-9a34-d734910b771f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-convert-artifact-1665047532/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "6d724685-bc53-43bb-a9c4-0beda91c6e05", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-1908765320/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 08:59:16 +0000 UTC FinishedAt: 2026-07-27 08:59:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 08:59:16 +0000 UTC FinishedAt: 2026-07-27 08:59:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 08:59:16 +0000 UTC FinishedAt: 2026-07-27 09:01:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 08:59:16 +0000 UTC FinishedAt: 2026-07-27 09:01:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6d724685-bc53-43bb-a9c4-0beda91c6e05,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-1908765320/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 09:01:20 +0000 UTC FinishedAt: 2026-07-27 12:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 09:01:20 +0000 UTC FinishedAt: 2026-07-27 12:04:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*fc5c3be2-3d3b-497d-ae9a-092feddb5663,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6d724685-bc53-43bb-a9c4-0beda91c6e05,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-3091813815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-1908765320/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 09:01:20 +0000 UTC FinishedAt: 2026-07-27 09:01:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 09:01:20 +0000 UTC FinishedAt: 2026-07-27 09:01:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-convert-artifact-3936719317/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 09:01:20 +0000 UTC FinishedAt: 2026-07-27 09:01:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 09:01:20 +0000 UTC FinishedAt: 2026-07-27 09:01:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 09:01:20 +0000 UTC FinishedAt: 2026-07-27 09:01:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 09:01:30 +0000 UTC FinishedAt: 2026-07-27 12:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvp6n7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_migrate_pages","damon_start"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1e15fbef3a3c465a6a2db0f38e3980d75420bd6d","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS"],"series_id":"f8613bbb-b282-4798-8947-1dfd5fd36381","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 09:01:30 +0000 UTC FinishedAt: 2026-07-27 12:04:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fc5c3be2-3d3b-497d-ae9a-092feddb5663,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6d724685-bc53-43bb-a9c4-0beda91c6e05,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-3091813815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-build-action-1908765320/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvp6n7/series-workflowvp6n7-convert-artifact-3936719317/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}