Name: series-workflowfwc7h Phase: Succeeded StartedAt: 2026-09-10 16:01:19 +0000 UTC FinishedAt: 2026-09-10 20:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[0] Phase: Succeeded StartedAt: 2026-09-10 16:01:19 +0000 UTC FinishedAt: 2026-09-10 16:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 16:01:19 +0000 UTC FinishedAt: 2026-09-10 16:37:14 +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": "cf558a250cf4475a8936902b8978fbb6c61016f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "DAMON_PADDR" ], "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": "cf558a250cf4475a8936902b8978fbb6c61016f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "DAMON_PADDR" ], "series_id": "329c6dc6-1bf1-408f-928e-52c1f7b6eba5" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kdamond_fn", "damos_apply_scheme", "damon_start", "damon_commit_ctx", "damon_sysfs_handle_cmd" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2RhbW9uZF9mbiYjMzQ7LAogICAgJiMzNDtkYW1vc19hcHBseV9zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19oYW5kbGVfY21kJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpYCBpbiBgbW0vZGFtb24vY29yZS5jYCB0byByZXNldCBgcy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb21gIHRvIGBOVUxMYCBhbmQgYHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbWAgdG8gYDBgIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgdGFyZ2V0IChgdGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlYCkuXG5cblRoaXMgY2hhbmdlIGNsZWFycyBzdGFsZSB0YXJnZXQgcmVmZXJlbmNlcyBpbiBEQU1PTiBzY2hlbWUgcXVvdGEgdHJhY2tpbmcuIEl0IGRvZXMgbm90IGFsbG9jYXRlIG5ldyBtZW1vcnksIGFjY2VzcyB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYnVmZmVycywgYWx0ZXIgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBoYW5kbGluZywgb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbnkgcG90ZW50aWFsIHN0YWxlIHBvaW50ZXIgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGJ5IHN0YW5kYXJkIEtBU0FOLCB3aGVyZWFzIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBrZGFtb25kX2FwcGx5X3NjaGVtZXMoKSBpbiBEQU1PTiBjb3JlIChtbS9kYW1vbi9jb3JlLmMpIHRvIHJlc2V0IHRoZSBzY2hlbWUgcXVvdGEgY2hhcmdlIHRhcmdldCBhbmQgYWRkcmVzcyB3aGVuIGEgdGFyZ2V0IGlzIG1hcmtlZCBpbnZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYWNjZXNzaWJsZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAxN2UzODEwYjExNjA5YmZmYmQ4ODhjNTIzOTc4M2RjMGU1YjUwY2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxNjozNTo1NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDY0NWNiMzY3MDE5YWUuLjA2Y2YyYWI3ZTk3ZDcgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTMzOTMsOCAmIzQzOzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4gXHRtYXhfcmVnaW9uX3N6ID0gZGFtb25fcmVnaW9uX3N6X2xpbWl0KGMpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZjLVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbiBcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XG4tXHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSlcbiYjNDM7XHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkge1xuJiM0MztcdFx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xuJiM0MztcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxuJiM0MztcdFx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xuJiM0MztcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiBcdFx0ZGFtb3NfYXBwbHlfdGFyZ2V0KGMsIHQsIG1heF9yZWdpb25fc3opO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2RhbW9uZF9mbiYjMzQ7LAogICAgJiMzNDtkYW1vc19hcHBseV9zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19oYW5kbGVfY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGluIERBTU9OIGNvcmUgKG1tL2RhbW9uL2NvcmUuYykgdG8gcmVzZXQgdGhlIHNjaGVtZSBxdW90YSBjaGFyZ2UgdGFyZ2V0IGFuZCBhZGRyZXNzIHdoZW4gYSB0YXJnZXQgaXMgbWFya2VkIGludmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE2OjM1OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDY0NWNiMzY3MDE5YWUuLjA2Y2YyYWI3ZTk3ZDcgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTMzOTMsOCAmIzQzOzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpCiAJbWF4X3JlZ2lvbl9zeiA9IGRhbW9uX3JlZ2lvbl9zel9saW1pdChjKTsKIAltdXRleF9sb2NrKCZhbXA7Yy0mZ3Q7d2Fsa19jb250cm9sX2xvY2spOwogCWRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7Ci0JCWlmIChjLSZndDtvcHMudGFyZ2V0X3ZhbGlkICZhbXA7JmFtcDsgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkKJiM0MzsJCWlmIChjLSZndDtvcHMudGFyZ2V0X3ZhbGlkICZhbXA7JmFtcDsgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkgewomIzQzOwkJCWRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7CiYjNDM7CQkJCWlmIChzLSZndDtxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdCkKJiM0MzsJCQkJCWNvbnRpbnVlOwomIzQzOwkJCQlzLSZndDtxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMOwomIzQzOwkJCQlzLSZndDtxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDsKJiM0MzsJCQl9CiAJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJZGFtb3NfYXBwbHlfdGFyZ2V0KGMsIHQsIG1heF9yZWdpb25fc3opOwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTkzCgkJCQkJCQlvdXRwdXQ6IDY0CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIERBTU9OIENvcmUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDMzOTMgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIExldCYjMzk7cyBzdGFydCBieSBlaXRoZXIgbGV2ZXJhZ2luZyBgZ3JlcHBlcmAgKGJlY2F1c2UgSSBrbm93IGl0JiMzOTtzIHRoZXJlIGFuZCBlZmZpY2llbnQpIG9yLCBpZiB0aGF0IGlzbiYjMzk7dCByZWFkaWx5IGF2YWlsYWJsZSwgSSYjMzk7bGwgZ28gd2l0aCB0aGUgbW9yZSBzdHJhaWdodGZvcndhcmQgYHJlYWQtZmlsZWAgdG8gZ3JhYiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSBoZXJlLgoKT25jZSBJIGhhdmUgdGhlIHJlbGV2YW50IGNvZGUgaW4gZnJvbnQgb2YgbWUsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgYEtjb25maWdgIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgREFNT04mIzM5O3MgYmVoYXZpb3IuIEkgY2FuJiMzOTt0IGJlIHN1cmUgb2YgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlcyB3aXRob3V0IGNvbnNpZGVyaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIEkgd2lsbCBuZWVkIHRvIHZlcmlmeSBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBEQU1PTiBpcyBjb25maWd1cmVkLiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIG9yIGRlYnVnZ2luZyBhbnkgaXNzdWVzLiBJIG5lZWQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM4MDpcdFx0XHRcdGNvbnRpbnVlO1xuMzM4MTpcdFxuMzM4MjpcdFx0XHRpZiAoIXMtXHUwMDNld21hcmtzLmFjdGl2YXRlZClcbjMzODM6XHRcdFx0XHRjb250aW51ZTtcbjMzODQ6XHRcbjMzODU6XHRcdFx0aGFzX3NjaGVtZXNfdG9fYXBwbHkgPSB0cnVlO1xuMzM4NjpcdFxuMzM4NzpcdFx0XHRkYW1vc19hZGp1c3RfcXVvdGEoYywgcyk7XG4zMzg4Olx0XHR9XG4zMzg5Olx0XG4zMzkwOlx0XHRpZiAoIWhhc19zY2hlbWVzX3RvX2FwcGx5KVxuMzM5MTpcdFx0XHRyZXR1cm47XG4zMzkyOlx0XG4zMzkzOlx0XHRtYXhfcmVnaW9uX3N6ID0gZGFtb25fcmVnaW9uX3N6X2xpbWl0KGMpO1xuMzM5NDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZjLVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbjMzOTU6XHRcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XG4zMzk2Olx0XHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkge1xuMzM5NzpcdFx0XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XG4zMzk4Olx0XHRcdFx0XHRpZiAocy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdClcbjMzOTk6XHRcdFx0XHRcdFx0Y29udGludWU7XG4zNDAwOlx0XHRcdFx0XHRzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG4zNDAxOlx0XHRcdFx0XHRzLVx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb20gPSAwO1xuMzQwMjpcdFx0XHRcdH1cbjM0MDM6XHRcdFx0XHRjb250aW51ZTtcbjM0MDQ6XHRcdFx0fVxuMzQwNTpcdFx0XHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XG4zNDA2Olx0XHR9XG4zNDA3Olx0XG4zNDA4Olx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xuMzQwOTpcdFx0XHRpZiAodGltZV9iZWZvcmUoYy1cdTAwM2VwYXNzZWRfc2FtcGxlX2ludGVydmFscywgcy1cdTAwM2VuZXh0X2FwcGx5X3NpcykpXG4zNDEwOlx0XHRcdFx0Y29udGludWU7XG4zNDExOlx0XHRcdGRhbW9zX3dhbGtfY29tcGxldGUoYywgcyk7XG4zNDEyOlx0XHRcdGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzLCBjKTtcbjM0MTM6XHRcdFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBOVUxMO1xuMzQxNDpcdFx0XHRkYW1vc190cmFjZV9zdGF0KGMsIHMpO1xuMzQxNTpcdFx0fVxuMzQxNjpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmMtXHUwMDNld2Fsa19jb250cm9sX2xvY2spO1xuMzQxNzpcdH1cbjM0MTg6XHRcbjM0MTk6XHQjaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxuMzQyMDpcdHN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcbjM0MjE6XHRcdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcbjM0MjI6XHR7XG4zNDIzOlx0XHQvKiBkYW1vbl9tZXJnZV90d29fcmVnaW9ucygpIG1heSBjcmVhdGVkIGluY29ycmVjdCBsZWZ0IHJlZ2lvbiAqL1xuMzQyNDpcdFx0V0FSTl9PTkNFKGwtXHUwMDNlYXIuc3RhcnQgXHUwMDNlPSBsLVx1MDAzZWFyLmVuZCwgXCYjMzQ7bDogJWx1LSVsdSwgcjogJWx1LSVsdVxcblwmIzM0OyxcbjM0MjU6XHRcdFx0XHRsLVx1MDAzZWFyLnN0YXJ0LCBsLVx1MDAzZWFyLmVuZCwgci1cdTAwM2Vhci5zdGFydCwgci1cdTAwM2Vhci5lbmQpO1xuMzQyNjpcdH1cbjM0Mjc6XHQjZWxzZVxuMzQyODpcdHN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcbjM0Mjk6XHRcdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4KCioqREFNT04gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGUgcm9hZCB3aXRoIHRoaXMsIEkgbmVlZCBhIGNsZWFyZXIgcGljdHVyZSBvZiBEQU1PTiYjMzk7cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUga2VybmVsIOKAkyBzcGVjaWZpY2FsbHksIGhvdyBEQU1PTiBpcyBlbmFibGVkIGFuZCB1c2VkLiBUaGlzIG1lYW5zIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljOyB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcywgY29tcGlsYXRpb24gZmxhZ3MsIG9yIGhhcmR3YXJlIHNldHVwcyBuZWVkIHRvIGJlIGluIHBsYWNlIGZvciBEQU1PTiB0byBldmVuIGJlIGF2YWlsYWJsZT8KCkJleW9uZCB0aGUgYmFzaWMgZW5hYmxlbWVudCwgSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gZXhwb3NlcyBjb250cm9sIG92ZXIgREFNT04uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3lzZnMgZW50cmllcyBhcmUgYXZhaWxhYmxlLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIERBTU9OIGZ1bmN0aW9uYWxpdHkuIEZ1cnRoZXJtb3JlLCBJIG5lZWQgdG8ga25vdyBob3cgdmlydHVhbCBhZGRyZXNzZXMgKGB2YWRkcmApIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgKGBwYWRkcmApIGFyZSBtYW5hZ2VkIGFuZCBhY2Nlc3NlZCB3aXRoaW4gdGhlIERBTU9OIGNvbnRleHQuIFRoaXMgdW5kZXJzdGFuZGluZyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgbWVjaGFuaWNzIG9mIGhvdyBtZW1vcnkgcmVnaW9ucyBhcmUgYmVpbmcgb2JzZXJ2ZWQgYW5kIG1hbmFnZWQuIFVsdGltYXRlbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiBpcyBhY3R1YWxseSAqdXNlZCogaW4gYSBwcmFjdGljYWwgc2Vuc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdFxuICAgMzpcdG1lbnUgXCYjMzQ7RGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1wmIzM0O1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBEQU1PTlxuICAgNjpcdFx0Ym9vbCBcJiMzNDtEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcJiMzNDtcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxuICAgOTpcdFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcbiAgMTA6XHRcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgU2VlIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L21tL2RhbW9uL2luZGV4Lmh0bWwgZm9yXG4gIDEzOlx0XHQgIG1vcmUgaW5mb3JtYXRpb24uXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxuICAxNjpcdFx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xuICAxNzpcdFx0ZGVwZW5kcyBvbiBEQU1PTlxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBUaGlzIGVuYWJsZXMgYWRkaXRpb25hbCBEQU1PTiBkZWJ1Z2dpbmctcHVycG9zZSBzYW5pdHkgY2hlY2tzIGluXG4gIDIwOlx0XHQgIERBTU9OIGNvZGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGZpbmRpbmcgYnVncywgYnV0IGltcG9zZVxuICAyMTpcdFx0ICBhZGRpdGlvbmFsIG92ZXJoZWFkLiAgVGhpcyBpcyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gYmUgZW5hYmxlZCBvblxuICAyMjpcdFx0ICBvbmx5IGRldmVsb3BtZW50IGFuZCB0ZXN0IHNldHVwcy5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgREFNT05fS1VOSVRfVEVTVFxuICAyNzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDI4Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBLVU5JVD15XG4gIDI5Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cbiAgMzI6XHRcbiAgMzM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDM0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICAzNTpcdFxuICAzNjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBEQU1PTl9WQUREUlxuICAzOTpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA0MTpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDQyOlx0XHRkZWZhdWx0IERBTU9OXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNDU6XHRcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBEQU1PTl9QQUREUlxuICA0ODpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNTA6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA1MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDU0Olx0XHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4gIDU3Olx0XHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA1OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgNjA6XHRcdGhlbHBcbiAgNjE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDY0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA3OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgODA6XHRcdGhlbHBcbiAgODE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxuICA4MjpcdFxuICA4MzpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcbiAgODQ6XHRcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXG4gIDg1Olx0XG4gIDg2Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDg3Olx0XG4gIDg4Olx0Y29uZmlnIERBTU9OX1JFQ0xBSU1cbiAgODk6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbiAgOTA6XHRcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIHJlY2xhbWF0aW9uIHN1YnN5c3RlbS4gIEl0IGZpbmRzIHBhZ2VzXG4gIDkzOlx0XHQgIHRoYXQgbm90IGFjY2Vzc2VkIGZvciBhIGxvbmcgdGltZSAoY29sZCkgdXNpbmcgREFNT04gYW5kIHJlY2xhaW1cbiAgOTQ6XHRcdCAgdGhvc2UuXG4gIDk1Olx0XG4gIDk2Olx0XHQgIFRoaXMgaXMgc3VnZ2VzdGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9hY3RpdmUgYW5kIGxpZ2h0d2VpZ2h0XG4gIDk3Olx0XHQgIHJlY2xhbWF0aW9uIHVuZGVyIGxpZ2h0IG1lbW9yeSBwcmVzc3VyZSwgd2hpbGUgdGhlIHRyYWRpdGlvbmFsIHBhZ2VcbiAgOTg6XHRcdCAgc2Nhbm5pbmctYmFzZWQgcmVjbGFtYXRpb24gaXMgdXNlZCBmb3IgaGVhdnkgcHJlc3N1cmUuXG4gIDk5Olx0XG4gMTAwOlx0Y29uZmlnIERBTU9OX0xSVV9TT1JUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUwMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gREFNT04mIzM5O3MgQ29yZTogRXhhbWluaW5nIGtkYW1vbmRcX2FwcGx5XF9zY2hlbWVzIGFuZCBDaGFyZ2UgVGFyZ2V0KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgZ3V0cyBvZiBEQU1PTi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGR5bmFtaWNzIGJldHdlZW4gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIHRoZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBmdW5jdGlvbiwgYW5kIGhvdyB0aGV5IHJlbGF0ZSBhY3Jvc3MgdGhlIERBTU9OIGNvZGViYXNlLgoKRmlyc3QgdXAsIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCAqZXhhY3RseSogd2hhdCB0aGlzIHJvdXRpbmUgZG9lcyBhdCBhIGZ1bmN0aW9uYWwgbGV2ZWwuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgdGhlIGNvcmUgZW5naW5lIHRoYXQgcHV0cyB0aGUgbW9uaXRvcmluZyBhbmQgYWRhcHRhdGlvbiBsb2dpYyBpbnRvIGFjdGlvbiwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpY3MuIFdoYXQgc2NoZW1lcyBhcmUgYmVpbmcgYXBwbGllZD8gSG93IGFyZSB0aGV5IGNob3Nlbj8gSXMgaXQgYSBzaW5nbGUgcGFzcywgb3IgZG9lcyBpdCBpdGVyYXRlPyBXaGF0IGFyZSB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZXNlIHNjaGVtZXMsIGFuZCBob3cgY29tcGxleCBpcyB0aGUgbG9naWMgZW1iZWRkZWQgd2l0aGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGl0c2VsZj8gQSBkZWVwIGRpdmUgaW50byB0aGUgY29kZSBpcyByZXF1aXJlZCwgYW5kIEkgc3VzcGVjdCBhIGNsb3NlIGxvb2sgYXQgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzLCBwYXJ0aWN1bGFybHkgdGhlIHNjaGVtZSBkZWZpbml0aW9ucywgd2lsbCBiZSBjcnVjaWFsLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGdyYXBoIGFuZCBsb29rIGF0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBEQU1PTiBldmVudCBsb29wLgoKVGhlbiwgdGhlcmUmIzM5O3MgYGNoYXJnZV90YXJnZXRfZnJvbWAuIFRoZSBuYW1pbmcgaGludHMgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoICYjMzQ7Y2hhcmdpbmcmIzM0OyBhIHRhcmdldCwgYnV0IHRoZSBzcGVjaWZpY3MgYXJlIHdoZXJlIG15IGF0dGVudGlvbiBuZWVkcyB0byBnby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25zdGl0dXRlcyBhICYjMzQ7Y2hhcmdlJiMzNDsuIElzIHRoaXMgcmVsYXRlZCB0byBtZW1vcnkgcHJlc3N1cmUsIENQVSB1c2FnZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBgZnJvbWAgcGFydCBzdWdnZXN0cyB0aGUgZnVuY3Rpb24mIzM5O3MgcmVzcG9uc2liaWxpdHkgaXMgdG8gZGVyaXZlIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB0aGlzICYjMzQ7Y2hhcmdlJiMzNDsuIFdoZXJlIGRvZXMgaXQgZ2F0aGVyIGl0cyBpbnB1dHM/IFdoZXJlIGFuZCBob3cgaXMgaXQgdXNlZD8gSSYjMzk7bSBwcm9iYWJseSBnb2luZyB0byBiZSBjaGFzaW5nIGRvd24gaXRzIGRhdGEgZGVwZW5kZW5jaWVzIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0JiMzOTtzIGludm9rZWQuIEkgZXhwZWN0IHRoaXMgdG8gYmUgYSBrZXkgZWxlbWVudCBpbiBob3cgREFNT04mIzM5O3MgZmVlZGJhY2sgbG9vcCB3b3Jrcy4gRG9lcyBpdCB0YWtlIGEgc3RhdGljIHZhbHVlLCBvciBpcyBpdCBkeW5hbWljYWxseSBjb21wdXRlZCBiYXNlZCBvbiBsaXZlIHN5c3RlbSBtZXRyaWNzPyBXaGF0IGFyZSB0aGUgdW5pdHMgaW52b2x2ZWQ/CgpGaW5hbGx5LCB0aGUgY3Jvc3MtY3V0dGluZyBxdWVzdGlvbjogV2hlcmUgaXMgYGNoYXJnZV90YXJnZXRfZnJvbWAgdXRpbGl6ZWQ/IEtub3dpbmcgdGhlIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgaG93IGRpZmZlcmVudCBtb25pdG9yaW5nIHNjaGVtZXMgY29udHJpYnV0ZSB0byBEQU1PTuKAmXMgZGVjaXNpb24tbWFraW5nLiBBcmUgdGhlc2UgY2FsbHMgZGlyZWN0bHkgd2l0aGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLCBvciBhcmUgdGhleSB1c2VkIGJ5IG90aGVyIGNvbXBvbmVudHMgYXMgd2VsbD8gVW5kZXJzdGFuZGluZyB0aGUgdXNhZ2UgcGF0dGVybiBpcyBnb2luZyB0byBjbGFyaWZ5IGhvdyB0aGVzZSB0d28gcm91dGluZXMgd29yayB0b2dldGhlciB0byBhY2hpZXZlIERBTU9O4oCZcyBnb2FscywgcGFydGljdWxhcmx5IHRoZSBtZWNoYW5pc21zIGZvciB0cmlnZ2VyaW5nIGFuZCByZXNwb25kaW5nIHRvIGNoYW5nZXMgaW4gc3lzdGVtIGJlaGF2aW9yLiBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgdHdvIGVsZW1lbnRzIHdpbGwgaWxsdW1pbmF0ZSBob3cgdGhlIHN5c3RlbSBhZGFwdHMgYW5kIG9wdGltaXplcyByZXNvdXJjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhcmdlX3RhcmdldF9mcm9tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTczMj1zdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhICpkYW1vc19xdW90YV9pbml0KHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXG4tLVxubW0vZGFtb24vY29yZS5jLTczOC1cdHF1b3RhLVx1MDAzZWNoYXJnZWRfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmM6NzM5Olx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy03NDAtXHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTY5Nj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzIyLVx0XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBkc3QpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzIzOlx0XHRcdFx0aWYgKHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID09IGRzdF90YXJnZXQpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzI0Olx0XHRcdFx0XHRzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG5tbS9kYW1vbi9jb3JlLmMtMTcyNS1cdFx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjQ0OT1zdGF0aWMgYm9vbCBkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI0NTctXHQvKiBTa2lwIHByZXZpb3VzbHkgY2hhcmdlZCByZWdpb25zICovXG5tbS9kYW1vbi9jb3JlLmM6MjQ1ODpcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pIHtcbm1tL2RhbW9uL2NvcmUuYzoyNDU5Olx0XHRpZiAodCAhPSBxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pXG5tbS9kYW1vbi9jb3JlLmMtMjQ2MC1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQ4My1cdGlmIChyID09IGRhbW9uX2xhc3RfcmVnaW9uKHQpKSB7XG5tbS9kYW1vbi9jb3JlLmM6MjQ4NDpcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy0yNDg1LVx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjY4NT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc0NC1cdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzQ1Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XG5tbS9kYW1vbi9jb3JlLmMtMjc0Ni1cdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTMzNzE9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMzOTctXHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbm1tL2RhbW9uL2NvcmUuYzozMzk4Olx0XHRcdFx0aWYgKHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tICE9IHQpXG5tbS9kYW1vbi9jb3JlLmMtMzM5OS1cdFx0XHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi9jb3JlLmM6MzQwMDpcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy0zNDAxLVx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkxNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgaW4gdGhlIERBTU9OIENvcmUqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gREFNT04mIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIHN0YXJ0aW5nIHdpdGggYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgKndoZW4qIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgaW52b2tlZD8gSXQmIzM5O3MgdGhlIHBvaW50IHdoZXJlIHRoZSBEQU1PUyBzY2hlbWVzIGFyZSBhcHBsaWVkIHdpdGhpbiBga2RhbW9uZGAsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgc2l0ZXMgaXMgY3JpdGljYWwgdG8gY29tcHJlaGVuZGluZyB0aGUgb3ZlcmFsbCB3b3JrZmxvdy4gVGltZSB0byB0cmFjZSBiYWNrIGFuZCBpZGVudGlmeSBhbGwgdGhlIHBhdGhzIHRoYXQgbGVhZCB0byB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrZGFtb25kX2FwcGx5X3NjaGVtZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MzM1NT1zdGF0aWMgdm9pZCBkYW1vc190cmFjZV9zdGF0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzM3MC1cbm1tL2RhbW9uL2NvcmUuYzozMzcxOnN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxubW0vZGFtb24vY29yZS5jLTMzNzIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zOTA0PXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zOTgwLVx0XHQvKlxubW0vZGFtb24vY29yZS5jOjM5ODE6XHRcdCAqIGRvIGtkYW1vbmRfY2FsbCgpIGFuZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoKSBhZnRlclxubW0vZGFtb24vY29yZS5jLTM5ODItXHRcdCAqIGtkYW1vbmRfbWVyZ2VfcmVnaW9ucygpIGlmIHBvc3NpYmxlLCB0byByZWR1Y2Ugb3ZlcmhlYWRcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzk5NS1cdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmN0eC1cdTAwM2VzY2hlbWVzKSlcbm1tL2RhbW9uL2NvcmUuYzozOTk2Olx0XHRcdGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhjdHgpO1xubW0vZGFtb24vY29yZS5jLTM5OTctXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEQU1PTiBQYXRjaCBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmcgPSBUcnVlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIEkga25vdyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGNhbGxlZCB3aXRoaW4gYGtkYW1vbmRfZm5gIGluIGBtbS9kYW1vbi9jb3JlLmNgLiAgSSYjMzk7bSBhbHNvIGF3YXJlIG9mIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgKGBtbS9kYW1vbi9zeXNmcy5jYCkg4oCTIHdoaWNoIHRlbGxzIG1lIHVzZXJzcGFjZSBpbnRlcmFjdGlvbiBpcyBhIGZhY3Rvciwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluLy4uLmAuICBHb29kLiBOb3csIHRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBZZXMsIGl0IGNhbi4gIEkgY2FuIGNyZWF0ZSBhbmQgY29uZmlndXJlIHN5c2ZzIGF0dHJpYnV0ZXMgYW5kIHN0YXJ0L3N0b3AgREFNT04sIHNvIGl0JiMzOTtzIGEgdmFsaWQgYXR0YWNrIHN1cmZhY2UgZm9yIGZ1enppbmcuCgpOb3csIHRvIHRoZSBwYXRjaCBpdHNlbGYuICBJbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgaXQmIzM5O3MgaGFuZGxpbmcgaW52YWxpZCB0YXJnZXRzLiBQcmV2aW91c2x5LCBpdCBzaW1wbHkgY29udGludWVkIHdoZW4gYGMtJmd0O29wcy50YXJnZXRfdmFsaWQodClgIHJldHVybmVkIGZhbHNlLiAgTm93LCB0aGUgcGF0Y2ggKnJlc2V0cyogYGNoYXJnZV90YXJnZXRfZnJvbWAgYW5kIGBjaGFyZ2VfYWRkcl9mcm9tYCBvbiBhZmZlY3RlZCBzY2hlbWVzIGlmIHRoZSB0YXJnZXQgYmVjb21lcyBpbnZhbGlkLiBJdCBtYWtlcyBzZW5zZSBiZWNhdXNlIHRoZXNlIHZhcmlhYmxlcyB3ZXJlIGxpa2VseSBob2xkaW5nIHN0YWxlIHBvaW50ZXJzIHRvIGEgdGFyZ2V0IHRoYXQgbm8gbG9uZ2VyIGV4aXN0cyAocHJvY2VzcyBkaWVkLCB0YXJnZXQgaW52YWxpZGF0ZWQpLiBUaGlzIGNoYW5nZSBwcmV2ZW50cyB3YWl0aW5nL3NraXBwaW5nIG9yIHRoZSBkcmVhZGVkIHVzZS1hZnRlci1mcmVlIG9yIGEga2VybmVsIGhhbmcuCgpDYW4gdGhpcyBhY3R1YWxseSAqYmUqIGhpdCBkdXJpbmcgZXhlY3V0aW9uPyBBYnNvbHV0ZWx5LiAgYG1tL2RhbW9uL2NvcmUuY2AgaXMgcGFydCBvZiBEQU1PTi4gREFNT04gaXMgY29uZmlndXJhYmxlIGFuZCByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVS9LVk0gc2V0dXBzIHZpYSBzeXNmcyAoYENPTkZJR19EQU1PTl9TWVNGU2AsIGBDT05GSUdfREFNT05fVkFERFJgLCBgQ09ORklHX0RBTU9OX1BBRERSYCkuICBBaGEsIHNvIGl0JiMzOTtzIGEgcmVhbCBhbmQgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgcGF0aC4KCkkmIzM5O20gZm9sbG93aW5nIHRoZSBmdXp6aW5nIGluc3RydWN0aW9ucywgYW5kIHRoaXMgbmVhdGx5IGZhbGxzIGludG8gdGhlIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nPXRydWVgLiAgVGhpcyBwYXRjaCBtb2RpZmllcyBsb2dpYyBpbiBhIGNvcmUgTU0gc3Vic3lzdGVtIChtZW1vcnkgbWFuYWdlbWVudCksIGFuZCB0aGF0JiMzOTtzIGEgZGlyZWN0IGhpdCBhY2NvcmRpbmcgdG8gU2VjdGlvbiAzLgoKTmV4dCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBmdXp6aW5nIGZvY3VzIHN5bWJvbHMuICBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyBzdGF0aWMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhhdCBtZWFucyBJIG5lZWQgdG8gbG9vayBmb3IgZW50cnkgcG9pbnRzIHRvIHRoYXQgZnVuY3Rpb24uICBJJiMzOTtsbCBmb2N1cyBvbiBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYyBzeW1ib2xzIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuICBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgYXQgYGtkYW1vbmRfZm5gLCBgZGFtb25fc3RhcnRgLCBgZGFtb25fYXBwbHlfc2NoZW1lYCwgYW5kIGBkYW1vbl9jb21taXRfdGFyZ2V0c2AuIFRob3NlIGxvb2sgbGlrZSBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2Etel9dJiM0MzsgZGFtb25fJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUzNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxubW0vZGFtb24vY29yZS5jPTM1PXN0YXRpYyBib29sIF9fZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoZW51bSBkYW1vbl9vcHNfaWQgaWQpXG4tLVxubW0vZGFtb24vY29yZS5jLTQ5LSAqL1xubW0vZGFtb24vY29yZS5jOjUwOmJvb2wgZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoZW51bSBkYW1vbl9vcHNfaWQgaWQpXG5tbS9kYW1vbi9jb3JlLmMtNTEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo3MTppbnQgZGFtb25fcmVnaXN0ZXJfb3BzKHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zICpvcHMpXG5tbS9kYW1vbi9jb3JlLmMtNzIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy05Ny0gKi9cbm1tL2RhbW9uL2NvcmUuYzo5ODppbnQgZGFtb25fc2VsZWN0X29wcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGVudW0gZGFtb25fb3BzX2lkIGlkKVxubW0vZGFtb24vY29yZS5jLTk5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTEzLVxubW0vZGFtb24vY29yZS5jOjExNDpzdHJ1Y3QgZGFtb25fcHJlcCAqZGFtb25fbmV3X3ByZXAoZW51bSBkYW1vbl9wcmVwX2FjdGlvbiBhY3Rpb24pXG5tbS9kYW1vbi9jb3JlLmMtMTE1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI1LVxubW0vZGFtb24vY29yZS5jOjEyNjp2b2lkIGRhbW9uX2FkZF9wcmVwKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX3ByZXAgKnByZXApXG5tbS9kYW1vbi9jb3JlLmMtMTI3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTU5PXN0YXRpYyBib29sIGRhbW9uX2hhc19wcmVwKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE3MC1cbm1tL2RhbW9uL2NvcmUuYzoxNzE6c3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbmV3X2ZpbHRlcihlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGUsXG5tbS9kYW1vbi9jb3JlLmMtMTcyLVx0XHRib29sIG1hdGNoaW5nLCBib29sIGFsbG93KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODUtXG5tbS9kYW1vbi9jb3JlLmM6MTg2OnZvaWQgZGFtb25fYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtMTg3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTk2PXN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG4tLVxubW0vZGFtb24vY29yZS5jLTIwMC1cbm1tL2RhbW9uL2NvcmUuYzoyMDE6dm9pZCBkYW1vbl9kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTIwMi17XG4tLVxubW0vZGFtb24vY29yZS5jPTIwNz1zdGF0aWMgc3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbnRoX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9uX3Byb2JlICpwKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTgtXG5tbS9kYW1vbi9jb3JlLmM6MjE5OnN0cnVjdCBkYW1vbl9wcm9iZSAqZGFtb25fbmV3X3Byb2JlKHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtMjIwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjMyLVxubW0vZGFtb24vY29yZS5jOjIzMzp2b2lkIGRhbW9uX2FkZF9wcm9iZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUpXG5tbS9kYW1vbi9jb3JlLmMtMjM0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mzc5PXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zODgtICovXG5tbS9kYW1vbi9jb3JlLmM6Mzg5OnN0cnVjdCBkYW1vbl9yZWdpb24gKmRhbW9uX25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG5tbS9kYW1vbi9jb3JlLmMtMzkwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9NTA2PXN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy01MzgtICovXG5tbS9kYW1vbi9jb3JlLmM6NTM5OmludCBkYW1vbl9zZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmFuZ2VzLFxubW0vZGFtb24vY29yZS5jLTU0MC1cdFx0dW5zaWduZWQgaW50IG5yX3JhbmdlcywgdW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxuLS1cbm1tL2RhbW9uL2NvcmUuYz03ODc9c3RhdGljIHZvaWQgZGFtb3Nfc2V0X25leHRfYXBwbHlfc2lzKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy03OTctXG5tbS9kYW1vbi9jb3JlLmM6Nzk4OnZvaWQgZGFtb25fYWRkX3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy03OTkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz04MDk9c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy04MTMtXG5tbS9kYW1vbi9jb3JlLmM6ODE0OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgxNS17XG4tLVxubW0vZGFtb24vY29yZS5jLTgzOC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4Mzk6c3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKVxubW0vZGFtb24vY29yZS5jLTg0MC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg1NS1cbm1tL2RhbW9uL2NvcmUuYzo4NTY6dm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbm1tL2RhbW9uL2NvcmUuYy04NTcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04NjMtICovXG5tbS9kYW1vbi9jb3JlLmM6ODY0OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxubW0vZGFtb24vY29yZS5jLTg2NS17XG4tLVxubW0vZGFtb24vY29yZS5jPTg3Mj1zdGF0aWMgdm9pZCBkYW1vbl9kZWxfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jLTg3Ni1cbm1tL2RhbW9uL2NvcmUuYzo4Nzc6dm9pZCBkYW1vbl9mcmVlX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg3OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg4NS1cbm1tL2RhbW9uL2NvcmUuYzo4ODY6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtODg3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODk2PXVuc2lnbmVkIGludCBkYW1vbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jLTkwMC1cbm1tL2RhbW9uL2NvcmUuYzo5MDE6c3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X2N0eCh2b2lkKVxubW0vZGFtb24vY29yZS5jLTkwMi17XG4tLVxubW0vZGFtb24vY29yZS5jPTk0Mj1zdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy05NDktXG5tbS9kYW1vbi9jb3JlLmM6OTUwOnZvaWQgZGFtb25fZGVzdHJveV9jdHgoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTk1MS17XG4tLVxubW0vZGFtb24vY29yZS5jPTEwODM9c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfaW50ZXJ2YWxzX2dvYWwoc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTExNy0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTE4OmludCBkYW1vbl9zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxubW0vZGFtb24vY29yZS5jLTExMTkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTY1LSAqL1xubW0vZGFtb24vY29yZS5jOjExNjY6dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXG5tbS9kYW1vbi9jb3JlLmMtMTE2Ny1cdFx0XHRzc2l6ZV90IG5yX3NjaGVtZXMpXG4tLVxubW0vZGFtb24vY29yZS5jPTE5Mzc9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXG4tLVxubW0vZGFtb24vY29yZS5jLTE5NjUtICovXG5tbS9kYW1vbi9jb3JlLmM6MTk2NjppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xOTY3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjA0OT1zdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDg1LSAqL1xubW0vZGFtb24vY29yZS5jOjIwODY6aW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXG5tbS9kYW1vbi9jb3JlLmMtMjA4Ny17XG4tLVxubW0vZGFtb24vY29yZS5jPTIxMzE9c3RhdGljIHZvaWQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjE1MC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMTUxOnZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpXG5tbS9kYW1vbi9jb3JlLmMtMjE1Mi17XG4tLVxubW0vZGFtb24vY29yZS5jLTIxNjUtICovXG5tbS9kYW1vbi9jb3JlLmM6MjE2Njpib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIxNjcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTgxLSAqL1xubW0vZGFtb24vY29yZS5jOjIxODI6aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0yMTgzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjIxMy0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMjE0OmludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbm1tL2RhbW9uL2NvcmUuYy0yMjE1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzkwND1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDA3NC1cbm1tL2RhbW9uL2NvcmUuYzo0MDc1OnN0cnVjdCBkYW1vbl9zeXN0ZW1fcmFtX3JhbmdlX3dhbGtfYXJnIHtcbm1tL2RhbW9uL2NvcmUuYy00MDc2LVx0Ym9vbCB3YWxrZWQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTQxMDU9c3RhdGljIGJvb2wgZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZSh1bnNpZ25lZCBsb25nICpzdGFydCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDEzNi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MTM3OmludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbm1tL2RhbW9uL2NvcmUuYy00MTM4LVx0XHRcdHVuc2lnbmVkIGxvbmcgKnN0YXJ0LCB1bnNpZ25lZCBsb25nICplbmQsXG4tLVxubW0vZGFtb24vY29yZS5jLTQxNjEtICovXG5tbS9kYW1vbi9jb3JlLmM6NDE2Mjp2b2lkIGRhbW9uX3VwZGF0ZV9yZWdpb25fYWNjZXNzX3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBhY2Nlc3NlZClcbm1tL2RhbW9uL2NvcmUuYy00MTYzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDE3Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MTczOmJvb2wgZGFtb25faW5pdGlhbGl6ZWQodm9pZClcbm1tL2RhbW9uL2NvcmUuYy00MTc0LXtcbi0tXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jLTE0LSAqL1xubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYzoxNTppbnQgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cCxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTYtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKip0YXJnZXRwKVxuLS1cbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmgtNDUtXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oOjQ2OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00Ny1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApO1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz01NT1zdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9tb25pdG9yX2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy01OS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo2MDp2b2lkIGRhbW9uX3B0ZXBfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcbm1tL2RhbW9uL29wcy1jb21tb24uYy02MS17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTk1LVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjk2OnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTk3LXtcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MTI1PXN0YXRpYyBib29sIGRhbW9uX2h1Z2V0bGJfcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTM3LVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjEzODp2b2lkIGRhbW9uX2h1Z2V0bGJfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTM5LVx0XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNjItXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTYzOmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNjQtXHRcdFx0c3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMDgtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MjA5OmludCBkYW1vbl9jb2xkX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjEwLVx0XHRcdHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MjE4PXN0YXRpYyBib29sIGRhbW9uX2ZvbGlvX21rb2xkX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMzctXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MjM4OnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMzkte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0yOTE9c3RhdGljIGJvb2wgZGFtb25fZm9saW9feW91bmdfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMyNy1cbm1tL2RhbW9uL29wcy1jb21tb24uYzozMjg6Ym9vbCBkYW1vbl9mb2xpb195b3VuZyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMyOS17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTUyNj1ib29sIGRhbW9zX29wc19oYXNfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNTM0LVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjUzNTpib29sIGRhbW9uX29wc19maWx0ZXJfbWF0Y2goc3RydWN0IGRhbW9uX2ZpbHRlciAqZmlsdGVyLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTUzNi17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTk9c3RydWN0IGZvbGlvICpkYW1vbl9nZXRfbW9uaXRvcl9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbik7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTAtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTE6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjEyOnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKTtcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xMy0jaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjE0OnZvaWQgZGFtb25faHVnZXRsYl9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNS1cdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTE3PXN0YXRpYyBpbmxpbmUgdm9pZCBkYW1vbl9odWdldGxiX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uaC0yMS0jZW5kaWZcdC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL2RhbW9uL29wcy1jb21tb24uaDoyMjp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjIzOmJvb2wgZGFtb25fZm9saW9feW91bmcoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMjQtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MjU6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uaC0yNi1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjI3OmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uaC0yOC1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpO1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uaD0zMz1ib29sIGRhbW9zX29wc19oYXNfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMzQtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MzU6Ym9vbCBkYW1vbl9vcHNfZmlsdGVyX21hdGNoKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmZpbHRlciwgc3RydWN0IGZvbGlvICpmb2xpbyk7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA9REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE3LVx0XHR1bnNpZ25lZCBsb25nIG1pbixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjgxOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgyLXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz0xMDY9c3RhdGljIGJvb2wgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF9lcShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTE3OmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTgte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTk9ZXh0ZXJuIHN0cnVjdCBtdXRleCBkYW1vbl9zeXNmc19sb2NrO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTItXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTc6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVx0XHR1bnNpZ25lZCBsb25nIG1pbixcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVx0XHR1bnNpZ25lZCBsb25nIG1heCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjEtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0yMj1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc191bF9yYW5nZV9rdHlwZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yNy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zMy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzU6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0zNz1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVzX2t0eXBlO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzgtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozOTppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDAtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDI6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQzLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD00Nj12b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MTppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD01Nz12b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NjE6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI4Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjk3OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk4LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzU2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNjUtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzY2OnN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUyOC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTg4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6ODkyOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVycyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODkzLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTAxMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTAxOS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDIwOnN0cnVjdCBkYW1vbl9zeXNmc193YXRlcm1hcmtzIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDIxLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTc0OnN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTc1LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTY3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc193ZWlnaHRzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjgzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE2ODQ6c3RydWN0IGRhbW9uX3N5c2ZzX3F1b3RhcyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTY4NS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE5NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcXVvdGFzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTU4LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE5NTk6c3RydWN0IGRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTYwLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk2Nj1zdGF0aWNcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxOTY3OnN0cnVjdCBkYW1vbl9zeXNmc19hY2Nlc3NfcGF0dGVybiAqZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm5fYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTY4LXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjI0ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19kZXN0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMjU0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyNTUtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNjc0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4NS17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4OTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcylcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjkwLXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNDctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0ODppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNDktXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDY2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNjc6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDY4LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzEwNT12b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxNTEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzE1MjppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxNTMtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTQtXG5tbS9kYW1vbi9zeXNmcy5jOjE1OnN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb24ge1xubW0vZGFtb24vc3lzZnMuYy0xNi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz04MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25fa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy05MC1cbm1tL2RhbW9uL3N5c2ZzLmM6OTE6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbnMge1xubW0vZGFtb24vc3lzZnMuYy05Mi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0yMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcmVnaW9uc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIwOS1cbm1tL2RhbW9uL3N5c2ZzLmM6MjEwOnN0cnVjdCBkYW1vbl9zeXNmc190YXJnZXQge1xubW0vZGFtb24vc3lzZnMuYy0yMTEtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MzA3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3RhcmdldF9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTMxNi1cbm1tL2RhbW9uL3N5c2ZzLmM6MzE3OnN0cnVjdCBkYW1vbl9zeXNmc190YXJnZXRzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMzE4LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTQzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc190YXJnZXRzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtNDQ0LVxubW0vZGFtb24vc3lzZnMuYzo0NDU6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsIHtcbm1tL2RhbW9uL3N5c2ZzLmMtNDQ2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTU5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19pbnRlcnZhbHNfZ29hbF9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTYwMS1cbm1tL2RhbW9uL3N5c2ZzLmM6NjAyOnN0cnVjdCBkYW1vbl9zeXNmc19pbnRlcnZhbHMge1xubW0vZGFtb24vc3lzZnMuYy02MDMtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9NzQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ludGVydmFsc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTc1NS1cbm1tL2RhbW9uL3N5c2ZzLmM6NzU2OnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwIHtcbm1tL2RhbW9uL3N5c2ZzLmMtNzU3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTc2MT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAgKmRhbW9uX3N5c2ZzX3ByZXBfYWxsb2Modm9pZClcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTc3MS1cbm1tL2RhbW9uL3N5c2ZzLmM6NzcyOnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwX2FjdGlvbl9uYW1lIHtcbm1tL2RhbW9uL3N5c2ZzLmMtNzczLVx0Y29uc3QgZW51bSBkYW1vbl9wcmVwX2FjdGlvbiBhY3Rpb247XG4tLVxubW0vZGFtb24vc3lzZnMuYz04NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJlcF9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTg1Mi1cbm1tL2RhbW9uL3N5c2ZzLmM6ODUzOnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwcyB7XG5tbS9kYW1vbi9zeXNmcy5jLTg1NC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz05NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJlcHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy05NzEtXG5tbS9kYW1vbi9zeXNmcy5jOjk3MjpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyIHtcbm1tL2RhbW9uL3N5c2ZzLmMtOTczLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTk4MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqZGFtb25fc3lzZnNfZmlsdGVyX2FsbG9jKHZvaWQpXG4tLVxubW0vZGFtb24vc3lzZnMuYy05ODQtXG5tbS9kYW1vbi9zeXNmcy5jOjk4NTpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy5jLTk4Ni1cdGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTExNTY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTE2NS1cbm1tL2RhbW9uL3N5c2ZzLmM6MTE2NjpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyB7XG5tbS9kYW1vbi9zeXNmcy5jLTExNjctXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTI3NT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19maWx0ZXJzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTI4NC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTI4NTpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUge1xubW0vZGFtb24vc3lzZnMuYy0xMjg2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xMzkxLVxubW0vZGFtb24vc3lzZnMuYzoxMzkyOnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMge1xubW0vZGFtb24vc3lzZnMuYy0xMzkzLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTE1MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTUyMC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTUyMTpzdHJ1Y3QgZGFtb25fc3lzZnNfYXR0cnMge1xubW0vZGFtb24vc3lzZnMuYy0xNTIyLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTE2MTc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfYXR0cnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNjI2LVxubW0vZGFtb24vc3lzZnMuYzoxNjI3OnN0cnVjdCBkYW1vbl9zeXNmc19vcHNfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy5jLTE2MjgtXHRlbnVtIGRhbW9uX29wc19pZCBvcHNfaWQ7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xNjMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUgZGFtb25fc3lzZnNfb3BzX25hbWVzW10gPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNjQ2LVxubW0vZGFtb24vc3lzZnMuYzoxNjQ3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0IHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTY0OC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xODkzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xOTAyLVxubW0vZGFtb24vc3lzZnMuYzoxOTAzOnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0cyB7XG5tbS9kYW1vbi9zeXNmcy5jLTE5MDQtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjAyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIwMzEtXG5tbS9kYW1vbi9zeXNmcy5jOjIwMzI6c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQge1xubW0vZGFtb24vc3lzZnMuYy0yMDMzLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIwNjY9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfa2RhbW9uZF9ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDczCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIFNjaGVtZSBBcHBsaWNhdGlvbiBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBob3cgREFNT04gc2NoZW1lcyBhcmUgYXBwbGllZCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLiBNeSBzdGFydGluZyBwb2ludCBpcyBgbW0vZGFtb24vY29yZS5jYCwgd2hlcmUgSSBzZWUgdGhlIGZ1bmN0aW9uIGRlZmluZWQuIEZpcnN0IHRoaW5nIEkmIzM5O20gY2hlY2tpbmcgaXMgaWYgaXQmIzM5O3Mgc3RhdGljIOKAkyBhbmQgeWVwLCBsaW5lIDMzNzEgY29uZmlybXMgaXQgaXM6IGBzdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylgLiBUaGF0IHRlbGxzIG1lIGl0cyBzY29wZSBpcyBsaW1pdGVkLCB3aGljaCBjb3VsZCBpbXBhY3QgaG93IGFuZCB3aGVyZSBJIGNhbiBpbnN0cnVtZW50IG9yIG1vZGlmeSBpdHMgYmVoYXZpb3IuCgpOb3csIEkgbmVlZCBhIGJyb2FkZXIgcGljdHVyZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHJlbGF0ZWQgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93OiBob3cgZG9lcyB0aGUgc3lzdGVtICphY3R1YWxseSogYXBwbHkgc2NoZW1lcz8gSSBuZWVkIHRvIGNoZWNrIHRoZSBmb2xsb3dpbmc6IGBrZGFtb25kX2ZuYCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBgZGFtb3NfYXBwbHlfdGFyZ2V0YCwgYW5kIGBkYW1vc19hcHBseV9zY2hlbWVgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGtleSBwbGF5ZXJzLgoKQWxzbywgSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRhcmdldCB2YWxpZGF0aW9uIGJldHRlciwgc28gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIHByb2Nlc3NpbmcgZmxvdyBvZiBhbnkgc3lzZnMgY29tbWFuZHMgcmVsYXRlZCB0byBEQU1PTiBzY2hlbWVzIGFuZCB0YXJnZXQgdmFsaWRhdGlvbi4gIEkmIzM5O2xsIHdhbnQgdG8gY2hlY2sgYGRhbW9uX3N5c2ZzX2NtZF9yZXF1ZXN0YCBvciBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBgbW0vZGFtb24vc3lzZnMuY2AuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyB1c2VyIGNvbW1hbmRzIGZvciBzdGFydGluZywgc3RvcHBpbmcsIGFuZCBjb25maWd1cmluZyBEQU1PTiwgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBvZiB0aG9zZSBjb21tYW5kcy4gVGhpcyBpbmNsdWRlcyBleGFtaW5pbmcgaG93IHRhcmdldCB2YWxpZGF0aW9uIHBsYXlzIGEgcm9sZSBpbiBhY2NlcHRpbmcvcmVqZWN0aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGVfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTI2MzI9c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTI2NzEtXG5tbS9kYW1vbi9zeXNmcy5jOjI2NzI6c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbm1tL2RhbW9uL3N5c2ZzLmMtMjY3My1cdFx0Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzgyCgkJCQkJCQlvdXRwdXQ6IDE2NQoJCQkJCQkJdGhvdWdodHM6IDQ0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBEQU1PTiBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGVudHJ5IHBvaW50czogYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGBrZGFtb25kX2ZuYCwgYGRhbW9zX2FwcGx5X3NjaGVtZWAsIGBkYW1vbl9zdGFydGAsIGFuZCBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLCBhcyB0aGUgcmVhc29uaW5nIHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGUgcGF0Y2ggbW9kaWZpZXMgaXQuCgpOb3csIGxldCYjMzk7cyBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgaW4gcGxhY2UuIFRoZSBjb3JlIERBTU9OIGZyYW1ld29yayAoYERBTU9OYCksIHRoZSBzeXNmcyBpbnRlcmZhY2UgKGBEQU1PTl9TWVNGU2ApLCBhbmQgYm90aCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMgKGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmApIGFyZSBhbGwgbmVjZXNzYXJ5LiBHb29kLCB0aG9zZSBhcmUgc3RhbmRhcmQgZm9yIGEgREFNT04gc2V0dXAsIHNvIHRoYXQgc2VlbXMgcmVhc29uYWJsZS4KClRoZSByZWFzb25pbmcgaGlnaGxpZ2h0cyB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgc2NoZW1lIHF1b3RhIHRyYWNraW5nIHdpdGhpbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCB3aGVuIGEgdGFyZ2V0IGJlY29tZXMgaW52YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIHdpdGhpbiB0aGUgTU0gc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIHdoaWNoIGlzIGEgY29tbW9uIGZ1enogdGFyZ2V0LiBUaGlzIGlzIGFsbCBnb29kLgoKVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBsaXN0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYGtkYW1vbmRfZm5gLCBgZGFtb3NfYXBwbHlfc2NoZW1lYCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBhbmQgYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIGZ1bmN0aW9ucywgZXNwZWNpYWxseSB0aGUgZmlyc3QgdHdvLCBzaW5jZSB0aGV5IGFyZSBpbiBgbW0vZGFtb24vY29yZS5jYC4gVGhlc2UgYXJlIGFsbCBmYWlybHkgc3BlY2lmaWMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCBmb3IgcmVkdWNpbmcgbm9pc2UuCgpPa2F5LCBsZXQmIzM5O3MgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgb2YgY29uZmlncyBhbmQgc3ltYm9scyB0byBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm90aGluZyBvYnZpb3VzbHkgd3Jvbmcgb3Igb3Zlcmx5IGJyb2FkLiBUaGUgY29uZmlncyBzZWVtIGNvcnJlY3QsIGFuZCBJJiMzOTtsbCBjb25maXJtIHRoZSBzeW1ib2wgbmFtZXMgYXJlIHdoYXQgSSBleHBlY3QgaW4gdGhlIERBTU9OIGNvbnRleHQuICBJJiMzOTtsbCB2ZXJpZnkgdGhhdCB0aGVzZSBzeW1ib2xzIGFyZSBub3Qgb3Zlcmx5IGdlbmVyaWMgb3IgdXNlZCBpbiBvdGhlciBzdWJzeXN0ZW1zIHRvIGF2b2lkIHVubmVjZXNzYXJ5IG5vaXNlIGFuZCBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnQuCgpGaW5hbGx5LCBhc3N1bWluZyBhbGwgbG9va3MgZ29vZCwgSSYjMzk7bGwgcGFzcyB0aGlzIGFzc2Vzc21lbnQgYWxvbmcgdG8gdGhlIGZ1enppbmcgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZGFtb25kX2ZuJiMzNDssCiAgICAmIzM0O2RhbW9zX2FwcGx5X3NjaGVtZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX2hhbmRsZV9jbWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMga2RhbW9uZF9hcHBseV9zY2hlbWVzKCkgaW4gREFNT04gY29yZSAobW0vZGFtb24vY29yZS5jKSB0byByZXNldCB0aGUgc2NoZW1lIHF1b3RhIGNoYXJnZSB0YXJnZXQgYW5kIGFkZHJlc3Mgd2hlbiBhIHRhcmdldCBpcyBtYXJrZWQgaW52YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIGFjY2Vzc2libGUgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2RhbW9uZF9mbiYjMzQ7LAogICAgJiMzNDtkYW1vc19hcHBseV9zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19oYW5kbGVfY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGluIERBTU9OIGNvcmUgKG1tL2RhbW9uL2NvcmUuYykgdG8gcmVzZXQgdGhlIHNjaGVtZSBxdW90YSBjaGFyZ2UgdGFyZ2V0IGFuZCBhZGRyZXNzIHdoZW4gYSB0YXJnZXQgaXMgbWFya2VkIGludmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpYCBpbiBgbW0vZGFtb24vY29yZS5jYCB0byByZXNldCBgcy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb21gIHRvIGBOVUxMYCBhbmQgYHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbWAgdG8gYDBgIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgdGFyZ2V0IChgdGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlYCkuXG5cblRoaXMgY2hhbmdlIGNsZWFycyBzdGFsZSB0YXJnZXQgcmVmZXJlbmNlcyBpbiBEQU1PTiBzY2hlbWUgcXVvdGEgdHJhY2tpbmcuIEl0IGRvZXMgbm90IGFsbG9jYXRlIG5ldyBtZW1vcnksIGFjY2VzcyB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYnVmZmVycywgYWx0ZXIgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBoYW5kbGluZywgb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbnkgcG90ZW50aWFsIHN0YWxlIHBvaW50ZXIgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGJ5IHN0YW5kYXJkIEtBU0FOLCB3aGVyZWFzIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE2OjM1OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDY0NWNiMzY3MDE5YWUuLjA2Y2YyYWI3ZTk3ZDcgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTMzOTMsOCAmIzQzOzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpCiAJbWF4X3JlZ2lvbl9zeiA9IGRhbW9uX3JlZ2lvbl9zel9saW1pdChjKTsKIAltdXRleF9sb2NrKCZhbXA7Yy0mZ3Q7d2Fsa19jb250cm9sX2xvY2spOwogCWRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7Ci0JCWlmIChjLSZndDtvcHMudGFyZ2V0X3ZhbGlkICZhbXA7JmFtcDsgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkKJiM0MzsJCWlmIChjLSZndDtvcHMudGFyZ2V0X3ZhbGlkICZhbXA7JmFtcDsgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkgewomIzQzOwkJCWRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7CiYjNDM7CQkJCWlmIChzLSZndDtxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdCkKJiM0MzsJCQkJCWNvbnRpbnVlOwomIzQzOwkJCQlzLSZndDtxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMOwomIzQzOwkJCQlzLSZndDtxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDsKJiM0MzsJCQl9CiAJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJZGFtb3NfYXBwbHlfdGFyZ2V0KGMsIHQsIG1heF9yZWdpb25fc3opOwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgREFNT04gQ29yZSBDb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBpbiB0aGUgY29udGV4dCBvZiB0aGUgREFNT04gY29yZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIE15IGluaXRpYWwgbW92ZSBpcyB0byB6ZXJvIGluIG9uIGBtbS9kYW1vbi9jb3JlLmNgLiBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzMzkzLiBJ4oCZbGwgbGV2ZXJhZ2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIOKAkyB3aGF0ZXZlciYjMzk7cyBxdWlja2VzdCDigJMgdG8gZ2V0IHRoZSBjb250ZXh0IHJpZ2h0IHRoZXJlLiBJIG5lZWQgdGhhdCBpbW1lZGlhdGUgc3Vycm91bmRpbmcgY29kZSBmb3IgYSBwcm9wZXIgYXNzZXNzbWVudC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzgwOlx0XHRcdFx0Y29udGludWU7XG4zMzgxOlx0XG4zMzgyOlx0XHRcdGlmICghcy1cdTAwM2V3bWFya3MuYWN0aXZhdGVkKVxuMzM4MzpcdFx0XHRcdGNvbnRpbnVlO1xuMzM4NDpcdFxuMzM4NTpcdFx0XHRoYXNfc2NoZW1lc190b19hcHBseSA9IHRydWU7XG4zMzg2Olx0XG4zMzg3Olx0XHRcdGRhbW9zX2FkanVzdF9xdW90YShjLCBzKTtcbjMzODg6XHRcdH1cbjMzODk6XHRcbjMzOTA6XHRcdGlmICghaGFzX3NjaGVtZXNfdG9fYXBwbHkpXG4zMzkxOlx0XHRcdHJldHVybjtcbjMzOTI6XHRcbjMzOTM6XHRcdG1heF9yZWdpb25fc3ogPSBkYW1vbl9yZWdpb25fc3pfbGltaXQoYyk7XG4zMzk0Olx0XHRtdXRleF9sb2NrKFx1MDAyNmMtXHUwMDNld2Fsa19jb250cm9sX2xvY2spO1xuMzM5NTpcdFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHQsIGMpIHtcbjMzOTY6XHRcdFx0aWYgKGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCBcdTAwMjZcdTAwMjYgYy1cdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlKSB7XG4zMzk3Olx0XHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbjMzOTg6XHRcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxuMzM5OTpcdFx0XHRcdFx0XHRjb250aW51ZTtcbjM0MDA6XHRcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbjM0MDE6XHRcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG4zNDAyOlx0XHRcdFx0fVxuMzQwMzpcdFx0XHRcdGNvbnRpbnVlO1xuMzQwNDpcdFx0XHR9XG4zNDA1Olx0XHRcdGRhbW9zX2FwcGx5X3RhcmdldChjLCB0LCBtYXhfcmVnaW9uX3N6KTtcbjM0MDY6XHRcdH1cbjM0MDc6XHRcbjM0MDg6XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XG4zNDA5Olx0XHRcdGlmICh0aW1lX2JlZm9yZShjLVx1MDAzZXBhc3NlZF9zYW1wbGVfaW50ZXJ2YWxzLCBzLVx1MDAzZW5leHRfYXBwbHlfc2lzKSlcbjM0MTA6XHRcdFx0XHRjb250aW51ZTtcbjM0MTE6XHRcdFx0ZGFtb3Nfd2Fsa19jb21wbGV0ZShjLCBzKTtcbjM0MTI6XHRcdFx0ZGFtb3Nfc2V0X25leHRfYXBwbHlfc2lzKHMsIGMpO1xuMzQxMzpcdFx0XHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IE5VTEw7XG4zNDE0Olx0XHRcdGRhbW9zX3RyYWNlX3N0YXQoYywgcyk7XG4zNDE1Olx0XHR9XG4zNDE2Olx0XHRtdXRleF91bmxvY2soXHUwMDI2Yy1cdTAwM2V3YWxrX2NvbnRyb2xfbG9jayk7XG4zNDE3Olx0fVxuMzQxODpcdFxuMzQxOTpcdCNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG4zNDIwOlx0c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X21lcmdlX3R3b19yZWdpb25zKFxuMzQyMTpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxuMzQyMjpcdHtcbjM0MjM6XHRcdC8qIGRhbW9uX21lcmdlX3R3b19yZWdpb25zKCkgbWF5IGNyZWF0ZWQgaW5jb3JyZWN0IGxlZnQgcmVnaW9uICovXG4zNDI0Olx0XHRXQVJOX09OQ0UobC1cdTAwM2Vhci5zdGFydCBcdTAwM2U9IGwtXHUwMDNlYXIuZW5kLCBcJiMzNDtsOiAlbHUtJWx1LCByOiAlbHUtJWx1XFxuXCYjMzQ7LFxuMzQyNTpcdFx0XHRcdGwtXHUwMDNlYXIuc3RhcnQsIGwtXHUwMDNlYXIuZW5kLCByLVx1MDAzZWFyLnN0YXJ0LCByLVx1MDAzZWFyLmVuZCk7XG4zNDI2Olx0fVxuMzQyNzpcdCNlbHNlXG4zNDI4Olx0c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X21lcmdlX3R3b19yZWdpb25zKFxuMzQyOTpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBVc2FnZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGxpa2VseSBkZWFscyB3aXRoIHNvbWUgY2hhcmdpbmcgZnVuY3Rpb25hbGl0eS4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBXaGVyZSBkb2VzIHRoaXMgYGNoYXJnZV90YXJnZXRfZnJvbWAgZnVuY3Rpb24sIHZhcmlhYmxlLCBvciB3aGF0ZXZlciBpdCBpcywgYWN0dWFsbHkgY29tZSBpbnRvIHBsYXk/IE15IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAuIEkgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5ICphbGwqIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGViYXNlIHdoZXJlIGBjaGFyZ2VfdGFyZ2V0X2Zyb21gIGlzIHJlZmVyZW5jZWQuIEtub3dpbmcgaXRzIHVzYWdlIGNvbnRleHQgaXMgY3JpdGljYWwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBhY3R1YWwgY29kZSBtb2RpZmljYXRpb24uIFRoaXMgd2lsbCBzaG93IG1lIHRoZSB1cHN0cmVhbSBjaGFuZ2VzIGFuZCBkZXRlcm1pbmUgaWYgYW55dGhpbmcgZG93bnN0cmVhbSByZXF1aXJlcyBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoYXJnZV90YXJnZXRfZnJvbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2RhbW9uLmg9Mjc2PXN0cnVjdCBkYW1vc19xdW90YSB7XG4tLVxuaW5jbHVkZS9saW51eC9kYW1vbi5oLTMwMC1cdHVuc2lnbmVkIGxvbmcgY2hhcmdlZF9mcm9tO1xuaW5jbHVkZS9saW51eC9kYW1vbi5oOjMwMTpcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmNoYXJnZV90YXJnZXRfZnJvbTtcbmluY2x1ZGUvbGludXgvZGFtb24uaC0zMDItXHR1bnNpZ25lZCBsb25nIGNoYXJnZV9hZGRyX2Zyb207XG4tLVxubW0vZGFtb24vY29yZS5jPTczMj1zdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhICpkYW1vc19xdW90YV9pbml0KHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXG4tLVxubW0vZGFtb24vY29yZS5jLTczOC1cdHF1b3RhLVx1MDAzZWNoYXJnZWRfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmM6NzM5Olx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy03NDAtXHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTY5Nj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzIyLVx0XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBkc3QpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzIzOlx0XHRcdFx0aWYgKHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID09IGRzdF90YXJnZXQpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzI0Olx0XHRcdFx0XHRzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG5tbS9kYW1vbi9jb3JlLmMtMTcyNS1cdFx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjQ0OT1zdGF0aWMgYm9vbCBkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI0NTctXHQvKiBTa2lwIHByZXZpb3VzbHkgY2hhcmdlZCByZWdpb25zICovXG5tbS9kYW1vbi9jb3JlLmM6MjQ1ODpcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pIHtcbm1tL2RhbW9uL2NvcmUuYzoyNDU5Olx0XHRpZiAodCAhPSBxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pXG5tbS9kYW1vbi9jb3JlLmMtMjQ2MC1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQ4My1cdGlmIChyID09IGRhbW9uX2xhc3RfcmVnaW9uKHQpKSB7XG5tbS9kYW1vbi9jb3JlLmM6MjQ4NDpcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy0yNDg1LVx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjY4NT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc0NC1cdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzQ1Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XG5tbS9kYW1vbi9jb3JlLmMtMjc0Ni1cdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTMzNzE9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMzOTctXHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbm1tL2RhbW9uL2NvcmUuYzozMzk4Olx0XHRcdFx0aWYgKHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tICE9IHQpXG5tbS9kYW1vbi9jb3JlLmMtMzM5OS1cdFx0XHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi9jb3JlLmM6MzQwMDpcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy0zNDAxLVx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMzNAoJCQkJCQkJb3V0cHV0OiAxNjgKCQkJCQkJCXRob3VnaHRzOiA2MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIERBTU9OIFF1b3RhIFRyYWNraW5nIEZpeCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgdGhlIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCBEQU1PTiB0YXJnZXRzLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCBpZiBhIHRhcmdldCBiZWNvbWVzIGludmFsaWTigJRgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZWDigJRhbmQgYHMtJmd0O3F1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgd2FzIHByZXZpb3VzbHkgcG9pbnRpbmcgdG8gaXQsIHdlJiMzOTt2ZSBnb3QgYSBwb3RlbnRpYWwgaXNzdWUuIFRoYXQgcG9pbnRlciwgaWYgbm90IGNsZWFyZWQsIGNvdWxkIGxlYWQgdG8gYSBzdGFsZSByZWZlcmVuY2UsIHNraXBwZWQgdGFyZ2V0cyBpbiBzdWJzZXF1ZW50IHdhbGtzIGR1ZSB0byBhIG5vbi1OVUxMIGNvbXBhcmlzb24sIG9yLCB3b3JzdC1jYXNlLCBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIGlmIHRoZSBpbnZhbGlkIHRhcmdldCBpcyBkZWFsbG9jYXRlZC4KClRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiB3aGVuIGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgLCB3ZSByZXNldCBgcy0mZ3Q7cXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTGAgYW5kIGBzLSZndDtxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMGAuIFRoaXMgY2xlYW5zIHVwIHRoZSBxdW90YSB0cmFja2luZyBzdGF0ZSBmb3IgdGhhdCBpbnZhbGlkIHRhcmdldC4gSSYjMzk7dmUgY2hlY2tlZCBmb3IgY29tbW9uIHBpdGZhbGxzIGFuZCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuCgpMb29raW5nIHNwZWNpZmljYWxseSBhdCBLTVNBTiBjb25jZXJucywgSSYjMzk7dmUgY29uZmlybWVkOgoKKiAgIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgaW50cm9kdWNlZC4KKiAgIE5vIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgYHMtJmd0O3F1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgZmllbGQgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTC4KKiAgIFRoZSBjb2RlIHNldHMgdmFyaWFibGVzIHRvIGV4cGxpY2l0IGNvbnN0YW50cyAoTlVMTCBhbmQgMCksIGVsaW1pbmF0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvbmNlcm5zLgoqICAgVGhpcyBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgYSBsb2dpYyBidWcsIGEgc3RhbGUgcG9pbnRlciBpc3N1ZSwgaW4gdGhlIERBTU9OIHF1b3RhIHRyYWNraW5nLgoqICAgS0FTQU4gc2hvdWxkIGNhdGNoIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMuCiogICBUaGVyZSYjMzk7cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLgoKV2UgY2FuIHJ1bGUgb3V0IGFueSBLTVNBTi1yZWxhdGVkIGlzc3Vlcy4gVGhlIHN0cnVjdHVyZSBpcyBOT1Qgc2VudCB0byB1c2VyIHNwYWNlLiBUaGVyZSYjMzk7cyBubyBjb25kaXRpb25hbCBsb2dpYyBvciBjb3B5IG9wZXJhdGlvbiBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIENvbXBsZXggc3RydWN0dXJlcyBhcmUgTk9UIGFsbG9jYXRlZCwgYW5kIHRoZXJlIGFyZSBOTyBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMuIFRoZSBsb2dpYyBpcyBzaW1wbGUgYW5kIGZpeGVzIHRoZSBzdGFsZSBwb2ludGVyIGlzc3VlLgoKSW4gc2hvcnQ6IFRoZSBwYXRjaCBjb3JyZWN0bHkgaGFuZGxlcyBzdGFsZSByZWZlcmVuY2VzIHRvIGludmFsaWQgdGFyZ2V0cyBpbiBEQU1PTiYjMzk7cyBxdW90YSB0cmFja2luZyBieSByZXNldHRpbmcgdGhlIHRyYWNraW5nIHN0YXRlLiBLQVNBTiBpcyB0aGUgcmVsZXZhbnQgdG9vbCBoZXJlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4gVGhpcyBpcyBhIGxvZ2ljIGZpeCwgbm90IGEgbWVtb3J5IHNhZmV0eSBpc3N1ZSByZXF1aXJpbmcgS01TQU4uIFRpbWUgdG8gc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2RhbW9uZF9hcHBseV9zY2hlbWVzKClgIGluIGBtbS9kYW1vbi9jb3JlLmNgIHRvIHJlc2V0IGBzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgdG8gYE5VTExgIGFuZCBgcy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tYCB0byBgMGAgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB0YXJnZXQgKGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgKS5cblxuVGhpcyBjaGFuZ2UgY2xlYXJzIHN0YWxlIHRhcmdldCByZWZlcmVuY2VzIGluIERBTU9OIHNjaGVtZSBxdW90YSB0cmFja2luZy4gSXQgZG9lcyBub3QgYWxsb2NhdGUgbmV3IG1lbW9yeSwgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBidWZmZXJzLCBhbHRlciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGhhbmRsaW5nLCBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFueSBwb3RlbnRpYWwgc3RhbGUgcG9pbnRlciBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgS0FTQU4sIHdoZXJlYXMgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2RhbW9uZF9hcHBseV9zY2hlbWVzKClgIGluIGBtbS9kYW1vbi9jb3JlLmNgIHRvIHJlc2V0IGBzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgdG8gYE5VTExgIGFuZCBgcy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tYCB0byBgMGAgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB0YXJnZXQgKGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgKS5cblxuVGhpcyBjaGFuZ2UgY2xlYXJzIHN0YWxlIHRhcmdldCByZWZlcmVuY2VzIGluIERBTU9OIHNjaGVtZSBxdW90YSB0cmFja2luZy4gSXQgZG9lcyBub3QgYWxsb2NhdGUgbmV3IG1lbW9yeSwgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBidWZmZXJzLCBhbHRlciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGhhbmRsaW5nLCBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFueSBwb3RlbnRpYWwgc3RhbGUgcG9pbnRlciBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgS0FTQU4sIHdoZXJlYXMgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM1OjU2LjcwNTg5MjA4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MjY4Njg1MDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2RhbW9uZF9mblwiLFxuICAgIFwiZGFtb3NfYXBwbHlfc2NoZW1lXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fY29tbWl0X2N0eFwiLFxuICAgIFwiZGFtb25fc3lzZnNfaGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpYCBpbiBgbW0vZGFtb24vY29yZS5jYCB0byByZXNldCBgcy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tYCB0byBgTlVMTGAgYW5kIGBzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tYCB0byBgMGAgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB0YXJnZXQgKGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgKS5cXG5cXG5UaGlzIGNoYW5nZSBjbGVhcnMgc3RhbGUgdGFyZ2V0IHJlZmVyZW5jZXMgaW4gREFNT04gc2NoZW1lIHF1b3RhIHRyYWNraW5nLiBJdCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgbWVtb3J5LCBhY2Nlc3MgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGJ1ZmZlcnMsIGFsdGVyIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaGFuZGxpbmcsIG9yIGNvcHkgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gQW55IHBvdGVudGlhbCBzdGFsZSBwb2ludGVyIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBLQVNBTiwgd2hlcmVhcyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBrZGFtb25kX2FwcGx5X3NjaGVtZXMoKSBpbiBEQU1PTiBjb3JlIChtbS9kYW1vbi9jb3JlLmMpIHRvIHJlc2V0IHRoZSBzY2hlbWUgcXVvdGEgY2hhcmdlIHRhcmdldCBhbmQgYWRkcmVzcyB3aGVuIGEgdGFyZ2V0IGlzIG1hcmtlZCBpbnZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYWNjZXNzaWJsZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzU6NTYuNzA1OTAzOTM5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMyNzAzOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAxNjozNTo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcXG5pbmRleCA2NDVjYjM2NzAxOWFlLi4wNmNmMmFiN2U5N2Q3IDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xcbkBAIC0zMzkzLDggKzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuIFxcdG1heF9yZWdpb25fc3ogPSBkYW1vbl9yZWdpb25fc3pfbGltaXQoYyk7XFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmMtXFx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcXG4gXFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHQsIGMpIHtcXG4tXFx0XFx0aWYgKGMtXFx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXFx1MDAyNlxcdTAwMjYgYy1cXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSlcXG4rXFx0XFx0aWYgKGMtXFx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXFx1MDAyNlxcdTAwMjYgYy1cXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkge1xcbitcXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xcbitcXHRcXHRcXHRcXHRpZiAocy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tICE9IHQpXFxuK1xcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbitcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM1OjU4LjIzOTIyOTU3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDYyNDYzMjU1MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrZGFtb25kX2ZuXCIsXG4gICAgXCJkYW1vc19hcHBseV9zY2hlbWVcIixcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19oYW5kbGVfY21kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMga2RhbW9uZF9hcHBseV9zY2hlbWVzKCkgaW4gREFNT04gY29yZSAobW0vZGFtb24vY29yZS5jKSB0byByZXNldCB0aGUgc2NoZW1lIHF1b3RhIGNoYXJnZSB0YXJnZXQgYW5kIGFkZHJlc3Mgd2hlbiBhIHRhcmdldCBpcyBtYXJrZWQgaW52YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIGFjY2Vzc2libGUgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE2OjM1OjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA2NDVjYjM2NzAxOWFlLi4wNmNmMmFiN2U5N2Q3IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0zMzkzLDggKzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4gXHRtYXhfcmVnaW9uX3N6ID0gZGFtb25fcmVnaW9uX3N6X2xpbWl0KGMpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZjLVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbiBcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XG4tXHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSlcbitcdFx0aWYgKGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCBcdTAwMjZcdTAwMjYgYy1cdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlKSB7XG4rXHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbitcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxuK1x0XHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbitcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG4rXHRcdFx0fVxuIFx0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdGRhbW9zX2FwcGx5X3RhcmdldChjLCB0LCBtYXhfcmVnaW9uX3N6KTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM1OjU4LjIzOTIzMDgyOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3MTYxMjIwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIERBTU9OIENvcmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBhcm91bmQgbGluZSAzMzkzIGluIGBtbS9kYW1vbi9jb3JlLmNgLiBMZXQncyBzdGFydCBieSBlaXRoZXIgbGV2ZXJhZ2luZyBgZ3JlcHBlcmAgKGJlY2F1c2UgSSBrbm93IGl0J3MgdGhlcmUgYW5kIGVmZmljaWVudCkgb3IsIGlmIHRoYXQgaXNuJ3QgcmVhZGlseSBhdmFpbGFibGUsIEknbGwgZ28gd2l0aCB0aGUgbW9yZSBzdHJhaWdodGZvcndhcmQgYHJlYWQtZmlsZWAgdG8gZ3JhYiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSBoZXJlLlxuXG5PbmNlIEkgaGF2ZSB0aGUgcmVsZXZhbnQgY29kZSBpbiBmcm9udCBvZiBtZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBgS2NvbmZpZ2Agb3B0aW9ucyB0aGF0IGluZmx1ZW5jZSBEQU1PTidzIGJlaGF2aW9yLiBJIGNhbid0IGJlIHN1cmUgb2YgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlcyB3aXRob3V0IGNvbnNpZGVyaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIEkgd2lsbCBuZWVkIHRvIHZlcmlmeSBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBEQU1PTiBpcyBjb25maWd1cmVkLiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIG9yIGRlYnVnZ2luZyBhbnkgaXNzdWVzLiBJIG5lZWQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MywiT3V0cHV0VG9rZW5zIjo2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MDcuOTU1MzU2MjAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMzgwOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjMzODE6XFx0XFxuMzM4MjpcXHRcXHRcXHRpZiAoIXMtXFx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXFxuMzM4MzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zMzg0OlxcdFxcbjMzODU6XFx0XFx0XFx0aGFzX3NjaGVtZXNfdG9fYXBwbHkgPSB0cnVlO1xcbjMzODY6XFx0XFxuMzM4NzpcXHRcXHRcXHRkYW1vc19hZGp1c3RfcXVvdGEoYywgcyk7XFxuMzM4ODpcXHRcXHR9XFxuMzM4OTpcXHRcXG4zMzkwOlxcdFxcdGlmICghaGFzX3NjaGVtZXNfdG9fYXBwbHkpXFxuMzM5MTpcXHRcXHRcXHRyZXR1cm47XFxuMzM5MjpcXHRcXG4zMzkzOlxcdFxcdG1heF9yZWdpb25fc3ogPSBkYW1vbl9yZWdpb25fc3pfbGltaXQoYyk7XFxuMzM5NDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjLVxcdTAwM2V3YWxrX2NvbnRyb2xfbG9jayk7XFxuMzM5NTpcXHRcXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodCwgYykge1xcbjMzOTY6XFx0XFx0XFx0aWYgKGMtXFx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXFx1MDAyNlxcdTAwMjYgYy1cXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkge1xcbjMzOTc6XFx0XFx0XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcXG4zMzk4OlxcdFxcdFxcdFxcdFxcdGlmIChzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdClcXG4zMzk5OlxcdFxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM0MDA6XFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG4zNDAxOlxcdFxcdFxcdFxcdFxcdHMtXFx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb20gPSAwO1xcbjM0MDI6XFx0XFx0XFx0XFx0fVxcbjM0MDM6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzQwNDpcXHRcXHRcXHR9XFxuMzQwNTpcXHRcXHRcXHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XFxuMzQwNjpcXHRcXHR9XFxuMzQwNzpcXHRcXG4zNDA4OlxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XFxuMzQwOTpcXHRcXHRcXHRpZiAodGltZV9iZWZvcmUoYy1cXHUwMDNlcGFzc2VkX3NhbXBsZV9pbnRlcnZhbHMsIHMtXFx1MDAzZW5leHRfYXBwbHlfc2lzKSlcXG4zNDEwOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM0MTE6XFx0XFx0XFx0ZGFtb3Nfd2Fsa19jb21wbGV0ZShjLCBzKTtcXG4zNDEyOlxcdFxcdFxcdGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzLCBjKTtcXG4zNDEzOlxcdFxcdFxcdHMtXFx1MDAzZWxhc3RfYXBwbGllZCA9IE5VTEw7XFxuMzQxNDpcXHRcXHRcXHRkYW1vc190cmFjZV9zdGF0KGMsIHMpO1xcbjM0MTU6XFx0XFx0fVxcbjM0MTY6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjLVxcdTAwM2V3YWxrX2NvbnRyb2xfbG9jayk7XFxuMzQxNzpcXHR9XFxuMzQxODpcXHRcXG4zNDE5OlxcdCNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXFxuMzQyMDpcXHRzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbWVyZ2VfdHdvX3JlZ2lvbnMoXFxuMzQyMTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxcbjM0MjI6XFx0e1xcbjM0MjM6XFx0XFx0LyogZGFtb25fbWVyZ2VfdHdvX3JlZ2lvbnMoKSBtYXkgY3JlYXRlZCBpbmNvcnJlY3QgbGVmdCByZWdpb24gKi9cXG4zNDI0OlxcdFxcdFdBUk5fT05DRShsLVxcdTAwM2Vhci5zdGFydCBcXHUwMDNlPSBsLVxcdTAwM2Vhci5lbmQsIFxcXCJsOiAlbHUtJWx1LCByOiAlbHUtJWx1XFxcXG5cXFwiLFxcbjM0MjU6XFx0XFx0XFx0XFx0bC1cXHUwMDNlYXIuc3RhcnQsIGwtXFx1MDAzZWFyLmVuZCwgci1cXHUwMDNlYXIuc3RhcnQsIHItXFx1MDAzZWFyLmVuZCk7XFxuMzQyNjpcXHR9XFxuMzQyNzpcXHQjZWxzZVxcbjM0Mjg6XFx0c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X21lcmdlX3R3b19yZWdpb25zKFxcbjM0Mjk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MDcuOTU1NTU5NjczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNTEzMjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjowOC44ODA3MDE4NjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTAyMjcxNjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipEQU1PTiBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhlIHJvYWQgd2l0aCB0aGlzLCBJIG5lZWQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgREFNT04ncyBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUga2VybmVsIOKAkyBzcGVjaWZpY2FsbHksIGhvdyBEQU1PTiBpcyBlbmFibGVkIGFuZCB1c2VkLiBUaGlzIG1lYW5zIEknbSBsb29raW5nIGZvciB0aGUgY29uZGl0aW9uYWwgbG9naWM7IHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzLCBjb21waWxhdGlvbiBmbGFncywgb3IgaGFyZHdhcmUgc2V0dXBzIG5lZWQgdG8gYmUgaW4gcGxhY2UgZm9yIERBTU9OIHRvIGV2ZW4gYmUgYXZhaWxhYmxlP1xuXG5CZXlvbmQgdGhlIGJhc2ljIGVuYWJsZW1lbnQsIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gZXhwb3NlcyBjb250cm9sIG92ZXIgREFNT04uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3lzZnMgZW50cmllcyBhcmUgYXZhaWxhYmxlLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIERBTU9OIGZ1bmN0aW9uYWxpdHkuIEZ1cnRoZXJtb3JlLCBJIG5lZWQgdG8ga25vdyBob3cgdmlydHVhbCBhZGRyZXNzZXMgKGB2YWRkcmApIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgKGBwYWRkcmApIGFyZSBtYW5hZ2VkIGFuZCBhY2Nlc3NlZCB3aXRoaW4gdGhlIERBTU9OIGNvbnRleHQuIFRoaXMgdW5kZXJzdGFuZGluZyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgbWVjaGFuaWNzIG9mIGhvdyBtZW1vcnkgcmVnaW9ucyBhcmUgYmVpbmcgb2JzZXJ2ZWQgYW5kIG1hbmFnZWQuIFVsdGltYXRlbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiBpcyBhY3R1YWxseSAqdXNlZCogaW4gYSBwcmFjdGljYWwgc2Vuc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjoxMS43ODI5NzU3NTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRtZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgREFNT05cXG4gICA2OlxcdFxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxcbiAgIDk6XFx0XFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcXG4gIDEwOlxcdFxcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcXG4gIDEzOlxcdFxcdCAgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxcbiAgMTY6XFx0XFx0Ym9vbCBcXFwiQ2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIERBTU9OXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBhZGRpdGlvbmFsIERBTU9OIGRlYnVnZ2luZy1wdXJwb3NlIHNhbml0eSBjaGVja3MgaW5cXG4gIDIwOlxcdFxcdCAgREFNT04gY29kZS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZmluZGluZyBidWdzLCBidXQgaW1wb3NlXFxuICAyMTpcXHRcXHQgIGFkZGl0aW9uYWwgb3ZlcmhlYWQuICBUaGlzIGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byBiZSBlbmFibGVkIG9uXFxuICAyMjpcXHRcXHQgIG9ubHkgZGV2ZWxvcG1lbnQgYW5kIHRlc3Qgc2V0dXBzLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyNTpcXHRcXG4gIDI2OlxcdGNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxuICAyNzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgMjg6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBLVU5JVD15XFxuICAyOTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDM0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIERBTU9OX1ZBRERSXFxuICAzOTpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNDE6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA0MjpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDQ1OlxcdFxcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgREFNT05fUEFERFJcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNTA6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA1MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDU0OlxcdFxcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuICA1NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDU5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuICA2MDpcXHRcXHRoZWxwXFxuICA2MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiB2aXJ0dWFsIGFkZHJlc3NlcyBvcGVyYXRpb25zIEt1bml0IHRlc3Qgc3VpdGUuXFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXFxuICA2NDpcXHRcXHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA2NzpcXHRcXG4gIDY4OlxcdGNvbmZpZyBEQU1PTl9TWVNGU1xcbiAgNjk6XFx0XFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbiAgNzA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbiAgNzE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcXG4gIDc0OlxcdFxcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXFxuICA3NTpcXHRcXG4gIDc2OlxcdGNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxuICA3NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbiAgNzk6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDgwOlxcdFxcdGhlbHBcXG4gIDgxOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxcbiAgODI6XFx0XFxuICA4MzpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxcbiAgODQ6XFx0XFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgODc6XFx0XFxuICA4ODpcXHRjb25maWcgREFNT05fUkVDTEFJTVxcbiAgODk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuICA5MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCByZWNsYW1hdGlvbiBzdWJzeXN0ZW0uICBJdCBmaW5kcyBwYWdlc1xcbiAgOTM6XFx0XFx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXFxuICA5NDpcXHRcXHQgIHRob3NlLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHQgIFRoaXMgaXMgc3VnZ2VzdGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9hY3RpdmUgYW5kIGxpZ2h0d2VpZ2h0XFxuICA5NzpcXHRcXHQgIHJlY2xhbWF0aW9uIHVuZGVyIGxpZ2h0IG1lbW9yeSBwcmVzc3VyZSwgd2hpbGUgdGhlIHRyYWRpdGlvbmFsIHBhZ2VcXG4gIDk4OlxcdFxcdCAgc2Nhbm5pbmctYmFzZWQgcmVjbGFtYXRpb24gaXMgdXNlZCBmb3IgaGVhdnkgcHJlc3N1cmUuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjoxMS43ODMwNTM3ODlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0OTk4OTM2NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIERBTU9OJ3MgQ29yZTogRXhhbWluaW5nIGtkYW1vbmRcXF9hcHBseVxcX3NjaGVtZXMgYW5kIENoYXJnZSBUYXJnZXQqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgZ3V0cyBvZiBEQU1PTi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGR5bmFtaWNzIGJldHdlZW4gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIHRoZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBmdW5jdGlvbiwgYW5kIGhvdyB0aGV5IHJlbGF0ZSBhY3Jvc3MgdGhlIERBTU9OIGNvZGViYXNlLlxuXG5GaXJzdCB1cCwgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICpleGFjdGx5KiB3aGF0IHRoaXMgcm91dGluZSBkb2VzIGF0IGEgZnVuY3Rpb25hbCBsZXZlbC4gSSdtIGFzc3VtaW5nIGl0J3MgdGhlIGNvcmUgZW5naW5lIHRoYXQgcHV0cyB0aGUgbW9uaXRvcmluZyBhbmQgYWRhcHRhdGlvbiBsb2dpYyBpbnRvIGFjdGlvbiwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpY3MuIFdoYXQgc2NoZW1lcyBhcmUgYmVpbmcgYXBwbGllZD8gSG93IGFyZSB0aGV5IGNob3Nlbj8gSXMgaXQgYSBzaW5nbGUgcGFzcywgb3IgZG9lcyBpdCBpdGVyYXRlPyBXaGF0IGFyZSB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZXNlIHNjaGVtZXMsIGFuZCBob3cgY29tcGxleCBpcyB0aGUgbG9naWMgZW1iZWRkZWQgd2l0aGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGl0c2VsZj8gQSBkZWVwIGRpdmUgaW50byB0aGUgY29kZSBpcyByZXF1aXJlZCwgYW5kIEkgc3VzcGVjdCBhIGNsb3NlIGxvb2sgYXQgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzLCBwYXJ0aWN1bGFybHkgdGhlIHNjaGVtZSBkZWZpbml0aW9ucywgd2lsbCBiZSBjcnVjaWFsLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgZ3JhcGggYW5kIGxvb2sgYXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIERBTU9OIGV2ZW50IGxvb3AuXG5cblRoZW4sIHRoZXJlJ3MgYGNoYXJnZV90YXJnZXRfZnJvbWAuIFRoZSBuYW1pbmcgaGludHMgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIFwiY2hhcmdpbmdcIiBhIHRhcmdldCwgYnV0IHRoZSBzcGVjaWZpY3MgYXJlIHdoZXJlIG15IGF0dGVudGlvbiBuZWVkcyB0byBnby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25zdGl0dXRlcyBhIFwiY2hhcmdlXCIuIElzIHRoaXMgcmVsYXRlZCB0byBtZW1vcnkgcHJlc3N1cmUsIENQVSB1c2FnZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBgZnJvbWAgcGFydCBzdWdnZXN0cyB0aGUgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0eSBpcyB0byBkZXJpdmUgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoaXMgXCJjaGFyZ2VcIi4gV2hlcmUgZG9lcyBpdCBnYXRoZXIgaXRzIGlucHV0cz8gV2hlcmUgYW5kIGhvdyBpcyBpdCB1c2VkPyBJJ20gcHJvYmFibHkgZ29pbmcgdG8gYmUgY2hhc2luZyBkb3duIGl0cyBkYXRhIGRlcGVuZGVuY2llcyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzIGludm9rZWQuIEkgZXhwZWN0IHRoaXMgdG8gYmUgYSBrZXkgZWxlbWVudCBpbiBob3cgREFNT04ncyBmZWVkYmFjayBsb29wIHdvcmtzLiBEb2VzIGl0IHRha2UgYSBzdGF0aWMgdmFsdWUsIG9yIGlzIGl0IGR5bmFtaWNhbGx5IGNvbXB1dGVkIGJhc2VkIG9uIGxpdmUgc3lzdGVtIG1ldHJpY3M/IFdoYXQgYXJlIHRoZSB1bml0cyBpbnZvbHZlZD9cblxuRmluYWxseSwgdGhlIGNyb3NzLWN1dHRpbmcgcXVlc3Rpb246IFdoZXJlIGlzIGBjaGFyZ2VfdGFyZ2V0X2Zyb21gIHV0aWxpemVkPyBLbm93aW5nIHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IGhvdyBkaWZmZXJlbnQgbW9uaXRvcmluZyBzY2hlbWVzIGNvbnRyaWJ1dGUgdG8gREFNT07igJlzIGRlY2lzaW9uLW1ha2luZy4gQXJlIHRoZXNlIGNhbGxzIGRpcmVjdGx5IHdpdGhpbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgb3IgYXJlIHRoZXkgdXNlZCBieSBvdGhlciBjb21wb25lbnRzIGFzIHdlbGw/IFVuZGVyc3RhbmRpbmcgdGhlIHVzYWdlIHBhdHRlcm4gaXMgZ29pbmcgdG8gY2xhcmlmeSBob3cgdGhlc2UgdHdvIHJvdXRpbmVzIHdvcmsgdG9nZXRoZXIgdG8gYWNoaWV2ZSBEQU1PTuKAmXMgZ29hbHMsIHBhcnRpY3VsYXJseSB0aGUgbWVjaGFuaXNtcyBmb3IgdHJpZ2dlcmluZyBhbmQgcmVzcG9uZGluZyB0byBjaGFuZ2VzIGluIHN5c3RlbSBiZWhhdmlvci4gSSdtIGFudGljaXBhdGluZyB0aGF0IHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgdHdvIGVsZW1lbnRzIHdpbGwgaWxsdW1pbmF0ZSBob3cgdGhlIHN5c3RlbSBhZGFwdHMgYW5kIG9wdGltaXplcyByZXNvdXJjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MDAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjE2Ljc4MTk5MjM0M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYyMjMxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGFyZ2VfdGFyZ2V0X2Zyb21cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTczMj1zdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhICpkYW1vc19xdW90YV9pbml0KHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzM4LVxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX2Zyb20gPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3Mzk6XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XFxubW0vZGFtb24vY29yZS5jLTc0MC1cXHRxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTY5Nj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3MjItXFx0XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGRzdCkge1xcbm1tL2RhbW9uL2NvcmUuYzoxNzIzOlxcdFxcdFxcdFxcdGlmIChzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPT0gZHN0X3RhcmdldCkge1xcbm1tL2RhbW9uL2NvcmUuYzoxNzI0OlxcdFxcdFxcdFxcdFxcdHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XFxubW0vZGFtb24vY29yZS5jLTE3MjUtXFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjQ0OT1zdGF0aWMgYm9vbCBkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjQ1Ny1cXHQvKiBTa2lwIHByZXZpb3VzbHkgY2hhcmdlZCByZWdpb25zICovXFxubW0vZGFtb24vY29yZS5jOjI0NTg6XFx0aWYgKHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pIHtcXG5tbS9kYW1vbi9jb3JlLmM6MjQ1OTpcXHRcXHRpZiAodCAhPSBxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDYwLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0ODMtXFx0aWYgKHIgPT0gZGFtb25fbGFzdF9yZWdpb24odCkpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MjQ4NDpcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ4NS1cXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjY4NT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzQ0LVxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNzQ1OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSB0O1xcbm1tL2RhbW9uL2NvcmUuYy0yNzQ2LVxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cXHUwMDNlYXIuZW5kO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMzNzE9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzM5Ny1cXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xcbm1tL2RhbW9uL2NvcmUuYzozMzk4OlxcdFxcdFxcdFxcdGlmIChzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdClcXG5tbS9kYW1vbi9jb3JlLmMtMzM5OS1cXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9jb3JlLmM6MzQwMDpcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbm1tL2RhbW9uL2NvcmUuYy0zNDAxLVxcdFxcdFxcdFxcdHMtXFx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb20gPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjoxNi44MjU2MTk4MzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAzNTY2NzM5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpbiB0aGUgREFNT04gQ29yZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gREFNT04ncyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEknbSBzdGFydGluZyB3aXRoIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGluIGBtbS9kYW1vbi9jb3JlLmNgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzICp3aGVuKiBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGludm9rZWQ/IEl0J3MgdGhlIHBvaW50IHdoZXJlIHRoZSBEQU1PUyBzY2hlbWVzIGFyZSBhcHBsaWVkIHdpdGhpbiBga2RhbW9uZGAsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgc2l0ZXMgaXMgY3JpdGljYWwgdG8gY29tcHJlaGVuZGluZyB0aGUgb3ZlcmFsbCB3b3JrZmxvdy4gVGltZSB0byB0cmFjZSBiYWNrIGFuZCBpZGVudGlmeSBhbGwgdGhlIHBhdGhzIHRoYXQgbGVhZCB0byB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTE0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MTkuODYxMjg5NDExWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUyODY5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrZGFtb25kX2FwcGx5X3NjaGVtZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTMzNTU9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2Vfc3RhdChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzM3MC1cXG5tbS9kYW1vbi9jb3JlLmM6MzM3MTpzdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcXG5tbS9kYW1vbi9jb3JlLmMtMzM3Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzkwND1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zOTgwLVxcdFxcdC8qXFxubW0vZGFtb24vY29yZS5jOjM5ODE6XFx0XFx0ICogZG8ga2RhbW9uZF9jYWxsKCkgYW5kIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGFmdGVyXFxubW0vZGFtb24vY29yZS5jLTM5ODItXFx0XFx0ICoga2RhbW9uZF9tZXJnZV9yZWdpb25zKCkgaWYgcG9zc2libGUsIHRvIHJlZHVjZSBvdmVyaGVhZFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM5OTUtXFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZjdHgtXFx1MDAzZXNjaGVtZXMpKVxcbm1tL2RhbW9uL2NvcmUuYzozOTk2OlxcdFxcdFxcdGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhjdHgpO1xcbm1tL2RhbW9uL2NvcmUuYy0zOTk3LVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MTkuOTA2ODI0MjYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNzk4NzUxODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIFBhdGNoIEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZyA9IFRydWUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIEkga25vdyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGNhbGxlZCB3aXRoaW4gYGtkYW1vbmRfZm5gIGluIGBtbS9kYW1vbi9jb3JlLmNgLiAgSSdtIGFsc28gYXdhcmUgb2YgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSAoYG1tL2RhbW9uL3N5c2ZzLmNgKSDigJMgd2hpY2ggdGVsbHMgbWUgdXNlcnNwYWNlIGludGVyYWN0aW9uIGlzIGEgZmFjdG9yLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYC4gIEdvb2QuIE5vdywgdGhlIGJpZyBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcmVhY2ggaXQuIFllcywgaXQgY2FuLiAgSSBjYW4gY3JlYXRlIGFuZCBjb25maWd1cmUgc3lzZnMgYXR0cmlidXRlcyBhbmQgc3RhcnQvc3RvcCBEQU1PTiwgc28gaXQncyBhIHZhbGlkIGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLlxuXG5Ob3csIHRvIHRoZSBwYXRjaCBpdHNlbGYuICBJbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgaXQncyBoYW5kbGluZyBpbnZhbGlkIHRhcmdldHMuIFByZXZpb3VzbHksIGl0IHNpbXBseSBjb250aW51ZWQgd2hlbiBgYy1cdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpYCByZXR1cm5lZCBmYWxzZS4gIE5vdywgdGhlIHBhdGNoICpyZXNldHMqIGBjaGFyZ2VfdGFyZ2V0X2Zyb21gIGFuZCBgY2hhcmdlX2FkZHJfZnJvbWAgb24gYWZmZWN0ZWQgc2NoZW1lcyBpZiB0aGUgdGFyZ2V0IGJlY29tZXMgaW52YWxpZC4gSXQgbWFrZXMgc2Vuc2UgYmVjYXVzZSB0aGVzZSB2YXJpYWJsZXMgd2VyZSBsaWtlbHkgaG9sZGluZyBzdGFsZSBwb2ludGVycyB0byBhIHRhcmdldCB0aGF0IG5vIGxvbmdlciBleGlzdHMgKHByb2Nlc3MgZGllZCwgdGFyZ2V0IGludmFsaWRhdGVkKS4gVGhpcyBjaGFuZ2UgcHJldmVudHMgd2FpdGluZy9za2lwcGluZyBvciB0aGUgZHJlYWRlZCB1c2UtYWZ0ZXItZnJlZSBvciBhIGtlcm5lbCBoYW5nLlxuXG5DYW4gdGhpcyBhY3R1YWxseSAqYmUqIGhpdCBkdXJpbmcgZXhlY3V0aW9uPyBBYnNvbHV0ZWx5LiAgYG1tL2RhbW9uL2NvcmUuY2AgaXMgcGFydCBvZiBEQU1PTi4gREFNT04gaXMgY29uZmlndXJhYmxlIGFuZCByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVS9LVk0gc2V0dXBzIHZpYSBzeXNmcyAoYENPTkZJR19EQU1PTl9TWVNGU2AsIGBDT05GSUdfREFNT05fVkFERFJgLCBgQ09ORklHX0RBTU9OX1BBRERSYCkuICBBaGEsIHNvIGl0J3MgYSByZWFsIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBwYXRoLlxuXG5JJ20gZm9sbG93aW5nIHRoZSBmdXp6aW5nIGluc3RydWN0aW9ucywgYW5kIHRoaXMgbmVhdGx5IGZhbGxzIGludG8gdGhlIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nPXRydWVgLiAgVGhpcyBwYXRjaCBtb2RpZmllcyBsb2dpYyBpbiBhIGNvcmUgTU0gc3Vic3lzdGVtIChtZW1vcnkgbWFuYWdlbWVudCksIGFuZCB0aGF0J3MgYSBkaXJlY3QgaGl0IGFjY29yZGluZyB0byBTZWN0aW9uIDMuXG5cbk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZnV6emluZyBmb2N1cyBzeW1ib2xzLiAgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgaXMgc3RhdGljLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYW5kIHRoYXQgbWVhbnMgSSBuZWVkIHRvIGxvb2sgZm9yIGVudHJ5IHBvaW50cyB0byB0aGF0IGZ1bmN0aW9uLiAgSSdsbCBmb2N1cyBvbiBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYyBzeW1ib2xzIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuICBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgYXQgYGtkYW1vbmRfZm5gLCBgZGFtb25fc3RhcnRgLCBgZGFtb25fYXBwbHlfc2NoZW1lYCwgYW5kIGBkYW1vbl9jb21taXRfdGFyZ2V0c2AuIFRob3NlIGxvb2sgbGlrZSBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDUxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjMxLjcwNTU3ODE0OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4NDE4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpfXSsgZGFtb25fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTM0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5tbS9kYW1vbi9jb3JlLmM9MzU9c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00OS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NTA6Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG5tbS9kYW1vbi9jb3JlLmMtNTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo3MTppbnQgZGFtb25fcmVnaXN0ZXJfb3BzKHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zICpvcHMpXFxubW0vZGFtb24vY29yZS5jLTcyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6OTg6aW50IGRhbW9uX3NlbGVjdF9vcHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBlbnVtIGRhbW9uX29wc19pZCBpZClcXG5tbS9kYW1vbi9jb3JlLmMtOTkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMy1cXG5tbS9kYW1vbi9jb3JlLmM6MTE0OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcXG5tbS9kYW1vbi9jb3JlLmMtMTE1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjUtXFxubW0vZGFtb24vY29yZS5jOjEyNjp2b2lkIGRhbW9uX2FkZF9wcmVwKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX3ByZXAgKnByZXApXFxubW0vZGFtb24vY29yZS5jLTEyNy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTU5PXN0YXRpYyBib29sIGRhbW9uX2hhc19wcmVwKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTcwLVxcbm1tL2RhbW9uL2NvcmUuYzoxNzE6c3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbmV3X2ZpbHRlcihlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGUsXFxubW0vZGFtb24vY29yZS5jLTE3Mi1cXHRcXHRib29sIG1hdGNoaW5nLCBib29sIGFsbG93KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4NS1cXG5tbS9kYW1vbi9jb3JlLmM6MTg2OnZvaWQgZGFtb25fYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTE4Ny17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTk2PXN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAwLVxcbm1tL2RhbW9uL2NvcmUuYzoyMDE6dm9pZCBkYW1vbl9kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTIwNz1zdGF0aWMgc3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbnRoX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxOC1cXG5tbS9kYW1vbi9jb3JlLmM6MjE5OnN0cnVjdCBkYW1vbl9wcm9iZSAqZGFtb25fbmV3X3Byb2JlKHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTIyMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjMyLVxcbm1tL2RhbW9uL2NvcmUuYzoyMzM6dm9pZCBkYW1vbl9hZGRfcHJvYmUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlKVxcbm1tL2RhbW9uL2NvcmUuYy0yMzQte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTM3OT1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zODgtICovXFxubW0vZGFtb24vY29yZS5jOjM4OTpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbm1tL2RhbW9uL2NvcmUuYy0zOTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTUwNj1zdGF0aWMgaW50IGRhbW9uX2ZpbGxfcmVnaW9uc19ob2xlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpmaXJzdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy01MzgtICovXFxubW0vZGFtb24vY29yZS5jOjUzOTppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcXG5tbS9kYW1vbi9jb3JlLmMtNTQwLVxcdFxcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz03ODc9c3RhdGljIHZvaWQgZGFtb3Nfc2V0X25leHRfYXBwbHlfc2lzKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc5Ny1cXG5tbS9kYW1vbi9jb3JlLmM6Nzk4OnZvaWQgZGFtb25fYWRkX3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtNzk5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz04MDk9c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTgxMy1cXG5tbS9kYW1vbi9jb3JlLmM6ODE0OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgzOC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODM5OnN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX25ld190YXJnZXQodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtODQwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NTUtXFxubW0vZGFtb24vY29yZS5jOjg1Njp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy04NTcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg2My0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODY0OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxcbm1tL2RhbW9uL2NvcmUuYy04NjUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTg3Mj1zdGF0aWMgdm9pZCBkYW1vbl9kZWxfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODc2LVxcbm1tL2RhbW9uL2NvcmUuYzo4Nzc6dm9pZCBkYW1vbl9mcmVlX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy04Nzgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg4NS1cXG5tbS9kYW1vbi9jb3JlLmM6ODg2OnZvaWQgZGFtb25fZGVzdHJveV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy04ODcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTg5Nj11bnNpZ25lZCBpbnQgZGFtb25fbnJfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTkwMC1cXG5tbS9kYW1vbi9jb3JlLmM6OTAxOnN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld19jdHgodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtOTAyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz05NDI9c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NDktXFxubW0vZGFtb24vY29yZS5jOjk1MDp2b2lkIGRhbW9uX2Rlc3Ryb3lfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMDgzPXN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTExNy0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTExODppbnQgZGFtb25fc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcXG5tbS9kYW1vbi9jb3JlLmMtMTExOS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE2NS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTE2Njp2b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcXG5tbS9kYW1vbi9jb3JlLmMtMTE2Ny1cXHRcXHRcXHRzc2l6ZV90IG5yX3NjaGVtZXMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTkzNz1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTY1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxOTY2OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xOTY3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMDQ5PXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjA4NS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjA4NjppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG5tbS9kYW1vbi9jb3JlLmMtMjA4Ny17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjEzMT1zdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxNTAtICovXFxubW0vZGFtb24vY29yZS5jOjIxNTE6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcXG5tbS9kYW1vbi9jb3JlLmMtMjE1Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE2NS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjE2Njpib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yMTY3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTgxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMTgyOmludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTIxODMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIyMTMtICovXFxubW0vZGFtb24vY29yZS5jOjIyMTQ6aW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxcbm1tL2RhbW9uL2NvcmUuYy0yMjE1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zOTA0PXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQwNzQtXFxubW0vZGFtb24vY29yZS5jOjQwNzU6c3RydWN0IGRhbW9uX3N5c3RlbV9yYW1fcmFuZ2Vfd2Fsa19hcmcge1xcbm1tL2RhbW9uL2NvcmUuYy00MDc2LVxcdGJvb2wgd2Fsa2VkO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTQxMDU9c3RhdGljIGJvb2wgZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZSh1bnNpZ25lZCBsb25nICpzdGFydCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MTM2LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo0MTM3OmludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG5tbS9kYW1vbi9jb3JlLmMtNDEzOC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nICpzdGFydCwgdW5zaWduZWQgbG9uZyAqZW5kLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQxNjEtICovXFxubW0vZGFtb24vY29yZS5jOjQxNjI6dm9pZCBkYW1vbl91cGRhdGVfcmVnaW9uX2FjY2Vzc19yYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIGJvb2wgYWNjZXNzZWQpXFxubW0vZGFtb24vY29yZS5jLTQxNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQxNzItICovXFxubW0vZGFtb24vY29yZS5jOjQxNzM6Ym9vbCBkYW1vbl9pbml0aWFsaXplZCh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy00MTc0LXtcXG4tLVxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTQtICovXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYzoxNTppbnQgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cCxcXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jLTE2LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKip0YXJnZXRwKVxcbi0tXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oOjQ2OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTU1PXN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X21vbml0b3JfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNTktXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjYwOnZvaWQgZGFtb25fcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy02MS17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtOTUtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjk2OnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy05Ny17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MTI1PXN0YXRpYyBib29sIGRhbW9uX2h1Z2V0bGJfcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMzctXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjEzODp2b2lkIGRhbW9uX2h1Z2V0bGJfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEzOS1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE2Mi1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTYzOmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTY0LVxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMDgtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjIwOTppbnQgZGFtb25fY29sZF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMTAtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTIxOD1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb19ta29sZF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMzctXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjIzODp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzOS17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MjkxPXN0YXRpYyBib29sIGRhbW9uX2ZvbGlvX3lvdW5nX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMyNy1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MzI4OmJvb2wgZGFtb25fZm9saW9feW91bmcoc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzI5LXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYz01MjY9Ym9vbCBkYW1vc19vcHNfaGFzX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNTM0LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo1MzU6Ym9vbCBkYW1vbl9vcHNfZmlsdGVyX21hdGNoKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmZpbHRlciwgc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNTM2LXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uaD05PXN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X21vbml0b3JfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xMC1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTE6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMjp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTEzLSNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjE0OnZvaWQgZGFtb25faHVnZXRsYl9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTUtXFx0XFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg9MTc9c3RhdGljIGlubGluZSB2b2lkIGRhbW9uX2h1Z2V0bGJfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMjEtI2VuZGlmXFx0LyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoyMjp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoyMzpib29sIGRhbW9uX2ZvbGlvX3lvdW5nKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaC0yNC1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MjU6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMjYtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6Mjc6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uaC0yOC1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTMzPWJvb2wgZGFtb3Nfb3BzX2hhc19maWx0ZXIoc3RydWN0IGRhbW9zICpzKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMzQtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjM1OmJvb2wgZGFtb25fb3BzX2ZpbHRlcl9tYXRjaChzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXIsIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA9REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTY1PXN0YXRpYyBzc2l6ZV90IG1heF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODE6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgyLXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTEwNj1zdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMTc6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZClcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9OT1leHRlcm4gc3RydWN0IG11dGV4IGRhbW9uX3N5c2ZzX2xvY2s7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTE6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlIHtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTc6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOC1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOS1cXHRcXHR1bnNpZ25lZCBsb25nIG1heCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjA6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yMS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0yMj1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc191bF9yYW5nZV9rdHlwZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI3LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yOS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzMtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzU6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM2LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTM3PWV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZXNfa3R5cGU7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzgtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzk6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDEtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDI6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00My1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTQ2PXZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjUxOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTc9dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zNTY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNjY6c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTI4LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwMjA6c3RydWN0IGRhbW9uX3N5c2ZzX3dhdGVybWFya3Mge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDIxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTc0OnN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjgzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg1LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19xdW90YXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk1OTpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTYwLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk2Nj1zdGF0aWNcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE5Njgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZClcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4NS17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4OTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0ODppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ5LVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNjc6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zMTA1PXZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMTUyOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxNTMtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE0LVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTU6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbiB7XFxubW0vZGFtb24vc3lzZnMuYy0xNi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz04MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25fa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTkwLVxcbm1tL2RhbW9uL3N5c2ZzLmM6OTE6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTItXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIwOS1cXG5tbS9kYW1vbi9zeXNmcy5jOjIxMDpzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0IHtcXG5tbS9kYW1vbi9zeXNmcy5jLTIxMS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0zMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0X2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0zMTYtXFxubW0vZGFtb24vc3lzZnMuYzozMTc6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMzE4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTQzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc190YXJnZXRzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy00NDQtXFxubW0vZGFtb24vc3lzZnMuYzo0NDU6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTQ0Ni1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz01OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2dvYWxfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTYwMS1cXG5tbS9kYW1vbi9zeXNmcy5jOjYwMjpzdHJ1Y3QgZGFtb25fc3lzZnNfaW50ZXJ2YWxzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTYwMy1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz03NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy03NTUtXFxubW0vZGFtb24vc3lzZnMuYzo3NTY6c3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAge1xcbm1tL2RhbW9uL3N5c2ZzLmMtNzU3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTc2MT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAgKmRhbW9uX3N5c2ZzX3ByZXBfYWxsb2Modm9pZClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtNzcxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6NzcyOnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwX2FjdGlvbl9uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTc3My1cXHRjb25zdCBlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9ODQzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3ByZXBfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTg1Mi1cXG5tbS9kYW1vbi9zeXNmcy5jOjg1MzpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtODU0LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTk2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19wcmVwc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtOTcxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6OTcyOnN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTczLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTk4MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqZGFtb25fc3lzZnNfZmlsdGVyX2FsbG9jKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTk4NC1cXG5tbS9kYW1vbi9zeXNmcy5jOjk4NTpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMuYy05ODYtXFx0ZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTE2NS1cXG5tbS9kYW1vbi9zeXNmcy5jOjExNjY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTE2Ny1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMjc1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEyODQtXFxubW0vZGFtb24vc3lzZnMuYzoxMjg1OnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSB7XFxubW0vZGFtb24vc3lzZnMuYy0xMjg2LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEzOTEtXFxubW0vZGFtb24vc3lzZnMuYzoxMzkyOnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTM5My1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3Byb2Jlc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTUyMC1cXG5tbS9kYW1vbi9zeXNmcy5jOjE1MjE6c3RydWN0IGRhbW9uX3N5c2ZzX2F0dHJzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE1MjItXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTYxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19hdHRyc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTYyNi1cXG5tbS9kYW1vbi9zeXNmcy5jOjE2Mjc6c3RydWN0IGRhbW9uX3N5c2ZzX29wc19uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE2MjgtXFx0ZW51bSBkYW1vbl9vcHNfaWQgb3BzX2lkO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNjMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUgZGFtb25fc3lzZnNfb3BzX25hbWVzW10gPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE2NDYtXFxubW0vZGFtb24vc3lzZnMuYzoxNjQ3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0IHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE2NDgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTg5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0X2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xOTAyLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTkwMzpzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTkwNC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMDIyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMDMxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjAzMjpzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCB7XFxubW0vZGFtb24vc3lzZnMuYy0yMDMzLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIwNjY9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfa2RhbW9uZF9ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjozMS43ODk0MjUxNjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY4MTIxMTQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBTY2hlbWUgQXBwbGljYXRpb24gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIGhvdyBEQU1PTiBzY2hlbWVzIGFyZSBhcHBsaWVkLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AuIE15IHN0YXJ0aW5nIHBvaW50IGlzIGBtbS9kYW1vbi9jb3JlLmNgLCB3aGVyZSBJIHNlZSB0aGUgZnVuY3Rpb24gZGVmaW5lZC4gRmlyc3QgdGhpbmcgSSdtIGNoZWNraW5nIGlzIGlmIGl0J3Mgc3RhdGljIOKAkyBhbmQgeWVwLCBsaW5lIDMzNzEgY29uZmlybXMgaXQgaXM6IGBzdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylgLiBUaGF0IHRlbGxzIG1lIGl0cyBzY29wZSBpcyBsaW1pdGVkLCB3aGljaCBjb3VsZCBpbXBhY3QgaG93IGFuZCB3aGVyZSBJIGNhbiBpbnN0cnVtZW50IG9yIG1vZGlmeSBpdHMgYmVoYXZpb3IuXG5cbk5vdywgSSBuZWVkIGEgYnJvYWRlciBwaWN0dXJlLiBJJ20gZ29pbmcgdG8gbG9vayBhdCByZWxhdGVkIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdzogaG93IGRvZXMgdGhlIHN5c3RlbSAqYWN0dWFsbHkqIGFwcGx5IHNjaGVtZXM/IEkgbmVlZCB0byBjaGVjayB0aGUgZm9sbG93aW5nOiBga2RhbW9uZF9mbmAsIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzYCwgYGRhbW9zX2FwcGx5X3RhcmdldGAsIGFuZCBgZGFtb3NfYXBwbHlfc2NoZW1lYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBrZXkgcGxheWVycy5cblxuQWxzbywgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGFyZ2V0IHZhbGlkYXRpb24gYmV0dGVyLCBzbyBJJ20gZ29pbmcgdG8gZm9sbG93IHRoZSBwcm9jZXNzaW5nIGZsb3cgb2YgYW55IHN5c2ZzIGNvbW1hbmRzIHJlbGF0ZWQgdG8gREFNT04gc2NoZW1lcyBhbmQgdGFyZ2V0IHZhbGlkYXRpb24uICBJJ2xsIHdhbnQgdG8gY2hlY2sgYGRhbW9uX3N5c2ZzX2NtZF9yZXF1ZXN0YCBvciBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBgbW0vZGFtb24vc3lzZnMuY2AuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyB1c2VyIGNvbW1hbmRzIGZvciBzdGFydGluZywgc3RvcHBpbmcsIGFuZCBjb25maWd1cmluZyBEQU1PTiwgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBvZiB0aG9zZSBjb21tYW5kcy4gVGhpcyBpbmNsdWRlcyBleGFtaW5pbmcgaG93IHRhcmdldCB2YWxpZGF0aW9uIHBsYXlzIGEgcm9sZSBpbiBhY2NlcHRpbmcvcmVqZWN0aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNzMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MzUuNDcwNjM5ODMzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDQ1Njg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGF0ZV9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9zeXNmcy5jPTI2MzI9c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjY3MS1cXG5tbS9kYW1vbi9zeXNmcy5jOjI2NzI6c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG5tbS9kYW1vbi9zeXNmcy5jLTI2NzMtXFx0XFx0Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjM1LjU0MTEwMjgyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NzgyNDY2MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGVudHJ5IHBvaW50czogYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGBrZGFtb25kX2ZuYCwgYGRhbW9zX2FwcGx5X3NjaGVtZWAsIGBkYW1vbl9zdGFydGAsIGFuZCBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGFzIHRoZSByZWFzb25pbmcgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHRoZSBwYXRjaCBtb2RpZmllcyBpdC5cblxuTm93LCBsZXQncyBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgaW4gcGxhY2UuIFRoZSBjb3JlIERBTU9OIGZyYW1ld29yayAoYERBTU9OYCksIHRoZSBzeXNmcyBpbnRlcmZhY2UgKGBEQU1PTl9TWVNGU2ApLCBhbmQgYm90aCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMgKGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmApIGFyZSBhbGwgbmVjZXNzYXJ5LiBHb29kLCB0aG9zZSBhcmUgc3RhbmRhcmQgZm9yIGEgREFNT04gc2V0dXAsIHNvIHRoYXQgc2VlbXMgcmVhc29uYWJsZS5cblxuVGhlIHJlYXNvbmluZyBoaWdobGlnaHRzIHRoYXQgdGhlIHBhdGNoIGFkZHJlc3NlcyBzY2hlbWUgcXVvdGEgdHJhY2tpbmcgd2l0aGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIHdoZW4gYSB0YXJnZXQgYmVjb21lcyBpbnZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgd2l0aGluIHRoZSBNTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgd2hpY2ggaXMgYSBjb21tb24gZnV6eiB0YXJnZXQuIFRoaXMgaXMgYWxsIGdvb2QuXG5cblRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgbGlzdGVkLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYGtkYW1vbmRfZm5gLCBgZGFtb3NfYXBwbHlfc2NoZW1lYCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBhbmQgYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIGZ1bmN0aW9ucywgZXNwZWNpYWxseSB0aGUgZmlyc3QgdHdvLCBzaW5jZSB0aGV5IGFyZSBpbiBgbW0vZGFtb24vY29yZS5jYC4gVGhlc2UgYXJlIGFsbCBmYWlybHkgc3BlY2lmaWMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCBmb3IgcmVkdWNpbmcgbm9pc2UuXG5cbk9rYXksIGxldCdzIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIG9mIGNvbmZpZ3MgYW5kIHN5bWJvbHMgdG8gbWFrZSBzdXJlIHRoZXJlJ3Mgbm90aGluZyBvYnZpb3VzbHkgd3Jvbmcgb3Igb3Zlcmx5IGJyb2FkLiBUaGUgY29uZmlncyBzZWVtIGNvcnJlY3QsIGFuZCBJJ2xsIGNvbmZpcm0gdGhlIHN5bWJvbCBuYW1lcyBhcmUgd2hhdCBJIGV4cGVjdCBpbiB0aGUgREFNT04gY29udGV4dC4gIEknbGwgdmVyaWZ5IHRoYXQgdGhlc2Ugc3ltYm9scyBhcmUgbm90IG92ZXJseSBnZW5lcmljIG9yIHVzZWQgaW4gb3RoZXIgc3Vic3lzdGVtcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBub2lzZSBhbmQgZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LlxuXG5GaW5hbGx5LCBhc3N1bWluZyBhbGwgbG9va3MgZ29vZCwgSSdsbCBwYXNzIHRoaXMgYXNzZXNzbWVudCBhbG9uZyB0byB0aGUgZnV6emluZyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzgyLCJPdXRwdXRUb2tlbnMiOjE2NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjo0NC4zMjM1NzIyMjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE5Nzg3NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2RhbW9uZF9mblwiLFxuICAgIFwiZGFtb3NfYXBwbHlfc2NoZW1lXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fY29tbWl0X2N0eFwiLFxuICAgIFwiZGFtb25fc3lzZnNfaGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGluIERBTU9OIGNvcmUgKG1tL2RhbW9uL2NvcmUuYykgdG8gcmVzZXQgdGhlIHNjaGVtZSBxdW90YSBjaGFyZ2UgdGFyZ2V0IGFuZCBhZGRyZXNzIHdoZW4gYSB0YXJnZXQgaXMgbWFya2VkIGludmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2RhbW9uZF9mblwiLFxuICAgIFwiZGFtb3NfYXBwbHlfc2NoZW1lXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fY29tbWl0X2N0eFwiLFxuICAgIFwiZGFtb25fc3lzZnNfaGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGluIERBTU9OIGNvcmUgKG1tL2RhbW9uL2NvcmUuYykgdG8gcmVzZXQgdGhlIHNjaGVtZSBxdW90YSBjaGFyZ2UgdGFyZ2V0IGFuZCBhZGRyZXNzIHdoZW4gYSB0YXJnZXQgaXMgbWFya2VkIGludmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjo0NC40ODU1NTk3NjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDg5MDAyODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6NDQuNDg1OTkwNzEzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg0ODg1NjY5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBrZGFtb25kX2FwcGx5X3NjaGVtZXMoKWAgaW4gYG1tL2RhbW9uL2NvcmUuY2AgdG8gcmVzZXQgYHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgdG8gYE5VTExgIGFuZCBgcy1cXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbWAgdG8gYDBgIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgdGFyZ2V0IChgdGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlYCkuXFxuXFxuVGhpcyBjaGFuZ2UgY2xlYXJzIHN0YWxlIHRhcmdldCByZWZlcmVuY2VzIGluIERBTU9OIHNjaGVtZSBxdW90YSB0cmFja2luZy4gSXQgZG9lcyBub3QgYWxsb2NhdGUgbmV3IG1lbW9yeSwgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBidWZmZXJzLCBhbHRlciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGhhbmRsaW5nLCBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFueSBwb3RlbnRpYWwgc3RhbGUgcG9pbnRlciBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgS0FTQU4sIHdoZXJlYXMgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE2OjM1OjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA2NDVjYjM2NzAxOWFlLi4wNmNmMmFiN2U5N2Q3IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0zMzkzLDggKzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4gXHRtYXhfcmVnaW9uX3N6ID0gZGFtb25fcmVnaW9uX3N6X2xpbWl0KGMpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZjLVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbiBcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XG4tXHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSlcbitcdFx0aWYgKGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCBcdTAwMjZcdTAwMjYgYy1cdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlKSB7XG4rXHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbitcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxuK1x0XHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbitcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG4rXHRcdFx0fVxuIFx0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdGRhbW9zX2FwcGx5X3RhcmdldChjLCB0LCBtYXhfcmVnaW9uX3N6KTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjQ0LjQ4NTk5MjA5M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1ODg5NzEwNzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgREFNT04gQ29yZSBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggaW4gdGhlIGNvbnRleHQgb2YgdGhlIERBTU9OIGNvcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBpbml0aWFsIG1vdmUgaXMgdG8gemVybyBpbiBvbiBgbW0vZGFtb24vY29yZS5jYC4gSSdtIHRoaW5raW5nIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzMzkzLiBJ4oCZbGwgbGV2ZXJhZ2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIOKAkyB3aGF0ZXZlcidzIHF1aWNrZXN0IOKAkyB0byBnZXQgdGhlIGNvbnRleHQgcmlnaHQgdGhlcmUuIEkgbmVlZCB0aGF0IGltbWVkaWF0ZSBzdXJyb3VuZGluZyBjb2RlIGZvciBhIHByb3BlciBhc3Nlc3NtZW50LiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjUwLjM3NTcwNzM1MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTkzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzODA6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzM4MTpcXHRcXG4zMzgyOlxcdFxcdFxcdGlmICghcy1cXHUwMDNld21hcmtzLmFjdGl2YXRlZClcXG4zMzgzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjMzODQ6XFx0XFxuMzM4NTpcXHRcXHRcXHRoYXNfc2NoZW1lc190b19hcHBseSA9IHRydWU7XFxuMzM4NjpcXHRcXG4zMzg3OlxcdFxcdFxcdGRhbW9zX2FkanVzdF9xdW90YShjLCBzKTtcXG4zMzg4OlxcdFxcdH1cXG4zMzg5OlxcdFxcbjMzOTA6XFx0XFx0aWYgKCFoYXNfc2NoZW1lc190b19hcHBseSlcXG4zMzkxOlxcdFxcdFxcdHJldHVybjtcXG4zMzkyOlxcdFxcbjMzOTM6XFx0XFx0bWF4X3JlZ2lvbl9zeiA9IGRhbW9uX3JlZ2lvbl9zel9saW1pdChjKTtcXG4zMzk0OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmMtXFx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcXG4zMzk1OlxcdFxcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XFxuMzM5NjpcXHRcXHRcXHRpZiAoYy1cXHUwMDNlb3BzLnRhcmdldF92YWxpZCBcXHUwMDI2XFx1MDAyNiBjLVxcdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlKSB7XFxuMzM5NzpcXHRcXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xcbjMzOTg6XFx0XFx0XFx0XFx0XFx0aWYgKHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxcbjMzOTk6XFx0XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzQwMDpcXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbjM0MDE6XFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuMzQwMjpcXHRcXHRcXHRcXHR9XFxuMzQwMzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zNDA0OlxcdFxcdFxcdH1cXG4zNDA1OlxcdFxcdFxcdGRhbW9zX2FwcGx5X3RhcmdldChjLCB0LCBtYXhfcmVnaW9uX3N6KTtcXG4zNDA2OlxcdFxcdH1cXG4zNDA3OlxcdFxcbjM0MDg6XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcXG4zNDA5OlxcdFxcdFxcdGlmICh0aW1lX2JlZm9yZShjLVxcdTAwM2VwYXNzZWRfc2FtcGxlX2ludGVydmFscywgcy1cXHUwMDNlbmV4dF9hcHBseV9zaXMpKVxcbjM0MTA6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzQxMTpcXHRcXHRcXHRkYW1vc193YWxrX2NvbXBsZXRlKGMsIHMpO1xcbjM0MTI6XFx0XFx0XFx0ZGFtb3Nfc2V0X25leHRfYXBwbHlfc2lzKHMsIGMpO1xcbjM0MTM6XFx0XFx0XFx0cy1cXHUwMDNlbGFzdF9hcHBsaWVkID0gTlVMTDtcXG4zNDE0OlxcdFxcdFxcdGRhbW9zX3RyYWNlX3N0YXQoYywgcyk7XFxuMzQxNTpcXHRcXHR9XFxuMzQxNjpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmMtXFx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcXG4zNDE3OlxcdH1cXG4zNDE4OlxcdFxcbjM0MTk6XFx0I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG4zNDIwOlxcdHN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcXG4zNDIxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKmwsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIpXFxuMzQyMjpcXHR7XFxuMzQyMzpcXHRcXHQvKiBkYW1vbl9tZXJnZV90d29fcmVnaW9ucygpIG1heSBjcmVhdGVkIGluY29ycmVjdCBsZWZ0IHJlZ2lvbiAqL1xcbjM0MjQ6XFx0XFx0V0FSTl9PTkNFKGwtXFx1MDAzZWFyLnN0YXJ0IFxcdTAwM2U9IGwtXFx1MDAzZWFyLmVuZCwgXFxcImw6ICVsdS0lbHUsIHI6ICVsdS0lbHVcXFxcblxcXCIsXFxuMzQyNTpcXHRcXHRcXHRcXHRsLVxcdTAwM2Vhci5zdGFydCwgbC1cXHUwMDNlYXIuZW5kLCByLVxcdTAwM2Vhci5zdGFydCwgci1cXHUwMDNlYXIuZW5kKTtcXG4zNDI2OlxcdH1cXG4zNDI3OlxcdCNlbHNlXFxuMzQyODpcXHRzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbWVyZ2VfdHdvX3JlZ2lvbnMoXFxuMzQyOTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjo1MC4zNzYwNjk2NDFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzkwNzQ3Mzc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBsaWtlbHkgZGVhbHMgd2l0aCBzb21lIGNoYXJnaW5nIGZ1bmN0aW9uYWxpdHkuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4gV2hlcmUgZG9lcyB0aGlzIGBjaGFyZ2VfdGFyZ2V0X2Zyb21gIGZ1bmN0aW9uLCB2YXJpYWJsZSwgb3Igd2hhdGV2ZXIgaXQgaXMsIGFjdHVhbGx5IGNvbWUgaW50byBwbGF5PyBNeSBpbnN0aW5jdCBpcyB0byB1c2UgYGdyZXBgLiBJIHdhbnQgdG8gcXVpY2tseSBpZGVudGlmeSAqYWxsKiB0aGUgcGxhY2VzIGluIHRoZSBjb2RlYmFzZSB3aGVyZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBpcyByZWZlcmVuY2VkLiBLbm93aW5nIGl0cyB1c2FnZSBjb250ZXh0IGlzIGNyaXRpY2FsIGJlZm9yZSBJIGRpdmUgaW50byB0aGUgYWN0dWFsIGNvZGUgbW9kaWZpY2F0aW9uLiBUaGlzIHdpbGwgc2hvdyBtZSB0aGUgdXBzdHJlYW0gY2hhbmdlcyBhbmQgZGV0ZXJtaW5lIGlmIGFueXRoaW5nIGRvd25zdHJlYW0gcmVxdWlyZXMgYXR0ZW50aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQxLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjo1NC4yODM1NDY0MDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTIwNTMyNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hhcmdlX3RhcmdldF9mcm9tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZGFtb24uaD0yNzY9c3RydWN0IGRhbW9zX3F1b3RhIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGFtb24uaC0zMDAtXFx0dW5zaWduZWQgbG9uZyBjaGFyZ2VkX2Zyb207XFxuaW5jbHVkZS9saW51eC9kYW1vbi5oOjMwMTpcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpjaGFyZ2VfdGFyZ2V0X2Zyb207XFxuaW5jbHVkZS9saW51eC9kYW1vbi5oLTMwMi1cXHR1bnNpZ25lZCBsb25nIGNoYXJnZV9hZGRyX2Zyb207XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NzMyPXN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MzgtXFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSA9IDA7XFxubW0vZGFtb24vY29yZS5jOjczOTpcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmMtNzQwLVxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNjk2PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldHMoXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTcyMi1cXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgZHN0KSB7XFxubW0vZGFtb24vY29yZS5jOjE3MjM6XFx0XFx0XFx0XFx0aWYgKHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9PSBkc3RfdGFyZ2V0KSB7XFxubW0vZGFtb24vY29yZS5jOjE3MjQ6XFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmMtMTcyNS1cXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNDQ5PXN0YXRpYyBib29sIGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24oc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNDU3LVxcdC8qIFNraXAgcHJldmlvdXNseSBjaGFyZ2VkIHJlZ2lvbnMgKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjQ1ODpcXHRpZiAocXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNDU5OlxcdFxcdGlmICh0ICE9IHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pXFxubW0vZGFtb24vY29yZS5jLTI0NjAtXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjQ4My1cXHRpZiAociA9PSBkYW1vbl9sYXN0X3JlZ2lvbih0KSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNDg0OlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbm1tL2RhbW9uL2NvcmUuYy0yNDg1LVxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNjg1PXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3NDQtXFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKSB7XFxubW0vZGFtb24vY29yZS5jOjI3NDU6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XFxubW0vZGFtb24vY29yZS5jLTI3NDYtXFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV9hZGRyX2Zyb20gPSByLVxcdTAwM2Vhci5lbmQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzM3MT1zdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMzk3LVxcdFxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XFxubW0vZGFtb24vY29yZS5jOjMzOTg6XFx0XFx0XFx0XFx0aWYgKHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxcbm1tL2RhbW9uL2NvcmUuYy0zMzk5LVxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL2RhbW9uL2NvcmUuYzozNDAwOlxcdFxcdFxcdFxcdHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XFxubW0vZGFtb24vY29yZS5jLTM0MDEtXFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjU3LjI5NTYwNDkyMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Njc4OTI0OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBRdW90YSBUcmFja2luZyBGaXgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLCB0aGUgY29kZSBpdGVyYXRlcyB0aHJvdWdoIERBTU9OIHRhcmdldHMuIFRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IGlmIGEgdGFyZ2V0IGJlY29tZXMgaW52YWxpZOKAlGBjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQodCkgPT0gZmFsc2Vg4oCUYW5kIGBzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgd2FzIHByZXZpb3VzbHkgcG9pbnRpbmcgdG8gaXQsIHdlJ3ZlIGdvdCBhIHBvdGVudGlhbCBpc3N1ZS4gVGhhdCBwb2ludGVyLCBpZiBub3QgY2xlYXJlZCwgY291bGQgbGVhZCB0byBhIHN0YWxlIHJlZmVyZW5jZSwgc2tpcHBlZCB0YXJnZXRzIGluIHN1YnNlcXVlbnQgd2Fsa3MgZHVlIHRvIGEgbm9uLU5VTEwgY29tcGFyaXNvbiwgb3IsIHdvcnN0LWNhc2UsIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gaWYgdGhlIGludmFsaWQgdGFyZ2V0IGlzIGRlYWxsb2NhdGVkLlxuXG5UaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogd2hlbiBgdGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlYCwgd2UgcmVzZXQgYHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTGAgYW5kIGBzLVx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb20gPSAwYC4gVGhpcyBjbGVhbnMgdXAgdGhlIHF1b3RhIHRyYWNraW5nIHN0YXRlIGZvciB0aGF0IGludmFsaWQgdGFyZ2V0LiBJJ3ZlIGNoZWNrZWQgZm9yIGNvbW1vbiBwaXRmYWxscyBhbmQgSSdtIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuXG5cbkxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IEtNU0FOIGNvbmNlcm5zLCBJJ3ZlIGNvbmZpcm1lZDpcblxuKiAgIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgaW50cm9kdWNlZC5cbiogICBObyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGBzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgZmllbGQgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTC5cbiogICBUaGUgY29kZSBzZXRzIHZhcmlhYmxlcyB0byBleHBsaWNpdCBjb25zdGFudHMgKE5VTEwgYW5kIDApLCBlbGltaW5hdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucy5cbiogICBUaGlzIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIGxvZ2ljIGJ1ZywgYSBzdGFsZSBwb2ludGVyIGlzc3VlLCBpbiB0aGUgREFNT04gcXVvdGEgdHJhY2tpbmcuXG4qICAgS0FTQU4gc2hvdWxkIGNhdGNoIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMuXG4qICAgVGhlcmUncyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLlxuXG5XZSBjYW4gcnVsZSBvdXQgYW55IEtNU0FOLXJlbGF0ZWQgaXNzdWVzLiBUaGUgc3RydWN0dXJlIGlzIE5PVCBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlJ3Mgbm8gY29uZGl0aW9uYWwgbG9naWMgb3IgY29weSBvcGVyYXRpb24gZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBDb21wbGV4IHN0cnVjdHVyZXMgYXJlIE5PVCBhbGxvY2F0ZWQsIGFuZCB0aGVyZSBhcmUgTk8gYm91bmRzIGNoZWNrcyBvciBsZW5ndGggbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBidWZmZXJzLiBUaGUgbG9naWMgaXMgc2ltcGxlIGFuZCBmaXhlcyB0aGUgc3RhbGUgcG9pbnRlciBpc3N1ZS5cblxuSW4gc2hvcnQ6IFRoZSBwYXRjaCBjb3JyZWN0bHkgaGFuZGxlcyBzdGFsZSByZWZlcmVuY2VzIHRvIGludmFsaWQgdGFyZ2V0cyBpbiBEQU1PTidzIHF1b3RhIHRyYWNraW5nIGJ5IHJlc2V0dGluZyB0aGUgdHJhY2tpbmcgc3RhdGUuIEtBU0FOIGlzIHRoZSByZWxldmFudCB0b29sIGhlcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiBUaGlzIGlzIGEgbG9naWMgZml4LCBub3QgYSBtZW1vcnkgc2FmZXR5IGlzc3VlIHJlcXVpcmluZyBLTVNBTi4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMzQsIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM3OjAyLjk3NDUzMjkyNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpYCBpbiBgbW0vZGFtb24vY29yZS5jYCB0byByZXNldCBgcy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tYCB0byBgTlVMTGAgYW5kIGBzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tYCB0byBgMGAgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB0YXJnZXQgKGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgKS5cXG5cXG5UaGlzIGNoYW5nZSBjbGVhcnMgc3RhbGUgdGFyZ2V0IHJlZmVyZW5jZXMgaW4gREFNT04gc2NoZW1lIHF1b3RhIHRyYWNraW5nLiBJdCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgbWVtb3J5LCBhY2Nlc3MgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGJ1ZmZlcnMsIGFsdGVyIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaGFuZGxpbmcsIG9yIGNvcHkgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gQW55IHBvdGVudGlhbCBzdGFsZSBwb2ludGVyIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBLQVNBTiwgd2hlcmVhcyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBga2RhbW9uZF9hcHBseV9zY2hlbWVzKClgIGluIGBtbS9kYW1vbi9jb3JlLmNgIHRvIHJlc2V0IGBzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb21gIHRvIGBOVUxMYCBhbmQgYHMtXFx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb21gIHRvIGAwYCB3aGVuIGVuY291bnRlcmluZyBhbiBpbnZhbGlkIHRhcmdldCAoYHRhcmdldF92YWxpZCh0KSA9PSBmYWxzZWApLlxcblxcblRoaXMgY2hhbmdlIGNsZWFycyBzdGFsZSB0YXJnZXQgcmVmZXJlbmNlcyBpbiBEQU1PTiBzY2hlbWUgcXVvdGEgdHJhY2tpbmcuIEl0IGRvZXMgbm90IGFsbG9jYXRlIG5ldyBtZW1vcnksIGFjY2VzcyB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYnVmZmVycywgYWx0ZXIgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBoYW5kbGluZywgb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbnkgcG90ZW50aWFsIHN0YWxlIHBvaW50ZXIgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGJ5IHN0YW5kYXJkIEtBU0FOLCB3aGVyZWFzIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 16:01:19 +0000 UTC FinishedAt: 2026-09-10 16:37:04 +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": "cf558a250cf4475a8936902b8978fbb6c61016f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "DAMON_PADDR" ], "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": "cf558a250cf4475a8936902b8978fbb6c61016f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "DAMON_PADDR" ], "series_id": "329c6dc6-1bf1-408f-928e-52c1f7b6eba5" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kdamond_fn", "damos_apply_scheme", "damon_start", "damon_commit_ctx", "damon_sysfs_handle_cmd" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2RhbW9uZF9mbiYjMzQ7LAogICAgJiMzNDtkYW1vc19hcHBseV9zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19oYW5kbGVfY21kJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpYCBpbiBgbW0vZGFtb24vY29yZS5jYCB0byByZXNldCBgcy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb21gIHRvIGBOVUxMYCBhbmQgYHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbWAgdG8gYDBgIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgdGFyZ2V0IChgdGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlYCkuXG5cblRoaXMgY2hhbmdlIGNsZWFycyBzdGFsZSB0YXJnZXQgcmVmZXJlbmNlcyBpbiBEQU1PTiBzY2hlbWUgcXVvdGEgdHJhY2tpbmcuIEl0IGRvZXMgbm90IGFsbG9jYXRlIG5ldyBtZW1vcnksIGFjY2VzcyB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYnVmZmVycywgYWx0ZXIgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBoYW5kbGluZywgb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbnkgcG90ZW50aWFsIHN0YWxlIHBvaW50ZXIgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGJ5IHN0YW5kYXJkIEtBU0FOLCB3aGVyZWFzIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBrZGFtb25kX2FwcGx5X3NjaGVtZXMoKSBpbiBEQU1PTiBjb3JlIChtbS9kYW1vbi9jb3JlLmMpIHRvIHJlc2V0IHRoZSBzY2hlbWUgcXVvdGEgY2hhcmdlIHRhcmdldCBhbmQgYWRkcmVzcyB3aGVuIGEgdGFyZ2V0IGlzIG1hcmtlZCBpbnZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYWNjZXNzaWJsZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAxN2UzODEwYjExNjA5YmZmYmQ4ODhjNTIzOTc4M2RjMGU1YjUwY2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxNjozNTo1NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDY0NWNiMzY3MDE5YWUuLjA2Y2YyYWI3ZTk3ZDcgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTMzOTMsOCAmIzQzOzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4gXHRtYXhfcmVnaW9uX3N6ID0gZGFtb25fcmVnaW9uX3N6X2xpbWl0KGMpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZjLVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbiBcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XG4tXHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSlcbiYjNDM7XHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkge1xuJiM0MztcdFx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xuJiM0MztcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxuJiM0MztcdFx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xuJiM0MztcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiBcdFx0ZGFtb3NfYXBwbHlfdGFyZ2V0KGMsIHQsIG1heF9yZWdpb25fc3opO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2RhbW9uZF9mbiYjMzQ7LAogICAgJiMzNDtkYW1vc19hcHBseV9zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19oYW5kbGVfY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGluIERBTU9OIGNvcmUgKG1tL2RhbW9uL2NvcmUuYykgdG8gcmVzZXQgdGhlIHNjaGVtZSBxdW90YSBjaGFyZ2UgdGFyZ2V0IGFuZCBhZGRyZXNzIHdoZW4gYSB0YXJnZXQgaXMgbWFya2VkIGludmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE2OjM1OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDY0NWNiMzY3MDE5YWUuLjA2Y2YyYWI3ZTk3ZDcgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTMzOTMsOCAmIzQzOzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpCiAJbWF4X3JlZ2lvbl9zeiA9IGRhbW9uX3JlZ2lvbl9zel9saW1pdChjKTsKIAltdXRleF9sb2NrKCZhbXA7Yy0mZ3Q7d2Fsa19jb250cm9sX2xvY2spOwogCWRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7Ci0JCWlmIChjLSZndDtvcHMudGFyZ2V0X3ZhbGlkICZhbXA7JmFtcDsgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkKJiM0MzsJCWlmIChjLSZndDtvcHMudGFyZ2V0X3ZhbGlkICZhbXA7JmFtcDsgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkgewomIzQzOwkJCWRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7CiYjNDM7CQkJCWlmIChzLSZndDtxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdCkKJiM0MzsJCQkJCWNvbnRpbnVlOwomIzQzOwkJCQlzLSZndDtxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMOwomIzQzOwkJCQlzLSZndDtxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDsKJiM0MzsJCQl9CiAJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJZGFtb3NfYXBwbHlfdGFyZ2V0KGMsIHQsIG1heF9yZWdpb25fc3opOwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTkzCgkJCQkJCQlvdXRwdXQ6IDY0CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIERBTU9OIENvcmUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDMzOTMgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIExldCYjMzk7cyBzdGFydCBieSBlaXRoZXIgbGV2ZXJhZ2luZyBgZ3JlcHBlcmAgKGJlY2F1c2UgSSBrbm93IGl0JiMzOTtzIHRoZXJlIGFuZCBlZmZpY2llbnQpIG9yLCBpZiB0aGF0IGlzbiYjMzk7dCByZWFkaWx5IGF2YWlsYWJsZSwgSSYjMzk7bGwgZ28gd2l0aCB0aGUgbW9yZSBzdHJhaWdodGZvcndhcmQgYHJlYWQtZmlsZWAgdG8gZ3JhYiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSBoZXJlLgoKT25jZSBJIGhhdmUgdGhlIHJlbGV2YW50IGNvZGUgaW4gZnJvbnQgb2YgbWUsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgYEtjb25maWdgIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgREFNT04mIzM5O3MgYmVoYXZpb3IuIEkgY2FuJiMzOTt0IGJlIHN1cmUgb2YgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlcyB3aXRob3V0IGNvbnNpZGVyaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIEkgd2lsbCBuZWVkIHRvIHZlcmlmeSBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBEQU1PTiBpcyBjb25maWd1cmVkLiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIG9yIGRlYnVnZ2luZyBhbnkgaXNzdWVzLiBJIG5lZWQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM4MDpcdFx0XHRcdGNvbnRpbnVlO1xuMzM4MTpcdFxuMzM4MjpcdFx0XHRpZiAoIXMtXHUwMDNld21hcmtzLmFjdGl2YXRlZClcbjMzODM6XHRcdFx0XHRjb250aW51ZTtcbjMzODQ6XHRcbjMzODU6XHRcdFx0aGFzX3NjaGVtZXNfdG9fYXBwbHkgPSB0cnVlO1xuMzM4NjpcdFxuMzM4NzpcdFx0XHRkYW1vc19hZGp1c3RfcXVvdGEoYywgcyk7XG4zMzg4Olx0XHR9XG4zMzg5Olx0XG4zMzkwOlx0XHRpZiAoIWhhc19zY2hlbWVzX3RvX2FwcGx5KVxuMzM5MTpcdFx0XHRyZXR1cm47XG4zMzkyOlx0XG4zMzkzOlx0XHRtYXhfcmVnaW9uX3N6ID0gZGFtb25fcmVnaW9uX3N6X2xpbWl0KGMpO1xuMzM5NDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZjLVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbjMzOTU6XHRcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XG4zMzk2Olx0XHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkge1xuMzM5NzpcdFx0XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XG4zMzk4Olx0XHRcdFx0XHRpZiAocy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdClcbjMzOTk6XHRcdFx0XHRcdFx0Y29udGludWU7XG4zNDAwOlx0XHRcdFx0XHRzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG4zNDAxOlx0XHRcdFx0XHRzLVx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb20gPSAwO1xuMzQwMjpcdFx0XHRcdH1cbjM0MDM6XHRcdFx0XHRjb250aW51ZTtcbjM0MDQ6XHRcdFx0fVxuMzQwNTpcdFx0XHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XG4zNDA2Olx0XHR9XG4zNDA3Olx0XG4zNDA4Olx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xuMzQwOTpcdFx0XHRpZiAodGltZV9iZWZvcmUoYy1cdTAwM2VwYXNzZWRfc2FtcGxlX2ludGVydmFscywgcy1cdTAwM2VuZXh0X2FwcGx5X3NpcykpXG4zNDEwOlx0XHRcdFx0Y29udGludWU7XG4zNDExOlx0XHRcdGRhbW9zX3dhbGtfY29tcGxldGUoYywgcyk7XG4zNDEyOlx0XHRcdGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzLCBjKTtcbjM0MTM6XHRcdFx0cy1cdTAwM2VsYXN0X2FwcGxpZWQgPSBOVUxMO1xuMzQxNDpcdFx0XHRkYW1vc190cmFjZV9zdGF0KGMsIHMpO1xuMzQxNTpcdFx0fVxuMzQxNjpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmMtXHUwMDNld2Fsa19jb250cm9sX2xvY2spO1xuMzQxNzpcdH1cbjM0MTg6XHRcbjM0MTk6XHQjaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxuMzQyMDpcdHN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcbjM0MjE6XHRcdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcbjM0MjI6XHR7XG4zNDIzOlx0XHQvKiBkYW1vbl9tZXJnZV90d29fcmVnaW9ucygpIG1heSBjcmVhdGVkIGluY29ycmVjdCBsZWZ0IHJlZ2lvbiAqL1xuMzQyNDpcdFx0V0FSTl9PTkNFKGwtXHUwMDNlYXIuc3RhcnQgXHUwMDNlPSBsLVx1MDAzZWFyLmVuZCwgXCYjMzQ7bDogJWx1LSVsdSwgcjogJWx1LSVsdVxcblwmIzM0OyxcbjM0MjU6XHRcdFx0XHRsLVx1MDAzZWFyLnN0YXJ0LCBsLVx1MDAzZWFyLmVuZCwgci1cdTAwM2Vhci5zdGFydCwgci1cdTAwM2Vhci5lbmQpO1xuMzQyNjpcdH1cbjM0Mjc6XHQjZWxzZVxuMzQyODpcdHN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcbjM0Mjk6XHRcdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREFNT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4KCioqREFNT04gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGUgcm9hZCB3aXRoIHRoaXMsIEkgbmVlZCBhIGNsZWFyZXIgcGljdHVyZSBvZiBEQU1PTiYjMzk7cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUga2VybmVsIOKAkyBzcGVjaWZpY2FsbHksIGhvdyBEQU1PTiBpcyBlbmFibGVkIGFuZCB1c2VkLiBUaGlzIG1lYW5zIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljOyB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcywgY29tcGlsYXRpb24gZmxhZ3MsIG9yIGhhcmR3YXJlIHNldHVwcyBuZWVkIHRvIGJlIGluIHBsYWNlIGZvciBEQU1PTiB0byBldmVuIGJlIGF2YWlsYWJsZT8KCkJleW9uZCB0aGUgYmFzaWMgZW5hYmxlbWVudCwgSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gZXhwb3NlcyBjb250cm9sIG92ZXIgREFNT04uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3lzZnMgZW50cmllcyBhcmUgYXZhaWxhYmxlLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIERBTU9OIGZ1bmN0aW9uYWxpdHkuIEZ1cnRoZXJtb3JlLCBJIG5lZWQgdG8ga25vdyBob3cgdmlydHVhbCBhZGRyZXNzZXMgKGB2YWRkcmApIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgKGBwYWRkcmApIGFyZSBtYW5hZ2VkIGFuZCBhY2Nlc3NlZCB3aXRoaW4gdGhlIERBTU9OIGNvbnRleHQuIFRoaXMgdW5kZXJzdGFuZGluZyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgbWVjaGFuaWNzIG9mIGhvdyBtZW1vcnkgcmVnaW9ucyBhcmUgYmVpbmcgb2JzZXJ2ZWQgYW5kIG1hbmFnZWQuIFVsdGltYXRlbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiBpcyBhY3R1YWxseSAqdXNlZCogaW4gYSBwcmFjdGljYWwgc2Vuc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdFxuICAgMzpcdG1lbnUgXCYjMzQ7RGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1wmIzM0O1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBEQU1PTlxuICAgNjpcdFx0Ym9vbCBcJiMzNDtEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcJiMzNDtcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxuICAgOTpcdFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcbiAgMTA6XHRcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgU2VlIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L21tL2RhbW9uL2luZGV4Lmh0bWwgZm9yXG4gIDEzOlx0XHQgIG1vcmUgaW5mb3JtYXRpb24uXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxuICAxNjpcdFx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xuICAxNzpcdFx0ZGVwZW5kcyBvbiBEQU1PTlxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBUaGlzIGVuYWJsZXMgYWRkaXRpb25hbCBEQU1PTiBkZWJ1Z2dpbmctcHVycG9zZSBzYW5pdHkgY2hlY2tzIGluXG4gIDIwOlx0XHQgIERBTU9OIGNvZGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGZpbmRpbmcgYnVncywgYnV0IGltcG9zZVxuICAyMTpcdFx0ICBhZGRpdGlvbmFsIG92ZXJoZWFkLiAgVGhpcyBpcyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gYmUgZW5hYmxlZCBvblxuICAyMjpcdFx0ICBvbmx5IGRldmVsb3BtZW50IGFuZCB0ZXN0IHNldHVwcy5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgREFNT05fS1VOSVRfVEVTVFxuICAyNzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vblwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDI4Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBLVU5JVD15XG4gIDI5Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cbiAgMzI6XHRcbiAgMzM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDM0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICAzNTpcdFxuICAzNjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzNzpcdFxuICAzODpcdGNvbmZpZyBEQU1PTl9WQUREUlxuICAzOTpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA0MTpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDQyOlx0XHRkZWZhdWx0IERBTU9OXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNDU6XHRcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBEQU1PTl9QQUREUlxuICA0ODpcdFx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNTA6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA1MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA1MjpcdFx0aGVscFxuICA1MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDU0Olx0XHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxuICA1NTpcdFxuICA1NjpcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG4gIDU3Olx0XHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA1OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgNjA6XHRcdGhlbHBcbiAgNjE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXG4gIDY0Olx0XHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBEQU1PTl9TWVNGU1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IFNZU0ZTXG4gIDcxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBzeXNmcyBpbnRlcmZhY2UgZm9yIERBTU9OLiAgVGhlIHVzZXIgc3BhY2UgY2FuIHVzZVxuICA3NDpcdFx0ICB0aGUgaW50ZXJmYWNlIGZvciBhcmJpdHJhcnkgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxuICA3NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICA3OTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgODA6XHRcdGhlbHBcbiAgODE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxuICA4MjpcdFxuICA4MzpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcbiAgODQ6XHRcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXG4gIDg1Olx0XG4gIDg2Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDg3Olx0XG4gIDg4Olx0Y29uZmlnIERBTU9OX1JFQ0xBSU1cbiAgODk6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbiAgOTA6XHRcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIHJlY2xhbWF0aW9uIHN1YnN5c3RlbS4gIEl0IGZpbmRzIHBhZ2VzXG4gIDkzOlx0XHQgIHRoYXQgbm90IGFjY2Vzc2VkIGZvciBhIGxvbmcgdGltZSAoY29sZCkgdXNpbmcgREFNT04gYW5kIHJlY2xhaW1cbiAgOTQ6XHRcdCAgdGhvc2UuXG4gIDk1Olx0XG4gIDk2Olx0XHQgIFRoaXMgaXMgc3VnZ2VzdGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9hY3RpdmUgYW5kIGxpZ2h0d2VpZ2h0XG4gIDk3Olx0XHQgIHJlY2xhbWF0aW9uIHVuZGVyIGxpZ2h0IG1lbW9yeSBwcmVzc3VyZSwgd2hpbGUgdGhlIHRyYWRpdGlvbmFsIHBhZ2VcbiAgOTg6XHRcdCAgc2Nhbm5pbmctYmFzZWQgcmVjbGFtYXRpb24gaXMgdXNlZCBmb3IgaGVhdnkgcHJlc3N1cmUuXG4gIDk5Olx0XG4gMTAwOlx0Y29uZmlnIERBTU9OX0xSVV9TT1JUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUwMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gREFNT04mIzM5O3MgQ29yZTogRXhhbWluaW5nIGtkYW1vbmRcX2FwcGx5XF9zY2hlbWVzIGFuZCBDaGFyZ2UgVGFyZ2V0KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgZ3V0cyBvZiBEQU1PTi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGR5bmFtaWNzIGJldHdlZW4gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIHRoZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBmdW5jdGlvbiwgYW5kIGhvdyB0aGV5IHJlbGF0ZSBhY3Jvc3MgdGhlIERBTU9OIGNvZGViYXNlLgoKRmlyc3QgdXAsIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCAqZXhhY3RseSogd2hhdCB0aGlzIHJvdXRpbmUgZG9lcyBhdCBhIGZ1bmN0aW9uYWwgbGV2ZWwuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgdGhlIGNvcmUgZW5naW5lIHRoYXQgcHV0cyB0aGUgbW9uaXRvcmluZyBhbmQgYWRhcHRhdGlvbiBsb2dpYyBpbnRvIGFjdGlvbiwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpY3MuIFdoYXQgc2NoZW1lcyBhcmUgYmVpbmcgYXBwbGllZD8gSG93IGFyZSB0aGV5IGNob3Nlbj8gSXMgaXQgYSBzaW5nbGUgcGFzcywgb3IgZG9lcyBpdCBpdGVyYXRlPyBXaGF0IGFyZSB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZXNlIHNjaGVtZXMsIGFuZCBob3cgY29tcGxleCBpcyB0aGUgbG9naWMgZW1iZWRkZWQgd2l0aGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGl0c2VsZj8gQSBkZWVwIGRpdmUgaW50byB0aGUgY29kZSBpcyByZXF1aXJlZCwgYW5kIEkgc3VzcGVjdCBhIGNsb3NlIGxvb2sgYXQgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzLCBwYXJ0aWN1bGFybHkgdGhlIHNjaGVtZSBkZWZpbml0aW9ucywgd2lsbCBiZSBjcnVjaWFsLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGdyYXBoIGFuZCBsb29rIGF0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBEQU1PTiBldmVudCBsb29wLgoKVGhlbiwgdGhlcmUmIzM5O3MgYGNoYXJnZV90YXJnZXRfZnJvbWAuIFRoZSBuYW1pbmcgaGludHMgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoICYjMzQ7Y2hhcmdpbmcmIzM0OyBhIHRhcmdldCwgYnV0IHRoZSBzcGVjaWZpY3MgYXJlIHdoZXJlIG15IGF0dGVudGlvbiBuZWVkcyB0byBnby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25zdGl0dXRlcyBhICYjMzQ7Y2hhcmdlJiMzNDsuIElzIHRoaXMgcmVsYXRlZCB0byBtZW1vcnkgcHJlc3N1cmUsIENQVSB1c2FnZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBgZnJvbWAgcGFydCBzdWdnZXN0cyB0aGUgZnVuY3Rpb24mIzM5O3MgcmVzcG9uc2liaWxpdHkgaXMgdG8gZGVyaXZlIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB0aGlzICYjMzQ7Y2hhcmdlJiMzNDsuIFdoZXJlIGRvZXMgaXQgZ2F0aGVyIGl0cyBpbnB1dHM/IFdoZXJlIGFuZCBob3cgaXMgaXQgdXNlZD8gSSYjMzk7bSBwcm9iYWJseSBnb2luZyB0byBiZSBjaGFzaW5nIGRvd24gaXRzIGRhdGEgZGVwZW5kZW5jaWVzIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0JiMzOTtzIGludm9rZWQuIEkgZXhwZWN0IHRoaXMgdG8gYmUgYSBrZXkgZWxlbWVudCBpbiBob3cgREFNT04mIzM5O3MgZmVlZGJhY2sgbG9vcCB3b3Jrcy4gRG9lcyBpdCB0YWtlIGEgc3RhdGljIHZhbHVlLCBvciBpcyBpdCBkeW5hbWljYWxseSBjb21wdXRlZCBiYXNlZCBvbiBsaXZlIHN5c3RlbSBtZXRyaWNzPyBXaGF0IGFyZSB0aGUgdW5pdHMgaW52b2x2ZWQ/CgpGaW5hbGx5LCB0aGUgY3Jvc3MtY3V0dGluZyBxdWVzdGlvbjogV2hlcmUgaXMgYGNoYXJnZV90YXJnZXRfZnJvbWAgdXRpbGl6ZWQ/IEtub3dpbmcgdGhlIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgaG93IGRpZmZlcmVudCBtb25pdG9yaW5nIHNjaGVtZXMgY29udHJpYnV0ZSB0byBEQU1PTuKAmXMgZGVjaXNpb24tbWFraW5nLiBBcmUgdGhlc2UgY2FsbHMgZGlyZWN0bHkgd2l0aGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLCBvciBhcmUgdGhleSB1c2VkIGJ5IG90aGVyIGNvbXBvbmVudHMgYXMgd2VsbD8gVW5kZXJzdGFuZGluZyB0aGUgdXNhZ2UgcGF0dGVybiBpcyBnb2luZyB0byBjbGFyaWZ5IGhvdyB0aGVzZSB0d28gcm91dGluZXMgd29yayB0b2dldGhlciB0byBhY2hpZXZlIERBTU9O4oCZcyBnb2FscywgcGFydGljdWxhcmx5IHRoZSBtZWNoYW5pc21zIGZvciB0cmlnZ2VyaW5nIGFuZCByZXNwb25kaW5nIHRvIGNoYW5nZXMgaW4gc3lzdGVtIGJlaGF2aW9yLiBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgdHdvIGVsZW1lbnRzIHdpbGwgaWxsdW1pbmF0ZSBob3cgdGhlIHN5c3RlbSBhZGFwdHMgYW5kIG9wdGltaXplcyByZXNvdXJjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhcmdlX3RhcmdldF9mcm9tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jPTczMj1zdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhICpkYW1vc19xdW90YV9pbml0KHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXG4tLVxubW0vZGFtb24vY29yZS5jLTczOC1cdHF1b3RhLVx1MDAzZWNoYXJnZWRfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmM6NzM5Olx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy03NDAtXHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTY5Nj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzIyLVx0XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBkc3QpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzIzOlx0XHRcdFx0aWYgKHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID09IGRzdF90YXJnZXQpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzI0Olx0XHRcdFx0XHRzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG5tbS9kYW1vbi9jb3JlLmMtMTcyNS1cdFx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjQ0OT1zdGF0aWMgYm9vbCBkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI0NTctXHQvKiBTa2lwIHByZXZpb3VzbHkgY2hhcmdlZCByZWdpb25zICovXG5tbS9kYW1vbi9jb3JlLmM6MjQ1ODpcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pIHtcbm1tL2RhbW9uL2NvcmUuYzoyNDU5Olx0XHRpZiAodCAhPSBxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pXG5tbS9kYW1vbi9jb3JlLmMtMjQ2MC1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQ4My1cdGlmIChyID09IGRhbW9uX2xhc3RfcmVnaW9uKHQpKSB7XG5tbS9kYW1vbi9jb3JlLmM6MjQ4NDpcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy0yNDg1LVx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjY4NT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc0NC1cdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzQ1Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XG5tbS9kYW1vbi9jb3JlLmMtMjc0Ni1cdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTMzNzE9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMzOTctXHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbm1tL2RhbW9uL2NvcmUuYzozMzk4Olx0XHRcdFx0aWYgKHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tICE9IHQpXG5tbS9kYW1vbi9jb3JlLmMtMzM5OS1cdFx0XHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi9jb3JlLmM6MzQwMDpcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy0zNDAxLVx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkxNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgaW4gdGhlIERBTU9OIENvcmUqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gREFNT04mIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIHN0YXJ0aW5nIHdpdGggYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgaW4gYG1tL2RhbW9uL2NvcmUuY2AuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgKndoZW4qIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgaW52b2tlZD8gSXQmIzM5O3MgdGhlIHBvaW50IHdoZXJlIHRoZSBEQU1PUyBzY2hlbWVzIGFyZSBhcHBsaWVkIHdpdGhpbiBga2RhbW9uZGAsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgc2l0ZXMgaXMgY3JpdGljYWwgdG8gY29tcHJlaGVuZGluZyB0aGUgb3ZlcmFsbCB3b3JrZmxvdy4gVGltZSB0byB0cmFjZSBiYWNrIGFuZCBpZGVudGlmeSBhbGwgdGhlIHBhdGhzIHRoYXQgbGVhZCB0byB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrZGFtb25kX2FwcGx5X3NjaGVtZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MzM1NT1zdGF0aWMgdm9pZCBkYW1vc190cmFjZV9zdGF0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzM3MC1cbm1tL2RhbW9uL2NvcmUuYzozMzcxOnN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxubW0vZGFtb24vY29yZS5jLTMzNzIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zOTA0PXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zOTgwLVx0XHQvKlxubW0vZGFtb24vY29yZS5jOjM5ODE6XHRcdCAqIGRvIGtkYW1vbmRfY2FsbCgpIGFuZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoKSBhZnRlclxubW0vZGFtb24vY29yZS5jLTM5ODItXHRcdCAqIGtkYW1vbmRfbWVyZ2VfcmVnaW9ucygpIGlmIHBvc3NpYmxlLCB0byByZWR1Y2Ugb3ZlcmhlYWRcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzk5NS1cdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmN0eC1cdTAwM2VzY2hlbWVzKSlcbm1tL2RhbW9uL2NvcmUuYzozOTk2Olx0XHRcdGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhjdHgpO1xubW0vZGFtb24vY29yZS5jLTM5OTctXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEQU1PTiBQYXRjaCBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmcgPSBUcnVlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIEkga25vdyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGNhbGxlZCB3aXRoaW4gYGtkYW1vbmRfZm5gIGluIGBtbS9kYW1vbi9jb3JlLmNgLiAgSSYjMzk7bSBhbHNvIGF3YXJlIG9mIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgKGBtbS9kYW1vbi9zeXNmcy5jYCkg4oCTIHdoaWNoIHRlbGxzIG1lIHVzZXJzcGFjZSBpbnRlcmFjdGlvbiBpcyBhIGZhY3Rvciwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluLy4uLmAuICBHb29kLiBOb3csIHRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBZZXMsIGl0IGNhbi4gIEkgY2FuIGNyZWF0ZSBhbmQgY29uZmlndXJlIHN5c2ZzIGF0dHJpYnV0ZXMgYW5kIHN0YXJ0L3N0b3AgREFNT04sIHNvIGl0JiMzOTtzIGEgdmFsaWQgYXR0YWNrIHN1cmZhY2UgZm9yIGZ1enppbmcuCgpOb3csIHRvIHRoZSBwYXRjaCBpdHNlbGYuICBJbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgaXQmIzM5O3MgaGFuZGxpbmcgaW52YWxpZCB0YXJnZXRzLiBQcmV2aW91c2x5LCBpdCBzaW1wbHkgY29udGludWVkIHdoZW4gYGMtJmd0O29wcy50YXJnZXRfdmFsaWQodClgIHJldHVybmVkIGZhbHNlLiAgTm93LCB0aGUgcGF0Y2ggKnJlc2V0cyogYGNoYXJnZV90YXJnZXRfZnJvbWAgYW5kIGBjaGFyZ2VfYWRkcl9mcm9tYCBvbiBhZmZlY3RlZCBzY2hlbWVzIGlmIHRoZSB0YXJnZXQgYmVjb21lcyBpbnZhbGlkLiBJdCBtYWtlcyBzZW5zZSBiZWNhdXNlIHRoZXNlIHZhcmlhYmxlcyB3ZXJlIGxpa2VseSBob2xkaW5nIHN0YWxlIHBvaW50ZXJzIHRvIGEgdGFyZ2V0IHRoYXQgbm8gbG9uZ2VyIGV4aXN0cyAocHJvY2VzcyBkaWVkLCB0YXJnZXQgaW52YWxpZGF0ZWQpLiBUaGlzIGNoYW5nZSBwcmV2ZW50cyB3YWl0aW5nL3NraXBwaW5nIG9yIHRoZSBkcmVhZGVkIHVzZS1hZnRlci1mcmVlIG9yIGEga2VybmVsIGhhbmcuCgpDYW4gdGhpcyBhY3R1YWxseSAqYmUqIGhpdCBkdXJpbmcgZXhlY3V0aW9uPyBBYnNvbHV0ZWx5LiAgYG1tL2RhbW9uL2NvcmUuY2AgaXMgcGFydCBvZiBEQU1PTi4gREFNT04gaXMgY29uZmlndXJhYmxlIGFuZCByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVS9LVk0gc2V0dXBzIHZpYSBzeXNmcyAoYENPTkZJR19EQU1PTl9TWVNGU2AsIGBDT05GSUdfREFNT05fVkFERFJgLCBgQ09ORklHX0RBTU9OX1BBRERSYCkuICBBaGEsIHNvIGl0JiMzOTtzIGEgcmVhbCBhbmQgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgcGF0aC4KCkkmIzM5O20gZm9sbG93aW5nIHRoZSBmdXp6aW5nIGluc3RydWN0aW9ucywgYW5kIHRoaXMgbmVhdGx5IGZhbGxzIGludG8gdGhlIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nPXRydWVgLiAgVGhpcyBwYXRjaCBtb2RpZmllcyBsb2dpYyBpbiBhIGNvcmUgTU0gc3Vic3lzdGVtIChtZW1vcnkgbWFuYWdlbWVudCksIGFuZCB0aGF0JiMzOTtzIGEgZGlyZWN0IGhpdCBhY2NvcmRpbmcgdG8gU2VjdGlvbiAzLgoKTmV4dCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBmdXp6aW5nIGZvY3VzIHN5bWJvbHMuICBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyBzdGF0aWMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhhdCBtZWFucyBJIG5lZWQgdG8gbG9vayBmb3IgZW50cnkgcG9pbnRzIHRvIHRoYXQgZnVuY3Rpb24uICBJJiMzOTtsbCBmb2N1cyBvbiBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYyBzeW1ib2xzIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuICBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgYXQgYGtkYW1vbmRfZm5gLCBgZGFtb25fc3RhcnRgLCBgZGFtb25fYXBwbHlfc2NoZW1lYCwgYW5kIGBkYW1vbl9jb21taXRfdGFyZ2V0c2AuIFRob3NlIGxvb2sgbGlrZSBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2Etel9dJiM0MzsgZGFtb25fJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUzNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxubW0vZGFtb24vY29yZS5jPTM1PXN0YXRpYyBib29sIF9fZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoZW51bSBkYW1vbl9vcHNfaWQgaWQpXG4tLVxubW0vZGFtb24vY29yZS5jLTQ5LSAqL1xubW0vZGFtb24vY29yZS5jOjUwOmJvb2wgZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoZW51bSBkYW1vbl9vcHNfaWQgaWQpXG5tbS9kYW1vbi9jb3JlLmMtNTEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo3MTppbnQgZGFtb25fcmVnaXN0ZXJfb3BzKHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zICpvcHMpXG5tbS9kYW1vbi9jb3JlLmMtNzIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy05Ny0gKi9cbm1tL2RhbW9uL2NvcmUuYzo5ODppbnQgZGFtb25fc2VsZWN0X29wcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGVudW0gZGFtb25fb3BzX2lkIGlkKVxubW0vZGFtb24vY29yZS5jLTk5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTEzLVxubW0vZGFtb24vY29yZS5jOjExNDpzdHJ1Y3QgZGFtb25fcHJlcCAqZGFtb25fbmV3X3ByZXAoZW51bSBkYW1vbl9wcmVwX2FjdGlvbiBhY3Rpb24pXG5tbS9kYW1vbi9jb3JlLmMtMTE1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI1LVxubW0vZGFtb24vY29yZS5jOjEyNjp2b2lkIGRhbW9uX2FkZF9wcmVwKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX3ByZXAgKnByZXApXG5tbS9kYW1vbi9jb3JlLmMtMTI3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTU5PXN0YXRpYyBib29sIGRhbW9uX2hhc19wcmVwKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE3MC1cbm1tL2RhbW9uL2NvcmUuYzoxNzE6c3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbmV3X2ZpbHRlcihlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGUsXG5tbS9kYW1vbi9jb3JlLmMtMTcyLVx0XHRib29sIG1hdGNoaW5nLCBib29sIGFsbG93KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODUtXG5tbS9kYW1vbi9jb3JlLmM6MTg2OnZvaWQgZGFtb25fYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtMTg3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTk2PXN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG4tLVxubW0vZGFtb24vY29yZS5jLTIwMC1cbm1tL2RhbW9uL2NvcmUuYzoyMDE6dm9pZCBkYW1vbl9kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTIwMi17XG4tLVxubW0vZGFtb24vY29yZS5jPTIwNz1zdGF0aWMgc3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbnRoX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9uX3Byb2JlICpwKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTgtXG5tbS9kYW1vbi9jb3JlLmM6MjE5OnN0cnVjdCBkYW1vbl9wcm9iZSAqZGFtb25fbmV3X3Byb2JlKHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtMjIwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjMyLVxubW0vZGFtb24vY29yZS5jOjIzMzp2b2lkIGRhbW9uX2FkZF9wcm9iZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUpXG5tbS9kYW1vbi9jb3JlLmMtMjM0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mzc5PXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zODgtICovXG5tbS9kYW1vbi9jb3JlLmM6Mzg5OnN0cnVjdCBkYW1vbl9yZWdpb24gKmRhbW9uX25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG5tbS9kYW1vbi9jb3JlLmMtMzkwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9NTA2PXN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxuLS1cbm1tL2RhbW9uL2NvcmUuYy01MzgtICovXG5tbS9kYW1vbi9jb3JlLmM6NTM5OmludCBkYW1vbl9zZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmFuZ2VzLFxubW0vZGFtb24vY29yZS5jLTU0MC1cdFx0dW5zaWduZWQgaW50IG5yX3JhbmdlcywgdW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxuLS1cbm1tL2RhbW9uL2NvcmUuYz03ODc9c3RhdGljIHZvaWQgZGFtb3Nfc2V0X25leHRfYXBwbHlfc2lzKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy03OTctXG5tbS9kYW1vbi9jb3JlLmM6Nzk4OnZvaWQgZGFtb25fYWRkX3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy03OTkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz04MDk9c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy04MTMtXG5tbS9kYW1vbi9jb3JlLmM6ODE0OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgxNS17XG4tLVxubW0vZGFtb24vY29yZS5jLTgzOC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4Mzk6c3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKVxubW0vZGFtb24vY29yZS5jLTg0MC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg1NS1cbm1tL2RhbW9uL2NvcmUuYzo4NTY6dm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbm1tL2RhbW9uL2NvcmUuYy04NTcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04NjMtICovXG5tbS9kYW1vbi9jb3JlLmM6ODY0OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxubW0vZGFtb24vY29yZS5jLTg2NS17XG4tLVxubW0vZGFtb24vY29yZS5jPTg3Mj1zdGF0aWMgdm9pZCBkYW1vbl9kZWxfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jLTg3Ni1cbm1tL2RhbW9uL2NvcmUuYzo4Nzc6dm9pZCBkYW1vbl9mcmVlX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg3OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg4NS1cbm1tL2RhbW9uL2NvcmUuYzo4ODY6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtODg3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODk2PXVuc2lnbmVkIGludCBkYW1vbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jLTkwMC1cbm1tL2RhbW9uL2NvcmUuYzo5MDE6c3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X2N0eCh2b2lkKVxubW0vZGFtb24vY29yZS5jLTkwMi17XG4tLVxubW0vZGFtb24vY29yZS5jPTk0Mj1zdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy05NDktXG5tbS9kYW1vbi9jb3JlLmM6OTUwOnZvaWQgZGFtb25fZGVzdHJveV9jdHgoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTk1MS17XG4tLVxubW0vZGFtb24vY29yZS5jPTEwODM9c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfaW50ZXJ2YWxzX2dvYWwoc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTExNy0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTE4OmludCBkYW1vbl9zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxubW0vZGFtb24vY29yZS5jLTExMTkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTY1LSAqL1xubW0vZGFtb24vY29yZS5jOjExNjY6dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXG5tbS9kYW1vbi9jb3JlLmMtMTE2Ny1cdFx0XHRzc2l6ZV90IG5yX3NjaGVtZXMpXG4tLVxubW0vZGFtb24vY29yZS5jPTE5Mzc9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXG4tLVxubW0vZGFtb24vY29yZS5jLTE5NjUtICovXG5tbS9kYW1vbi9jb3JlLmM6MTk2NjppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xOTY3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjA0OT1zdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDg1LSAqL1xubW0vZGFtb24vY29yZS5jOjIwODY6aW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXG5tbS9kYW1vbi9jb3JlLmMtMjA4Ny17XG4tLVxubW0vZGFtb24vY29yZS5jPTIxMzE9c3RhdGljIHZvaWQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjE1MC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMTUxOnZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpXG5tbS9kYW1vbi9jb3JlLmMtMjE1Mi17XG4tLVxubW0vZGFtb24vY29yZS5jLTIxNjUtICovXG5tbS9kYW1vbi9jb3JlLmM6MjE2Njpib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIxNjcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTgxLSAqL1xubW0vZGFtb24vY29yZS5jOjIxODI6aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0yMTgzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjIxMy0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMjE0OmludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbm1tL2RhbW9uL2NvcmUuYy0yMjE1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzkwND1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDA3NC1cbm1tL2RhbW9uL2NvcmUuYzo0MDc1OnN0cnVjdCBkYW1vbl9zeXN0ZW1fcmFtX3JhbmdlX3dhbGtfYXJnIHtcbm1tL2RhbW9uL2NvcmUuYy00MDc2LVx0Ym9vbCB3YWxrZWQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTQxMDU9c3RhdGljIGJvb2wgZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZSh1bnNpZ25lZCBsb25nICpzdGFydCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDEzNi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MTM3OmludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbm1tL2RhbW9uL2NvcmUuYy00MTM4LVx0XHRcdHVuc2lnbmVkIGxvbmcgKnN0YXJ0LCB1bnNpZ25lZCBsb25nICplbmQsXG4tLVxubW0vZGFtb24vY29yZS5jLTQxNjEtICovXG5tbS9kYW1vbi9jb3JlLmM6NDE2Mjp2b2lkIGRhbW9uX3VwZGF0ZV9yZWdpb25fYWNjZXNzX3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBhY2Nlc3NlZClcbm1tL2RhbW9uL2NvcmUuYy00MTYzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDE3Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MTczOmJvb2wgZGFtb25faW5pdGlhbGl6ZWQodm9pZClcbm1tL2RhbW9uL2NvcmUuYy00MTc0LXtcbi0tXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jLTE0LSAqL1xubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYzoxNTppbnQgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cCxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTYtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKip0YXJnZXRwKVxuLS1cbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmgtNDUtXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oOjQ2OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00Ny1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApO1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz01NT1zdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9tb25pdG9yX2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy01OS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo2MDp2b2lkIGRhbW9uX3B0ZXBfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcbm1tL2RhbW9uL29wcy1jb21tb24uYy02MS17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTk1LVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjk2OnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTk3LXtcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MTI1PXN0YXRpYyBib29sIGRhbW9uX2h1Z2V0bGJfcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTM3LVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjEzODp2b2lkIGRhbW9uX2h1Z2V0bGJfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTM5LVx0XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNjItXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTYzOmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNjQtXHRcdFx0c3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMDgtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MjA5OmludCBkYW1vbl9jb2xkX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMjEwLVx0XHRcdHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MjE4PXN0YXRpYyBib29sIGRhbW9uX2ZvbGlvX21rb2xkX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMzctXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MjM4OnZvaWQgZGFtb25fZm9saW9fbWtvbGQoc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMzkte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0yOTE9c3RhdGljIGJvb2wgZGFtb25fZm9saW9feW91bmdfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMyNy1cbm1tL2RhbW9uL29wcy1jb21tb24uYzozMjg6Ym9vbCBkYW1vbl9mb2xpb195b3VuZyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMyOS17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTUyNj1ib29sIGRhbW9zX29wc19oYXNfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNTM0LVxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjUzNTpib29sIGRhbW9uX29wc19maWx0ZXJfbWF0Y2goc3RydWN0IGRhbW9uX2ZpbHRlciAqZmlsdGVyLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTUzNi17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTk9c3RydWN0IGZvbGlvICpkYW1vbl9nZXRfbW9uaXRvcl9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbik7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTAtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTE6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjEyOnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKTtcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xMy0jaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjE0OnZvaWQgZGFtb25faHVnZXRsYl9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNS1cdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTE3PXN0YXRpYyBpbmxpbmUgdm9pZCBkYW1vbl9odWdldGxiX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uaC0yMS0jZW5kaWZcdC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL2RhbW9uL29wcy1jb21tb24uaDoyMjp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjIzOmJvb2wgZGFtb25fZm9saW9feW91bmcoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMjQtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MjU6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uaC0yNi1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjI3OmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uaC0yOC1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpO1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uaD0zMz1ib29sIGRhbW9zX29wc19oYXNfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMzQtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MzU6Ym9vbCBkYW1vbl9vcHNfZmlsdGVyX21hdGNoKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmZpbHRlciwgc3RydWN0IGZvbGlvICpmb2xpbyk7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA9REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE3LVx0XHR1bnNpZ25lZCBsb25nIG1pbixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjgxOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgyLXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz0xMDY9c3RhdGljIGJvb2wgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF9lcShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTE3OmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTgte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTk9ZXh0ZXJuIHN0cnVjdCBtdXRleCBkYW1vbl9zeXNmc19sb2NrO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTItXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTc6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVx0XHR1bnNpZ25lZCBsb25nIG1pbixcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVx0XHR1bnNpZ25lZCBsb25nIG1heCk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjEtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0yMj1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc191bF9yYW5nZV9rdHlwZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yNy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zMy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzU6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0zNz1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVzX2t0eXBlO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzgtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozOTppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDAtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDI6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQzLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD00Nj12b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MTppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD01Nz12b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NjE6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI4Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjk3OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk4LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzU2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNjUtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzY2OnN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUyOC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTg4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6ODkyOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVycyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODkzLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTAxMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTAxOS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDIwOnN0cnVjdCBkYW1vbl9zeXNmc193YXRlcm1hcmtzIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDIxLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTc0OnN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTc1LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTY3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc193ZWlnaHRzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjgzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE2ODQ6c3RydWN0IGRhbW9uX3N5c2ZzX3F1b3RhcyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTY4NS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE5NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcXVvdGFzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTU4LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE5NTk6c3RydWN0IGRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTYwLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk2Nj1zdGF0aWNcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxOTY3OnN0cnVjdCBkYW1vbl9zeXNmc19hY2Nlc3NfcGF0dGVybiAqZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm5fYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTY4LXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjI0ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19kZXN0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMjU0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyNTUtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNjc0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4NS17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4OTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcylcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjkwLXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNDctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0ODppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNDktXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDY2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNjc6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDY4LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzEwNT12b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxNTEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzE1MjppbnQgZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxNTMtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTQtXG5tbS9kYW1vbi9zeXNmcy5jOjE1OnN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb24ge1xubW0vZGFtb24vc3lzZnMuYy0xNi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz04MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25fa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy05MC1cbm1tL2RhbW9uL3N5c2ZzLmM6OTE6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbnMge1xubW0vZGFtb24vc3lzZnMuYy05Mi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0yMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcmVnaW9uc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIwOS1cbm1tL2RhbW9uL3N5c2ZzLmM6MjEwOnN0cnVjdCBkYW1vbl9zeXNmc190YXJnZXQge1xubW0vZGFtb24vc3lzZnMuYy0yMTEtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MzA3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3RhcmdldF9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTMxNi1cbm1tL2RhbW9uL3N5c2ZzLmM6MzE3OnN0cnVjdCBkYW1vbl9zeXNmc190YXJnZXRzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMzE4LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTQzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc190YXJnZXRzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtNDQ0LVxubW0vZGFtb24vc3lzZnMuYzo0NDU6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsIHtcbm1tL2RhbW9uL3N5c2ZzLmMtNDQ2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTU5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19pbnRlcnZhbHNfZ29hbF9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTYwMS1cbm1tL2RhbW9uL3N5c2ZzLmM6NjAyOnN0cnVjdCBkYW1vbl9zeXNmc19pbnRlcnZhbHMge1xubW0vZGFtb24vc3lzZnMuYy02MDMtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9NzQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ludGVydmFsc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTc1NS1cbm1tL2RhbW9uL3N5c2ZzLmM6NzU2OnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwIHtcbm1tL2RhbW9uL3N5c2ZzLmMtNzU3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTc2MT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAgKmRhbW9uX3N5c2ZzX3ByZXBfYWxsb2Modm9pZClcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTc3MS1cbm1tL2RhbW9uL3N5c2ZzLmM6NzcyOnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwX2FjdGlvbl9uYW1lIHtcbm1tL2RhbW9uL3N5c2ZzLmMtNzczLVx0Y29uc3QgZW51bSBkYW1vbl9wcmVwX2FjdGlvbiBhY3Rpb247XG4tLVxubW0vZGFtb24vc3lzZnMuYz04NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJlcF9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTg1Mi1cbm1tL2RhbW9uL3N5c2ZzLmM6ODUzOnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwcyB7XG5tbS9kYW1vbi9zeXNmcy5jLTg1NC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz05NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJlcHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy05NzEtXG5tbS9kYW1vbi9zeXNmcy5jOjk3MjpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyIHtcbm1tL2RhbW9uL3N5c2ZzLmMtOTczLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTk4MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqZGFtb25fc3lzZnNfZmlsdGVyX2FsbG9jKHZvaWQpXG4tLVxubW0vZGFtb24vc3lzZnMuYy05ODQtXG5tbS9kYW1vbi9zeXNmcy5jOjk4NTpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy5jLTk4Ni1cdGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTExNTY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTE2NS1cbm1tL2RhbW9uL3N5c2ZzLmM6MTE2NjpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVycyB7XG5tbS9kYW1vbi9zeXNmcy5jLTExNjctXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTI3NT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19maWx0ZXJzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTI4NC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTI4NTpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmUge1xubW0vZGFtb24vc3lzZnMuYy0xMjg2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xMzkxLVxubW0vZGFtb24vc3lzZnMuYzoxMzkyOnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMge1xubW0vZGFtb24vc3lzZnMuYy0xMzkzLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTE1MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTUyMC1cbm1tL2RhbW9uL3N5c2ZzLmM6MTUyMTpzdHJ1Y3QgZGFtb25fc3lzZnNfYXR0cnMge1xubW0vZGFtb24vc3lzZnMuYy0xNTIyLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTE2MTc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfYXR0cnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNjI2LVxubW0vZGFtb24vc3lzZnMuYzoxNjI3OnN0cnVjdCBkYW1vbl9zeXNmc19vcHNfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy5jLTE2MjgtXHRlbnVtIGRhbW9uX29wc19pZCBvcHNfaWQ7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xNjMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUgZGFtb25fc3lzZnNfb3BzX25hbWVzW10gPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xNjQ2LVxubW0vZGFtb24vc3lzZnMuYzoxNjQ3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0IHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTY0OC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xODkzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0xOTAyLVxubW0vZGFtb24vc3lzZnMuYzoxOTAzOnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0cyB7XG5tbS9kYW1vbi9zeXNmcy5jLTE5MDQtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjAyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIwMzEtXG5tbS9kYW1vbi9zeXNmcy5jOjIwMzI6c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQge1xubW0vZGFtb24vc3lzZnMuYy0yMDMzLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIwNjY9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfa2RhbW9uZF9ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDczCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIFNjaGVtZSBBcHBsaWNhdGlvbiBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBob3cgREFNT04gc2NoZW1lcyBhcmUgYXBwbGllZCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLiBNeSBzdGFydGluZyBwb2ludCBpcyBgbW0vZGFtb24vY29yZS5jYCwgd2hlcmUgSSBzZWUgdGhlIGZ1bmN0aW9uIGRlZmluZWQuIEZpcnN0IHRoaW5nIEkmIzM5O20gY2hlY2tpbmcgaXMgaWYgaXQmIzM5O3Mgc3RhdGljIOKAkyBhbmQgeWVwLCBsaW5lIDMzNzEgY29uZmlybXMgaXQgaXM6IGBzdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylgLiBUaGF0IHRlbGxzIG1lIGl0cyBzY29wZSBpcyBsaW1pdGVkLCB3aGljaCBjb3VsZCBpbXBhY3QgaG93IGFuZCB3aGVyZSBJIGNhbiBpbnN0cnVtZW50IG9yIG1vZGlmeSBpdHMgYmVoYXZpb3IuCgpOb3csIEkgbmVlZCBhIGJyb2FkZXIgcGljdHVyZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHJlbGF0ZWQgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93OiBob3cgZG9lcyB0aGUgc3lzdGVtICphY3R1YWxseSogYXBwbHkgc2NoZW1lcz8gSSBuZWVkIHRvIGNoZWNrIHRoZSBmb2xsb3dpbmc6IGBrZGFtb25kX2ZuYCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBgZGFtb3NfYXBwbHlfdGFyZ2V0YCwgYW5kIGBkYW1vc19hcHBseV9zY2hlbWVgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGtleSBwbGF5ZXJzLgoKQWxzbywgSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRhcmdldCB2YWxpZGF0aW9uIGJldHRlciwgc28gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIHByb2Nlc3NpbmcgZmxvdyBvZiBhbnkgc3lzZnMgY29tbWFuZHMgcmVsYXRlZCB0byBEQU1PTiBzY2hlbWVzIGFuZCB0YXJnZXQgdmFsaWRhdGlvbi4gIEkmIzM5O2xsIHdhbnQgdG8gY2hlY2sgYGRhbW9uX3N5c2ZzX2NtZF9yZXF1ZXN0YCBvciBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBgbW0vZGFtb24vc3lzZnMuY2AuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyB1c2VyIGNvbW1hbmRzIGZvciBzdGFydGluZywgc3RvcHBpbmcsIGFuZCBjb25maWd1cmluZyBEQU1PTiwgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBvZiB0aG9zZSBjb21tYW5kcy4gVGhpcyBpbmNsdWRlcyBleGFtaW5pbmcgaG93IHRhcmdldCB2YWxpZGF0aW9uIHBsYXlzIGEgcm9sZSBpbiBhY2NlcHRpbmcvcmVqZWN0aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGVfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy5jPTI2MzI9c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTI2NzEtXG5tbS9kYW1vbi9zeXNmcy5jOjI2NzI6c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbm1tL2RhbW9uL3N5c2ZzLmMtMjY3My1cdFx0Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzgyCgkJCQkJCQlvdXRwdXQ6IDE2NQoJCQkJCQkJdGhvdWdodHM6IDQ0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBEQU1PTiBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGVudHJ5IHBvaW50czogYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGBrZGFtb25kX2ZuYCwgYGRhbW9zX2FwcGx5X3NjaGVtZWAsIGBkYW1vbl9zdGFydGAsIGFuZCBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLCBhcyB0aGUgcmVhc29uaW5nIHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGUgcGF0Y2ggbW9kaWZpZXMgaXQuCgpOb3csIGxldCYjMzk7cyBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgaW4gcGxhY2UuIFRoZSBjb3JlIERBTU9OIGZyYW1ld29yayAoYERBTU9OYCksIHRoZSBzeXNmcyBpbnRlcmZhY2UgKGBEQU1PTl9TWVNGU2ApLCBhbmQgYm90aCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMgKGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmApIGFyZSBhbGwgbmVjZXNzYXJ5LiBHb29kLCB0aG9zZSBhcmUgc3RhbmRhcmQgZm9yIGEgREFNT04gc2V0dXAsIHNvIHRoYXQgc2VlbXMgcmVhc29uYWJsZS4KClRoZSByZWFzb25pbmcgaGlnaGxpZ2h0cyB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgc2NoZW1lIHF1b3RhIHRyYWNraW5nIHdpdGhpbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCB3aGVuIGEgdGFyZ2V0IGJlY29tZXMgaW52YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIHdpdGhpbiB0aGUgTU0gc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UsIHdoaWNoIGlzIGEgY29tbW9uIGZ1enogdGFyZ2V0LiBUaGlzIGlzIGFsbCBnb29kLgoKVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBsaXN0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYGtkYW1vbmRfZm5gLCBgZGFtb3NfYXBwbHlfc2NoZW1lYCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBhbmQgYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIGZ1bmN0aW9ucywgZXNwZWNpYWxseSB0aGUgZmlyc3QgdHdvLCBzaW5jZSB0aGV5IGFyZSBpbiBgbW0vZGFtb24vY29yZS5jYC4gVGhlc2UgYXJlIGFsbCBmYWlybHkgc3BlY2lmaWMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCBmb3IgcmVkdWNpbmcgbm9pc2UuCgpPa2F5LCBsZXQmIzM5O3MgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgb2YgY29uZmlncyBhbmQgc3ltYm9scyB0byBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm90aGluZyBvYnZpb3VzbHkgd3Jvbmcgb3Igb3Zlcmx5IGJyb2FkLiBUaGUgY29uZmlncyBzZWVtIGNvcnJlY3QsIGFuZCBJJiMzOTtsbCBjb25maXJtIHRoZSBzeW1ib2wgbmFtZXMgYXJlIHdoYXQgSSBleHBlY3QgaW4gdGhlIERBTU9OIGNvbnRleHQuICBJJiMzOTtsbCB2ZXJpZnkgdGhhdCB0aGVzZSBzeW1ib2xzIGFyZSBub3Qgb3Zlcmx5IGdlbmVyaWMgb3IgdXNlZCBpbiBvdGhlciBzdWJzeXN0ZW1zIHRvIGF2b2lkIHVubmVjZXNzYXJ5IG5vaXNlIGFuZCBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnQuCgpGaW5hbGx5LCBhc3N1bWluZyBhbGwgbG9va3MgZ29vZCwgSSYjMzk7bGwgcGFzcyB0aGlzIGFzc2Vzc21lbnQgYWxvbmcgdG8gdGhlIGZ1enppbmcgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZGFtb25kX2ZuJiMzNDssCiAgICAmIzM0O2RhbW9zX2FwcGx5X3NjaGVtZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX2hhbmRsZV9jbWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMga2RhbW9uZF9hcHBseV9zY2hlbWVzKCkgaW4gREFNT04gY29yZSAobW0vZGFtb24vY29yZS5jKSB0byByZXNldCB0aGUgc2NoZW1lIHF1b3RhIGNoYXJnZSB0YXJnZXQgYW5kIGFkZHJlc3Mgd2hlbiBhIHRhcmdldCBpcyBtYXJrZWQgaW52YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIGFjY2Vzc2libGUgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2RhbW9uZF9mbiYjMzQ7LAogICAgJiMzNDtkYW1vc19hcHBseV9zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19oYW5kbGVfY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGluIERBTU9OIGNvcmUgKG1tL2RhbW9uL2NvcmUuYykgdG8gcmVzZXQgdGhlIHNjaGVtZSBxdW90YSBjaGFyZ2UgdGFyZ2V0IGFuZCBhZGRyZXNzIHdoZW4gYSB0YXJnZXQgaXMgbWFya2VkIGludmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpYCBpbiBgbW0vZGFtb24vY29yZS5jYCB0byByZXNldCBgcy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb21gIHRvIGBOVUxMYCBhbmQgYHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbWAgdG8gYDBgIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgdGFyZ2V0IChgdGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlYCkuXG5cblRoaXMgY2hhbmdlIGNsZWFycyBzdGFsZSB0YXJnZXQgcmVmZXJlbmNlcyBpbiBEQU1PTiBzY2hlbWUgcXVvdGEgdHJhY2tpbmcuIEl0IGRvZXMgbm90IGFsbG9jYXRlIG5ldyBtZW1vcnksIGFjY2VzcyB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYnVmZmVycywgYWx0ZXIgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBoYW5kbGluZywgb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbnkgcG90ZW50aWFsIHN0YWxlIHBvaW50ZXIgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGJ5IHN0YW5kYXJkIEtBU0FOLCB3aGVyZWFzIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE2OjM1OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDY0NWNiMzY3MDE5YWUuLjA2Y2YyYWI3ZTk3ZDcgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTMzOTMsOCAmIzQzOzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpCiAJbWF4X3JlZ2lvbl9zeiA9IGRhbW9uX3JlZ2lvbl9zel9saW1pdChjKTsKIAltdXRleF9sb2NrKCZhbXA7Yy0mZ3Q7d2Fsa19jb250cm9sX2xvY2spOwogCWRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7Ci0JCWlmIChjLSZndDtvcHMudGFyZ2V0X3ZhbGlkICZhbXA7JmFtcDsgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkKJiM0MzsJCWlmIChjLSZndDtvcHMudGFyZ2V0X3ZhbGlkICZhbXA7JmFtcDsgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkgewomIzQzOwkJCWRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7CiYjNDM7CQkJCWlmIChzLSZndDtxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdCkKJiM0MzsJCQkJCWNvbnRpbnVlOwomIzQzOwkJCQlzLSZndDtxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMOwomIzQzOwkJCQlzLSZndDtxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDsKJiM0MzsJCQl9CiAJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJZGFtb3NfYXBwbHlfdGFyZ2V0KGMsIHQsIG1heF9yZWdpb25fc3opOwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgREFNT04gQ29yZSBDb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBpbiB0aGUgY29udGV4dCBvZiB0aGUgREFNT04gY29yZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIE15IGluaXRpYWwgbW92ZSBpcyB0byB6ZXJvIGluIG9uIGBtbS9kYW1vbi9jb3JlLmNgLiBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzMzkzLiBJ4oCZbGwgbGV2ZXJhZ2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIOKAkyB3aGF0ZXZlciYjMzk7cyBxdWlja2VzdCDigJMgdG8gZ2V0IHRoZSBjb250ZXh0IHJpZ2h0IHRoZXJlLiBJIG5lZWQgdGhhdCBpbW1lZGlhdGUgc3Vycm91bmRpbmcgY29kZSBmb3IgYSBwcm9wZXIgYXNzZXNzbWVudC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzgwOlx0XHRcdFx0Y29udGludWU7XG4zMzgxOlx0XG4zMzgyOlx0XHRcdGlmICghcy1cdTAwM2V3bWFya3MuYWN0aXZhdGVkKVxuMzM4MzpcdFx0XHRcdGNvbnRpbnVlO1xuMzM4NDpcdFxuMzM4NTpcdFx0XHRoYXNfc2NoZW1lc190b19hcHBseSA9IHRydWU7XG4zMzg2Olx0XG4zMzg3Olx0XHRcdGRhbW9zX2FkanVzdF9xdW90YShjLCBzKTtcbjMzODg6XHRcdH1cbjMzODk6XHRcbjMzOTA6XHRcdGlmICghaGFzX3NjaGVtZXNfdG9fYXBwbHkpXG4zMzkxOlx0XHRcdHJldHVybjtcbjMzOTI6XHRcbjMzOTM6XHRcdG1heF9yZWdpb25fc3ogPSBkYW1vbl9yZWdpb25fc3pfbGltaXQoYyk7XG4zMzk0Olx0XHRtdXRleF9sb2NrKFx1MDAyNmMtXHUwMDNld2Fsa19jb250cm9sX2xvY2spO1xuMzM5NTpcdFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHQsIGMpIHtcbjMzOTY6XHRcdFx0aWYgKGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCBcdTAwMjZcdTAwMjYgYy1cdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlKSB7XG4zMzk3Olx0XHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbjMzOTg6XHRcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxuMzM5OTpcdFx0XHRcdFx0XHRjb250aW51ZTtcbjM0MDA6XHRcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbjM0MDE6XHRcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG4zNDAyOlx0XHRcdFx0fVxuMzQwMzpcdFx0XHRcdGNvbnRpbnVlO1xuMzQwNDpcdFx0XHR9XG4zNDA1Olx0XHRcdGRhbW9zX2FwcGx5X3RhcmdldChjLCB0LCBtYXhfcmVnaW9uX3N6KTtcbjM0MDY6XHRcdH1cbjM0MDc6XHRcbjM0MDg6XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XG4zNDA5Olx0XHRcdGlmICh0aW1lX2JlZm9yZShjLVx1MDAzZXBhc3NlZF9zYW1wbGVfaW50ZXJ2YWxzLCBzLVx1MDAzZW5leHRfYXBwbHlfc2lzKSlcbjM0MTA6XHRcdFx0XHRjb250aW51ZTtcbjM0MTE6XHRcdFx0ZGFtb3Nfd2Fsa19jb21wbGV0ZShjLCBzKTtcbjM0MTI6XHRcdFx0ZGFtb3Nfc2V0X25leHRfYXBwbHlfc2lzKHMsIGMpO1xuMzQxMzpcdFx0XHRzLVx1MDAzZWxhc3RfYXBwbGllZCA9IE5VTEw7XG4zNDE0Olx0XHRcdGRhbW9zX3RyYWNlX3N0YXQoYywgcyk7XG4zNDE1Olx0XHR9XG4zNDE2Olx0XHRtdXRleF91bmxvY2soXHUwMDI2Yy1cdTAwM2V3YWxrX2NvbnRyb2xfbG9jayk7XG4zNDE3Olx0fVxuMzQxODpcdFxuMzQxOTpcdCNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG4zNDIwOlx0c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X21lcmdlX3R3b19yZWdpb25zKFxuMzQyMTpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxuMzQyMjpcdHtcbjM0MjM6XHRcdC8qIGRhbW9uX21lcmdlX3R3b19yZWdpb25zKCkgbWF5IGNyZWF0ZWQgaW5jb3JyZWN0IGxlZnQgcmVnaW9uICovXG4zNDI0Olx0XHRXQVJOX09OQ0UobC1cdTAwM2Vhci5zdGFydCBcdTAwM2U9IGwtXHUwMDNlYXIuZW5kLCBcJiMzNDtsOiAlbHUtJWx1LCByOiAlbHUtJWx1XFxuXCYjMzQ7LFxuMzQyNTpcdFx0XHRcdGwtXHUwMDNlYXIuc3RhcnQsIGwtXHUwMDNlYXIuZW5kLCByLVx1MDAzZWFyLnN0YXJ0LCByLVx1MDAzZWFyLmVuZCk7XG4zNDI2Olx0fVxuMzQyNzpcdCNlbHNlXG4zNDI4Olx0c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X21lcmdlX3R3b19yZWdpb25zKFxuMzQyOTpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBVc2FnZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGxpa2VseSBkZWFscyB3aXRoIHNvbWUgY2hhcmdpbmcgZnVuY3Rpb25hbGl0eS4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBXaGVyZSBkb2VzIHRoaXMgYGNoYXJnZV90YXJnZXRfZnJvbWAgZnVuY3Rpb24sIHZhcmlhYmxlLCBvciB3aGF0ZXZlciBpdCBpcywgYWN0dWFsbHkgY29tZSBpbnRvIHBsYXk/IE15IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAuIEkgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5ICphbGwqIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGViYXNlIHdoZXJlIGBjaGFyZ2VfdGFyZ2V0X2Zyb21gIGlzIHJlZmVyZW5jZWQuIEtub3dpbmcgaXRzIHVzYWdlIGNvbnRleHQgaXMgY3JpdGljYWwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBhY3R1YWwgY29kZSBtb2RpZmljYXRpb24uIFRoaXMgd2lsbCBzaG93IG1lIHRoZSB1cHN0cmVhbSBjaGFuZ2VzIGFuZCBkZXRlcm1pbmUgaWYgYW55dGhpbmcgZG93bnN0cmVhbSByZXF1aXJlcyBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoYXJnZV90YXJnZXRfZnJvbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2RhbW9uLmg9Mjc2PXN0cnVjdCBkYW1vc19xdW90YSB7XG4tLVxuaW5jbHVkZS9saW51eC9kYW1vbi5oLTMwMC1cdHVuc2lnbmVkIGxvbmcgY2hhcmdlZF9mcm9tO1xuaW5jbHVkZS9saW51eC9kYW1vbi5oOjMwMTpcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmNoYXJnZV90YXJnZXRfZnJvbTtcbmluY2x1ZGUvbGludXgvZGFtb24uaC0zMDItXHR1bnNpZ25lZCBsb25nIGNoYXJnZV9hZGRyX2Zyb207XG4tLVxubW0vZGFtb24vY29yZS5jPTczMj1zdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhICpkYW1vc19xdW90YV9pbml0KHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXG4tLVxubW0vZGFtb24vY29yZS5jLTczOC1cdHF1b3RhLVx1MDAzZWNoYXJnZWRfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmM6NzM5Olx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy03NDAtXHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTY5Nj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzIyLVx0XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBkc3QpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzIzOlx0XHRcdFx0aWYgKHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID09IGRzdF90YXJnZXQpIHtcbm1tL2RhbW9uL2NvcmUuYzoxNzI0Olx0XHRcdFx0XHRzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG5tbS9kYW1vbi9jb3JlLmMtMTcyNS1cdFx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjQ0OT1zdGF0aWMgYm9vbCBkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI0NTctXHQvKiBTa2lwIHByZXZpb3VzbHkgY2hhcmdlZCByZWdpb25zICovXG5tbS9kYW1vbi9jb3JlLmM6MjQ1ODpcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pIHtcbm1tL2RhbW9uL2NvcmUuYzoyNDU5Olx0XHRpZiAodCAhPSBxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pXG5tbS9kYW1vbi9jb3JlLmMtMjQ2MC1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQ4My1cdGlmIChyID09IGRhbW9uX2xhc3RfcmVnaW9uKHQpKSB7XG5tbS9kYW1vbi9jb3JlLmM6MjQ4NDpcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy0yNDg1LVx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjY4NT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc0NC1cdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzQ1Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XG5tbS9kYW1vbi9jb3JlLmMtMjc0Ni1cdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTMzNzE9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMzOTctXHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbm1tL2RhbW9uL2NvcmUuYzozMzk4Olx0XHRcdFx0aWYgKHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tICE9IHQpXG5tbS9kYW1vbi9jb3JlLmMtMzM5OS1cdFx0XHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi9jb3JlLmM6MzQwMDpcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYy0zNDAxLVx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMzNAoJCQkJCQkJb3V0cHV0OiAxNjgKCQkJCQkJCXRob3VnaHRzOiA2MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIERBTU9OIFF1b3RhIFRyYWNraW5nIEZpeCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgdGhlIGNvZGUgaXRlcmF0ZXMgdGhyb3VnaCBEQU1PTiB0YXJnZXRzLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCBpZiBhIHRhcmdldCBiZWNvbWVzIGludmFsaWTigJRgYy0mZ3Q7b3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZWDigJRhbmQgYHMtJmd0O3F1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgd2FzIHByZXZpb3VzbHkgcG9pbnRpbmcgdG8gaXQsIHdlJiMzOTt2ZSBnb3QgYSBwb3RlbnRpYWwgaXNzdWUuIFRoYXQgcG9pbnRlciwgaWYgbm90IGNsZWFyZWQsIGNvdWxkIGxlYWQgdG8gYSBzdGFsZSByZWZlcmVuY2UsIHNraXBwZWQgdGFyZ2V0cyBpbiBzdWJzZXF1ZW50IHdhbGtzIGR1ZSB0byBhIG5vbi1OVUxMIGNvbXBhcmlzb24sIG9yLCB3b3JzdC1jYXNlLCBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIGlmIHRoZSBpbnZhbGlkIHRhcmdldCBpcyBkZWFsbG9jYXRlZC4KClRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiB3aGVuIGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgLCB3ZSByZXNldCBgcy0mZ3Q7cXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTGAgYW5kIGBzLSZndDtxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMGAuIFRoaXMgY2xlYW5zIHVwIHRoZSBxdW90YSB0cmFja2luZyBzdGF0ZSBmb3IgdGhhdCBpbnZhbGlkIHRhcmdldC4gSSYjMzk7dmUgY2hlY2tlZCBmb3IgY29tbW9uIHBpdGZhbGxzIGFuZCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuCgpMb29raW5nIHNwZWNpZmljYWxseSBhdCBLTVNBTiBjb25jZXJucywgSSYjMzk7dmUgY29uZmlybWVkOgoKKiAgIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgaW50cm9kdWNlZC4KKiAgIE5vIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgYHMtJmd0O3F1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgZmllbGQgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTC4KKiAgIFRoZSBjb2RlIHNldHMgdmFyaWFibGVzIHRvIGV4cGxpY2l0IGNvbnN0YW50cyAoTlVMTCBhbmQgMCksIGVsaW1pbmF0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvbmNlcm5zLgoqICAgVGhpcyBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgYSBsb2dpYyBidWcsIGEgc3RhbGUgcG9pbnRlciBpc3N1ZSwgaW4gdGhlIERBTU9OIHF1b3RhIHRyYWNraW5nLgoqICAgS0FTQU4gc2hvdWxkIGNhdGNoIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMuCiogICBUaGVyZSYjMzk7cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLgoKV2UgY2FuIHJ1bGUgb3V0IGFueSBLTVNBTi1yZWxhdGVkIGlzc3Vlcy4gVGhlIHN0cnVjdHVyZSBpcyBOT1Qgc2VudCB0byB1c2VyIHNwYWNlLiBUaGVyZSYjMzk7cyBubyBjb25kaXRpb25hbCBsb2dpYyBvciBjb3B5IG9wZXJhdGlvbiBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIENvbXBsZXggc3RydWN0dXJlcyBhcmUgTk9UIGFsbG9jYXRlZCwgYW5kIHRoZXJlIGFyZSBOTyBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMuIFRoZSBsb2dpYyBpcyBzaW1wbGUgYW5kIGZpeGVzIHRoZSBzdGFsZSBwb2ludGVyIGlzc3VlLgoKSW4gc2hvcnQ6IFRoZSBwYXRjaCBjb3JyZWN0bHkgaGFuZGxlcyBzdGFsZSByZWZlcmVuY2VzIHRvIGludmFsaWQgdGFyZ2V0cyBpbiBEQU1PTiYjMzk7cyBxdW90YSB0cmFja2luZyBieSByZXNldHRpbmcgdGhlIHRyYWNraW5nIHN0YXRlLiBLQVNBTiBpcyB0aGUgcmVsZXZhbnQgdG9vbCBoZXJlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4gVGhpcyBpcyBhIGxvZ2ljIGZpeCwgbm90IGEgbWVtb3J5IHNhZmV0eSBpc3N1ZSByZXF1aXJpbmcgS01TQU4uIFRpbWUgdG8gc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2RhbW9uZF9hcHBseV9zY2hlbWVzKClgIGluIGBtbS9kYW1vbi9jb3JlLmNgIHRvIHJlc2V0IGBzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgdG8gYE5VTExgIGFuZCBgcy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tYCB0byBgMGAgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB0YXJnZXQgKGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgKS5cblxuVGhpcyBjaGFuZ2UgY2xlYXJzIHN0YWxlIHRhcmdldCByZWZlcmVuY2VzIGluIERBTU9OIHNjaGVtZSBxdW90YSB0cmFja2luZy4gSXQgZG9lcyBub3QgYWxsb2NhdGUgbmV3IG1lbW9yeSwgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBidWZmZXJzLCBhbHRlciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGhhbmRsaW5nLCBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFueSBwb3RlbnRpYWwgc3RhbGUgcG9pbnRlciBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgS0FTQU4sIHdoZXJlYXMgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2RhbW9uZF9hcHBseV9zY2hlbWVzKClgIGluIGBtbS9kYW1vbi9jb3JlLmNgIHRvIHJlc2V0IGBzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgdG8gYE5VTExgIGFuZCBgcy1cdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tYCB0byBgMGAgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB0YXJnZXQgKGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgKS5cblxuVGhpcyBjaGFuZ2UgY2xlYXJzIHN0YWxlIHRhcmdldCByZWZlcmVuY2VzIGluIERBTU9OIHNjaGVtZSBxdW90YSB0cmFja2luZy4gSXQgZG9lcyBub3QgYWxsb2NhdGUgbmV3IG1lbW9yeSwgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBidWZmZXJzLCBhbHRlciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGhhbmRsaW5nLCBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFueSBwb3RlbnRpYWwgc3RhbGUgcG9pbnRlciBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgS0FTQU4sIHdoZXJlYXMgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM1OjU2LjcwNTg5MjA4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MjY4Njg1MDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2RhbW9uZF9mblwiLFxuICAgIFwiZGFtb3NfYXBwbHlfc2NoZW1lXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fY29tbWl0X2N0eFwiLFxuICAgIFwiZGFtb25fc3lzZnNfaGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpYCBpbiBgbW0vZGFtb24vY29yZS5jYCB0byByZXNldCBgcy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tYCB0byBgTlVMTGAgYW5kIGBzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tYCB0byBgMGAgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB0YXJnZXQgKGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgKS5cXG5cXG5UaGlzIGNoYW5nZSBjbGVhcnMgc3RhbGUgdGFyZ2V0IHJlZmVyZW5jZXMgaW4gREFNT04gc2NoZW1lIHF1b3RhIHRyYWNraW5nLiBJdCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgbWVtb3J5LCBhY2Nlc3MgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGJ1ZmZlcnMsIGFsdGVyIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaGFuZGxpbmcsIG9yIGNvcHkgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gQW55IHBvdGVudGlhbCBzdGFsZSBwb2ludGVyIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBLQVNBTiwgd2hlcmVhcyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBrZGFtb25kX2FwcGx5X3NjaGVtZXMoKSBpbiBEQU1PTiBjb3JlIChtbS9kYW1vbi9jb3JlLmMpIHRvIHJlc2V0IHRoZSBzY2hlbWUgcXVvdGEgY2hhcmdlIHRhcmdldCBhbmQgYWRkcmVzcyB3aGVuIGEgdGFyZ2V0IGlzIG1hcmtlZCBpbnZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgYWNjZXNzaWJsZSB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzU6NTYuNzA1OTAzOTM5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMyNzAzOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAxNjozNTo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcXG5pbmRleCA2NDVjYjM2NzAxOWFlLi4wNmNmMmFiN2U5N2Q3IDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xcbkBAIC0zMzkzLDggKzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuIFxcdG1heF9yZWdpb25fc3ogPSBkYW1vbl9yZWdpb25fc3pfbGltaXQoYyk7XFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmMtXFx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcXG4gXFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHQsIGMpIHtcXG4tXFx0XFx0aWYgKGMtXFx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXFx1MDAyNlxcdTAwMjYgYy1cXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSlcXG4rXFx0XFx0aWYgKGMtXFx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXFx1MDAyNlxcdTAwMjYgYy1cXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkge1xcbitcXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xcbitcXHRcXHRcXHRcXHRpZiAocy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tICE9IHQpXFxuK1xcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbitcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM1OjU4LjIzOTIyOTU3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDYyNDYzMjU1MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1NZU0ZTXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrZGFtb25kX2ZuXCIsXG4gICAgXCJkYW1vc19hcHBseV9zY2hlbWVcIixcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19oYW5kbGVfY21kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMga2RhbW9uZF9hcHBseV9zY2hlbWVzKCkgaW4gREFNT04gY29yZSAobW0vZGFtb24vY29yZS5jKSB0byByZXNldCB0aGUgc2NoZW1lIHF1b3RhIGNoYXJnZSB0YXJnZXQgYW5kIGFkZHJlc3Mgd2hlbiBhIHRhcmdldCBpcyBtYXJrZWQgaW52YWxpZC4gVGhpcyBpcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIGFjY2Vzc2libGUgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE2OjM1OjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA2NDVjYjM2NzAxOWFlLi4wNmNmMmFiN2U5N2Q3IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0zMzkzLDggKzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4gXHRtYXhfcmVnaW9uX3N6ID0gZGFtb25fcmVnaW9uX3N6X2xpbWl0KGMpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZjLVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbiBcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XG4tXHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSlcbitcdFx0aWYgKGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCBcdTAwMjZcdTAwMjYgYy1cdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlKSB7XG4rXHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbitcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxuK1x0XHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbitcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG4rXHRcdFx0fVxuIFx0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdGRhbW9zX2FwcGx5X3RhcmdldChjLCB0LCBtYXhfcmVnaW9uX3N6KTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM1OjU4LjIzOTIzMDgyOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3MTYxMjIwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIERBTU9OIENvcmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBhcm91bmQgbGluZSAzMzkzIGluIGBtbS9kYW1vbi9jb3JlLmNgLiBMZXQncyBzdGFydCBieSBlaXRoZXIgbGV2ZXJhZ2luZyBgZ3JlcHBlcmAgKGJlY2F1c2UgSSBrbm93IGl0J3MgdGhlcmUgYW5kIGVmZmljaWVudCkgb3IsIGlmIHRoYXQgaXNuJ3QgcmVhZGlseSBhdmFpbGFibGUsIEknbGwgZ28gd2l0aCB0aGUgbW9yZSBzdHJhaWdodGZvcndhcmQgYHJlYWQtZmlsZWAgdG8gZ3JhYiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSBoZXJlLlxuXG5PbmNlIEkgaGF2ZSB0aGUgcmVsZXZhbnQgY29kZSBpbiBmcm9udCBvZiBtZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBgS2NvbmZpZ2Agb3B0aW9ucyB0aGF0IGluZmx1ZW5jZSBEQU1PTidzIGJlaGF2aW9yLiBJIGNhbid0IGJlIHN1cmUgb2YgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlcyB3aXRob3V0IGNvbnNpZGVyaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIEkgd2lsbCBuZWVkIHRvIHZlcmlmeSBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBEQU1PTiBpcyBjb25maWd1cmVkLiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIG9yIGRlYnVnZ2luZyBhbnkgaXNzdWVzLiBJIG5lZWQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MywiT3V0cHV0VG9rZW5zIjo2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MDcuOTU1MzU2MjAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMzgwOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjMzODE6XFx0XFxuMzM4MjpcXHRcXHRcXHRpZiAoIXMtXFx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXFxuMzM4MzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zMzg0OlxcdFxcbjMzODU6XFx0XFx0XFx0aGFzX3NjaGVtZXNfdG9fYXBwbHkgPSB0cnVlO1xcbjMzODY6XFx0XFxuMzM4NzpcXHRcXHRcXHRkYW1vc19hZGp1c3RfcXVvdGEoYywgcyk7XFxuMzM4ODpcXHRcXHR9XFxuMzM4OTpcXHRcXG4zMzkwOlxcdFxcdGlmICghaGFzX3NjaGVtZXNfdG9fYXBwbHkpXFxuMzM5MTpcXHRcXHRcXHRyZXR1cm47XFxuMzM5MjpcXHRcXG4zMzkzOlxcdFxcdG1heF9yZWdpb25fc3ogPSBkYW1vbl9yZWdpb25fc3pfbGltaXQoYyk7XFxuMzM5NDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjLVxcdTAwM2V3YWxrX2NvbnRyb2xfbG9jayk7XFxuMzM5NTpcXHRcXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodCwgYykge1xcbjMzOTY6XFx0XFx0XFx0aWYgKGMtXFx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXFx1MDAyNlxcdTAwMjYgYy1cXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSkge1xcbjMzOTc6XFx0XFx0XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcXG4zMzk4OlxcdFxcdFxcdFxcdFxcdGlmIChzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdClcXG4zMzk5OlxcdFxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM0MDA6XFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG4zNDAxOlxcdFxcdFxcdFxcdFxcdHMtXFx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb20gPSAwO1xcbjM0MDI6XFx0XFx0XFx0XFx0fVxcbjM0MDM6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzQwNDpcXHRcXHRcXHR9XFxuMzQwNTpcXHRcXHRcXHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XFxuMzQwNjpcXHRcXHR9XFxuMzQwNzpcXHRcXG4zNDA4OlxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XFxuMzQwOTpcXHRcXHRcXHRpZiAodGltZV9iZWZvcmUoYy1cXHUwMDNlcGFzc2VkX3NhbXBsZV9pbnRlcnZhbHMsIHMtXFx1MDAzZW5leHRfYXBwbHlfc2lzKSlcXG4zNDEwOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM0MTE6XFx0XFx0XFx0ZGFtb3Nfd2Fsa19jb21wbGV0ZShjLCBzKTtcXG4zNDEyOlxcdFxcdFxcdGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzLCBjKTtcXG4zNDEzOlxcdFxcdFxcdHMtXFx1MDAzZWxhc3RfYXBwbGllZCA9IE5VTEw7XFxuMzQxNDpcXHRcXHRcXHRkYW1vc190cmFjZV9zdGF0KGMsIHMpO1xcbjM0MTU6XFx0XFx0fVxcbjM0MTY6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjLVxcdTAwM2V3YWxrX2NvbnRyb2xfbG9jayk7XFxuMzQxNzpcXHR9XFxuMzQxODpcXHRcXG4zNDE5OlxcdCNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXFxuMzQyMDpcXHRzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbWVyZ2VfdHdvX3JlZ2lvbnMoXFxuMzQyMTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxcbjM0MjI6XFx0e1xcbjM0MjM6XFx0XFx0LyogZGFtb25fbWVyZ2VfdHdvX3JlZ2lvbnMoKSBtYXkgY3JlYXRlZCBpbmNvcnJlY3QgbGVmdCByZWdpb24gKi9cXG4zNDI0OlxcdFxcdFdBUk5fT05DRShsLVxcdTAwM2Vhci5zdGFydCBcXHUwMDNlPSBsLVxcdTAwM2Vhci5lbmQsIFxcXCJsOiAlbHUtJWx1LCByOiAlbHUtJWx1XFxcXG5cXFwiLFxcbjM0MjU6XFx0XFx0XFx0XFx0bC1cXHUwMDNlYXIuc3RhcnQsIGwtXFx1MDAzZWFyLmVuZCwgci1cXHUwMDNlYXIuc3RhcnQsIHItXFx1MDAzZWFyLmVuZCk7XFxuMzQyNjpcXHR9XFxuMzQyNzpcXHQjZWxzZVxcbjM0Mjg6XFx0c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X21lcmdlX3R3b19yZWdpb25zKFxcbjM0Mjk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MDcuOTU1NTU5NjczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNTEzMjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjowOC44ODA3MDE4NjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTAyMjcxNjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipEQU1PTiBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhlIHJvYWQgd2l0aCB0aGlzLCBJIG5lZWQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgREFNT04ncyBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIGFsd2F5cyB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUga2VybmVsIOKAkyBzcGVjaWZpY2FsbHksIGhvdyBEQU1PTiBpcyBlbmFibGVkIGFuZCB1c2VkLiBUaGlzIG1lYW5zIEknbSBsb29raW5nIGZvciB0aGUgY29uZGl0aW9uYWwgbG9naWM7IHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzLCBjb21waWxhdGlvbiBmbGFncywgb3IgaGFyZHdhcmUgc2V0dXBzIG5lZWQgdG8gYmUgaW4gcGxhY2UgZm9yIERBTU9OIHRvIGV2ZW4gYmUgYXZhaWxhYmxlP1xuXG5CZXlvbmQgdGhlIGJhc2ljIGVuYWJsZW1lbnQsIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gZXhwb3NlcyBjb250cm9sIG92ZXIgREFNT04uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3lzZnMgZW50cmllcyBhcmUgYXZhaWxhYmxlLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIERBTU9OIGZ1bmN0aW9uYWxpdHkuIEZ1cnRoZXJtb3JlLCBJIG5lZWQgdG8ga25vdyBob3cgdmlydHVhbCBhZGRyZXNzZXMgKGB2YWRkcmApIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgKGBwYWRkcmApIGFyZSBtYW5hZ2VkIGFuZCBhY2Nlc3NlZCB3aXRoaW4gdGhlIERBTU9OIGNvbnRleHQuIFRoaXMgdW5kZXJzdGFuZGluZyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgbWVjaGFuaWNzIG9mIGhvdyBtZW1vcnkgcmVnaW9ucyBhcmUgYmVpbmcgb2JzZXJ2ZWQgYW5kIG1hbmFnZWQuIFVsdGltYXRlbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiBpcyBhY3R1YWxseSAqdXNlZCogaW4gYSBwcmFjdGljYWwgc2Vuc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjoxMS43ODI5NzU3NTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRtZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgREFNT05cXG4gICA2OlxcdFxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBidWlsZHMgYSBmcmFtZXdvcmsgdGhhdCBhbGxvd3Mga2VybmVsIHN1YnN5c3RlbXMgdG8gbW9uaXRvclxcbiAgIDk6XFx0XFx0ICBhY2Nlc3MgZnJlcXVlbmN5IG9mIGVhY2ggbWVtb3J5IHJlZ2lvbi4gVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VmdWxcXG4gIDEwOlxcdFxcdCAgZm9yIHBlcmZvcm1hbmNlLWNlbnRyaWMgRFJBTSBsZXZlbCBtZW1vcnkgbWFuYWdlbWVudC5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWUgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvbW0vZGFtb24vaW5kZXguaHRtbCBmb3JcXG4gIDEzOlxcdFxcdCAgbW9yZSBpbmZvcm1hdGlvbi5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxcbiAgMTY6XFx0XFx0Ym9vbCBcXFwiQ2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIERBTU9OXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBhZGRpdGlvbmFsIERBTU9OIGRlYnVnZ2luZy1wdXJwb3NlIHNhbml0eSBjaGVja3MgaW5cXG4gIDIwOlxcdFxcdCAgREFNT04gY29kZS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZmluZGluZyBidWdzLCBidXQgaW1wb3NlXFxuICAyMTpcXHRcXHQgIGFkZGl0aW9uYWwgb3ZlcmhlYWQuICBUaGlzIGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byBiZSBlbmFibGVkIG9uXFxuICAyMjpcXHRcXHQgIG9ubHkgZGV2ZWxvcG1lbnQgYW5kIHRlc3Qgc2V0dXBzLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyNTpcXHRcXG4gIDI2OlxcdGNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxuICAyNzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgMjg6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBLVU5JVD15XFxuICAyOTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDM0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIERBTU9OX1ZBRERSXFxuICAzOTpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNDE6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA0MjpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDQ1OlxcdFxcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgREFNT05fUEFERFJcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNTA6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA1MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDU0OlxcdFxcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuICA1NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDU5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuICA2MDpcXHRcXHRoZWxwXFxuICA2MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiB2aXJ0dWFsIGFkZHJlc3NlcyBvcGVyYXRpb25zIEt1bml0IHRlc3Qgc3VpdGUuXFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXFxuICA2NDpcXHRcXHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA2NzpcXHRcXG4gIDY4OlxcdGNvbmZpZyBEQU1PTl9TWVNGU1xcbiAgNjk6XFx0XFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbiAgNzA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbiAgNzE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcXG4gIDc0OlxcdFxcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXFxuICA3NTpcXHRcXG4gIDc2OlxcdGNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxuICA3NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbiAgNzk6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDgwOlxcdFxcdGhlbHBcXG4gIDgxOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxcbiAgODI6XFx0XFxuICA4MzpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxcbiAgODQ6XFx0XFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgODc6XFx0XFxuICA4ODpcXHRjb25maWcgREFNT05fUkVDTEFJTVxcbiAgODk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuICA5MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCByZWNsYW1hdGlvbiBzdWJzeXN0ZW0uICBJdCBmaW5kcyBwYWdlc1xcbiAgOTM6XFx0XFx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXFxuICA5NDpcXHRcXHQgIHRob3NlLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHQgIFRoaXMgaXMgc3VnZ2VzdGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9hY3RpdmUgYW5kIGxpZ2h0d2VpZ2h0XFxuICA5NzpcXHRcXHQgIHJlY2xhbWF0aW9uIHVuZGVyIGxpZ2h0IG1lbW9yeSBwcmVzc3VyZSwgd2hpbGUgdGhlIHRyYWRpdGlvbmFsIHBhZ2VcXG4gIDk4OlxcdFxcdCAgc2Nhbm5pbmctYmFzZWQgcmVjbGFtYXRpb24gaXMgdXNlZCBmb3IgaGVhdnkgcHJlc3N1cmUuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjoxMS43ODMwNTM3ODlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0OTk4OTM2NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIERBTU9OJ3MgQ29yZTogRXhhbWluaW5nIGtkYW1vbmRcXF9hcHBseVxcX3NjaGVtZXMgYW5kIENoYXJnZSBUYXJnZXQqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgZ3V0cyBvZiBEQU1PTi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGR5bmFtaWNzIGJldHdlZW4gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIHRoZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBmdW5jdGlvbiwgYW5kIGhvdyB0aGV5IHJlbGF0ZSBhY3Jvc3MgdGhlIERBTU9OIGNvZGViYXNlLlxuXG5GaXJzdCB1cCwgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICpleGFjdGx5KiB3aGF0IHRoaXMgcm91dGluZSBkb2VzIGF0IGEgZnVuY3Rpb25hbCBsZXZlbC4gSSdtIGFzc3VtaW5nIGl0J3MgdGhlIGNvcmUgZW5naW5lIHRoYXQgcHV0cyB0aGUgbW9uaXRvcmluZyBhbmQgYWRhcHRhdGlvbiBsb2dpYyBpbnRvIGFjdGlvbiwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpY3MuIFdoYXQgc2NoZW1lcyBhcmUgYmVpbmcgYXBwbGllZD8gSG93IGFyZSB0aGV5IGNob3Nlbj8gSXMgaXQgYSBzaW5nbGUgcGFzcywgb3IgZG9lcyBpdCBpdGVyYXRlPyBXaGF0IGFyZSB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZXNlIHNjaGVtZXMsIGFuZCBob3cgY29tcGxleCBpcyB0aGUgbG9naWMgZW1iZWRkZWQgd2l0aGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGl0c2VsZj8gQSBkZWVwIGRpdmUgaW50byB0aGUgY29kZSBpcyByZXF1aXJlZCwgYW5kIEkgc3VzcGVjdCBhIGNsb3NlIGxvb2sgYXQgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzLCBwYXJ0aWN1bGFybHkgdGhlIHNjaGVtZSBkZWZpbml0aW9ucywgd2lsbCBiZSBjcnVjaWFsLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgZ3JhcGggYW5kIGxvb2sgYXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIERBTU9OIGV2ZW50IGxvb3AuXG5cblRoZW4sIHRoZXJlJ3MgYGNoYXJnZV90YXJnZXRfZnJvbWAuIFRoZSBuYW1pbmcgaGludHMgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIFwiY2hhcmdpbmdcIiBhIHRhcmdldCwgYnV0IHRoZSBzcGVjaWZpY3MgYXJlIHdoZXJlIG15IGF0dGVudGlvbiBuZWVkcyB0byBnby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25zdGl0dXRlcyBhIFwiY2hhcmdlXCIuIElzIHRoaXMgcmVsYXRlZCB0byBtZW1vcnkgcHJlc3N1cmUsIENQVSB1c2FnZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBgZnJvbWAgcGFydCBzdWdnZXN0cyB0aGUgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0eSBpcyB0byBkZXJpdmUgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoaXMgXCJjaGFyZ2VcIi4gV2hlcmUgZG9lcyBpdCBnYXRoZXIgaXRzIGlucHV0cz8gV2hlcmUgYW5kIGhvdyBpcyBpdCB1c2VkPyBJJ20gcHJvYmFibHkgZ29pbmcgdG8gYmUgY2hhc2luZyBkb3duIGl0cyBkYXRhIGRlcGVuZGVuY2llcyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzIGludm9rZWQuIEkgZXhwZWN0IHRoaXMgdG8gYmUgYSBrZXkgZWxlbWVudCBpbiBob3cgREFNT04ncyBmZWVkYmFjayBsb29wIHdvcmtzLiBEb2VzIGl0IHRha2UgYSBzdGF0aWMgdmFsdWUsIG9yIGlzIGl0IGR5bmFtaWNhbGx5IGNvbXB1dGVkIGJhc2VkIG9uIGxpdmUgc3lzdGVtIG1ldHJpY3M/IFdoYXQgYXJlIHRoZSB1bml0cyBpbnZvbHZlZD9cblxuRmluYWxseSwgdGhlIGNyb3NzLWN1dHRpbmcgcXVlc3Rpb246IFdoZXJlIGlzIGBjaGFyZ2VfdGFyZ2V0X2Zyb21gIHV0aWxpemVkPyBLbm93aW5nIHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IGhvdyBkaWZmZXJlbnQgbW9uaXRvcmluZyBzY2hlbWVzIGNvbnRyaWJ1dGUgdG8gREFNT07igJlzIGRlY2lzaW9uLW1ha2luZy4gQXJlIHRoZXNlIGNhbGxzIGRpcmVjdGx5IHdpdGhpbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgb3IgYXJlIHRoZXkgdXNlZCBieSBvdGhlciBjb21wb25lbnRzIGFzIHdlbGw/IFVuZGVyc3RhbmRpbmcgdGhlIHVzYWdlIHBhdHRlcm4gaXMgZ29pbmcgdG8gY2xhcmlmeSBob3cgdGhlc2UgdHdvIHJvdXRpbmVzIHdvcmsgdG9nZXRoZXIgdG8gYWNoaWV2ZSBEQU1PTuKAmXMgZ29hbHMsIHBhcnRpY3VsYXJseSB0aGUgbWVjaGFuaXNtcyBmb3IgdHJpZ2dlcmluZyBhbmQgcmVzcG9uZGluZyB0byBjaGFuZ2VzIGluIHN5c3RlbSBiZWhhdmlvci4gSSdtIGFudGljaXBhdGluZyB0aGF0IHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgdHdvIGVsZW1lbnRzIHdpbGwgaWxsdW1pbmF0ZSBob3cgdGhlIHN5c3RlbSBhZGFwdHMgYW5kIG9wdGltaXplcyByZXNvdXJjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MDAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjE2Ljc4MTk5MjM0M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYyMjMxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGFyZ2VfdGFyZ2V0X2Zyb21cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTczMj1zdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhICpkYW1vc19xdW90YV9pbml0KHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzM4LVxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX2Zyb20gPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3Mzk6XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XFxubW0vZGFtb24vY29yZS5jLTc0MC1cXHRxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTY5Nj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3MjItXFx0XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGRzdCkge1xcbm1tL2RhbW9uL2NvcmUuYzoxNzIzOlxcdFxcdFxcdFxcdGlmIChzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPT0gZHN0X3RhcmdldCkge1xcbm1tL2RhbW9uL2NvcmUuYzoxNzI0OlxcdFxcdFxcdFxcdFxcdHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XFxubW0vZGFtb24vY29yZS5jLTE3MjUtXFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjQ0OT1zdGF0aWMgYm9vbCBkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjQ1Ny1cXHQvKiBTa2lwIHByZXZpb3VzbHkgY2hhcmdlZCByZWdpb25zICovXFxubW0vZGFtb24vY29yZS5jOjI0NTg6XFx0aWYgKHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pIHtcXG5tbS9kYW1vbi9jb3JlLmM6MjQ1OTpcXHRcXHRpZiAodCAhPSBxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDYwLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0ODMtXFx0aWYgKHIgPT0gZGFtb25fbGFzdF9yZWdpb24odCkpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MjQ4NDpcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ4NS1cXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjY4NT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzQ0LVxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNzQ1OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSB0O1xcbm1tL2RhbW9uL2NvcmUuYy0yNzQ2LVxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cXHUwMDNlYXIuZW5kO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMzNzE9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzM5Ny1cXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xcbm1tL2RhbW9uL2NvcmUuYzozMzk4OlxcdFxcdFxcdFxcdGlmIChzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gIT0gdClcXG5tbS9kYW1vbi9jb3JlLmMtMzM5OS1cXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9jb3JlLmM6MzQwMDpcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbm1tL2RhbW9uL2NvcmUuYy0zNDAxLVxcdFxcdFxcdFxcdHMtXFx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb20gPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjoxNi44MjU2MTk4MzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAzNTY2NzM5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpbiB0aGUgREFNT04gQ29yZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gREFNT04ncyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEknbSBzdGFydGluZyB3aXRoIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGluIGBtbS9kYW1vbi9jb3JlLmNgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzICp3aGVuKiBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGludm9rZWQ/IEl0J3MgdGhlIHBvaW50IHdoZXJlIHRoZSBEQU1PUyBzY2hlbWVzIGFyZSBhcHBsaWVkIHdpdGhpbiBga2RhbW9uZGAsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgc2l0ZXMgaXMgY3JpdGljYWwgdG8gY29tcHJlaGVuZGluZyB0aGUgb3ZlcmFsbCB3b3JrZmxvdy4gVGltZSB0byB0cmFjZSBiYWNrIGFuZCBpZGVudGlmeSBhbGwgdGhlIHBhdGhzIHRoYXQgbGVhZCB0byB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTE0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MTkuODYxMjg5NDExWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUyODY5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrZGFtb25kX2FwcGx5X3NjaGVtZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTMzNTU9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2Vfc3RhdChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzM3MC1cXG5tbS9kYW1vbi9jb3JlLmM6MzM3MTpzdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcXG5tbS9kYW1vbi9jb3JlLmMtMzM3Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzkwND1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zOTgwLVxcdFxcdC8qXFxubW0vZGFtb24vY29yZS5jOjM5ODE6XFx0XFx0ICogZG8ga2RhbW9uZF9jYWxsKCkgYW5kIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGFmdGVyXFxubW0vZGFtb24vY29yZS5jLTM5ODItXFx0XFx0ICoga2RhbW9uZF9tZXJnZV9yZWdpb25zKCkgaWYgcG9zc2libGUsIHRvIHJlZHVjZSBvdmVyaGVhZFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM5OTUtXFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZjdHgtXFx1MDAzZXNjaGVtZXMpKVxcbm1tL2RhbW9uL2NvcmUuYzozOTk2OlxcdFxcdFxcdGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhjdHgpO1xcbm1tL2RhbW9uL2NvcmUuYy0zOTk3LVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MTkuOTA2ODI0MjYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNzk4NzUxODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIFBhdGNoIEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZyA9IFRydWUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIEkga25vdyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGNhbGxlZCB3aXRoaW4gYGtkYW1vbmRfZm5gIGluIGBtbS9kYW1vbi9jb3JlLmNgLiAgSSdtIGFsc28gYXdhcmUgb2YgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSAoYG1tL2RhbW9uL3N5c2ZzLmNgKSDigJMgd2hpY2ggdGVsbHMgbWUgdXNlcnNwYWNlIGludGVyYWN0aW9uIGlzIGEgZmFjdG9yLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYC4gIEdvb2QuIE5vdywgdGhlIGJpZyBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcmVhY2ggaXQuIFllcywgaXQgY2FuLiAgSSBjYW4gY3JlYXRlIGFuZCBjb25maWd1cmUgc3lzZnMgYXR0cmlidXRlcyBhbmQgc3RhcnQvc3RvcCBEQU1PTiwgc28gaXQncyBhIHZhbGlkIGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLlxuXG5Ob3csIHRvIHRoZSBwYXRjaCBpdHNlbGYuICBJbiBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgaXQncyBoYW5kbGluZyBpbnZhbGlkIHRhcmdldHMuIFByZXZpb3VzbHksIGl0IHNpbXBseSBjb250aW51ZWQgd2hlbiBgYy1cdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpYCByZXR1cm5lZCBmYWxzZS4gIE5vdywgdGhlIHBhdGNoICpyZXNldHMqIGBjaGFyZ2VfdGFyZ2V0X2Zyb21gIGFuZCBgY2hhcmdlX2FkZHJfZnJvbWAgb24gYWZmZWN0ZWQgc2NoZW1lcyBpZiB0aGUgdGFyZ2V0IGJlY29tZXMgaW52YWxpZC4gSXQgbWFrZXMgc2Vuc2UgYmVjYXVzZSB0aGVzZSB2YXJpYWJsZXMgd2VyZSBsaWtlbHkgaG9sZGluZyBzdGFsZSBwb2ludGVycyB0byBhIHRhcmdldCB0aGF0IG5vIGxvbmdlciBleGlzdHMgKHByb2Nlc3MgZGllZCwgdGFyZ2V0IGludmFsaWRhdGVkKS4gVGhpcyBjaGFuZ2UgcHJldmVudHMgd2FpdGluZy9za2lwcGluZyBvciB0aGUgZHJlYWRlZCB1c2UtYWZ0ZXItZnJlZSBvciBhIGtlcm5lbCBoYW5nLlxuXG5DYW4gdGhpcyBhY3R1YWxseSAqYmUqIGhpdCBkdXJpbmcgZXhlY3V0aW9uPyBBYnNvbHV0ZWx5LiAgYG1tL2RhbW9uL2NvcmUuY2AgaXMgcGFydCBvZiBEQU1PTi4gREFNT04gaXMgY29uZmlndXJhYmxlIGFuZCByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVS9LVk0gc2V0dXBzIHZpYSBzeXNmcyAoYENPTkZJR19EQU1PTl9TWVNGU2AsIGBDT05GSUdfREFNT05fVkFERFJgLCBgQ09ORklHX0RBTU9OX1BBRERSYCkuICBBaGEsIHNvIGl0J3MgYSByZWFsIGFuZCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBwYXRoLlxuXG5JJ20gZm9sbG93aW5nIHRoZSBmdXp6aW5nIGluc3RydWN0aW9ucywgYW5kIHRoaXMgbmVhdGx5IGZhbGxzIGludG8gdGhlIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nPXRydWVgLiAgVGhpcyBwYXRjaCBtb2RpZmllcyBsb2dpYyBpbiBhIGNvcmUgTU0gc3Vic3lzdGVtIChtZW1vcnkgbWFuYWdlbWVudCksIGFuZCB0aGF0J3MgYSBkaXJlY3QgaGl0IGFjY29yZGluZyB0byBTZWN0aW9uIDMuXG5cbk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZnV6emluZyBmb2N1cyBzeW1ib2xzLiAgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgaXMgc3RhdGljLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYW5kIHRoYXQgbWVhbnMgSSBuZWVkIHRvIGxvb2sgZm9yIGVudHJ5IHBvaW50cyB0byB0aGF0IGZ1bmN0aW9uLiAgSSdsbCBmb2N1cyBvbiBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYyBzeW1ib2xzIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuICBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgYXQgYGtkYW1vbmRfZm5gLCBgZGFtb25fc3RhcnRgLCBgZGFtb25fYXBwbHlfc2NoZW1lYCwgYW5kIGBkYW1vbl9jb21taXRfdGFyZ2V0c2AuIFRob3NlIGxvb2sgbGlrZSBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDUxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjMxLjcwNTU3ODE0OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4NDE4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpfXSsgZGFtb25fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTM0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5tbS9kYW1vbi9jb3JlLmM9MzU9c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00OS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NTA6Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG5tbS9kYW1vbi9jb3JlLmMtNTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo3MTppbnQgZGFtb25fcmVnaXN0ZXJfb3BzKHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zICpvcHMpXFxubW0vZGFtb24vY29yZS5jLTcyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6OTg6aW50IGRhbW9uX3NlbGVjdF9vcHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBlbnVtIGRhbW9uX29wc19pZCBpZClcXG5tbS9kYW1vbi9jb3JlLmMtOTkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMy1cXG5tbS9kYW1vbi9jb3JlLmM6MTE0OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcXG5tbS9kYW1vbi9jb3JlLmMtMTE1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjUtXFxubW0vZGFtb24vY29yZS5jOjEyNjp2b2lkIGRhbW9uX2FkZF9wcmVwKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX3ByZXAgKnByZXApXFxubW0vZGFtb24vY29yZS5jLTEyNy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTU5PXN0YXRpYyBib29sIGRhbW9uX2hhc19wcmVwKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTcwLVxcbm1tL2RhbW9uL2NvcmUuYzoxNzE6c3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbmV3X2ZpbHRlcihlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGUsXFxubW0vZGFtb24vY29yZS5jLTE3Mi1cXHRcXHRib29sIG1hdGNoaW5nLCBib29sIGFsbG93KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4NS1cXG5tbS9kYW1vbi9jb3JlLmM6MTg2OnZvaWQgZGFtb25fYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTE4Ny17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTk2PXN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAwLVxcbm1tL2RhbW9uL2NvcmUuYzoyMDE6dm9pZCBkYW1vbl9kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTIwNz1zdGF0aWMgc3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbnRoX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxOC1cXG5tbS9kYW1vbi9jb3JlLmM6MjE5OnN0cnVjdCBkYW1vbl9wcm9iZSAqZGFtb25fbmV3X3Byb2JlKHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTIyMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjMyLVxcbm1tL2RhbW9uL2NvcmUuYzoyMzM6dm9pZCBkYW1vbl9hZGRfcHJvYmUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlKVxcbm1tL2RhbW9uL2NvcmUuYy0yMzQte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTM3OT1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zODgtICovXFxubW0vZGFtb24vY29yZS5jOjM4OTpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbm1tL2RhbW9uL2NvcmUuYy0zOTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTUwNj1zdGF0aWMgaW50IGRhbW9uX2ZpbGxfcmVnaW9uc19ob2xlcyhzdHJ1Y3QgZGFtb25fcmVnaW9uICpmaXJzdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy01MzgtICovXFxubW0vZGFtb24vY29yZS5jOjUzOTppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcXG5tbS9kYW1vbi9jb3JlLmMtNTQwLVxcdFxcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz03ODc9c3RhdGljIHZvaWQgZGFtb3Nfc2V0X25leHRfYXBwbHlfc2lzKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc5Ny1cXG5tbS9kYW1vbi9jb3JlLmM6Nzk4OnZvaWQgZGFtb25fYWRkX3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtNzk5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz04MDk9c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTgxMy1cXG5tbS9kYW1vbi9jb3JlLmM6ODE0OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgzOC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODM5OnN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX25ld190YXJnZXQodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtODQwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NTUtXFxubW0vZGFtb24vY29yZS5jOjg1Njp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy04NTcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg2My0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODY0OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxcbm1tL2RhbW9uL2NvcmUuYy04NjUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTg3Mj1zdGF0aWMgdm9pZCBkYW1vbl9kZWxfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODc2LVxcbm1tL2RhbW9uL2NvcmUuYzo4Nzc6dm9pZCBkYW1vbl9mcmVlX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy04Nzgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg4NS1cXG5tbS9kYW1vbi9jb3JlLmM6ODg2OnZvaWQgZGFtb25fZGVzdHJveV90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy04ODcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTg5Nj11bnNpZ25lZCBpbnQgZGFtb25fbnJfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTkwMC1cXG5tbS9kYW1vbi9jb3JlLmM6OTAxOnN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld19jdHgodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtOTAyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz05NDI9c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NDktXFxubW0vZGFtb24vY29yZS5jOjk1MDp2b2lkIGRhbW9uX2Rlc3Ryb3lfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMDgzPXN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTExNy0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTExODppbnQgZGFtb25fc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcXG5tbS9kYW1vbi9jb3JlLmMtMTExOS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE2NS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTE2Njp2b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcXG5tbS9kYW1vbi9jb3JlLmMtMTE2Ny1cXHRcXHRcXHRzc2l6ZV90IG5yX3NjaGVtZXMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTkzNz1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTY1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxOTY2OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xOTY3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMDQ5PXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjA4NS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjA4NjppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcXG5tbS9kYW1vbi9jb3JlLmMtMjA4Ny17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjEzMT1zdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxNTAtICovXFxubW0vZGFtb24vY29yZS5jOjIxNTE6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcXG5tbS9kYW1vbi9jb3JlLmMtMjE1Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE2NS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjE2Njpib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yMTY3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTgxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMTgyOmludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTIxODMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIyMTMtICovXFxubW0vZGFtb24vY29yZS5jOjIyMTQ6aW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxcbm1tL2RhbW9uL2NvcmUuYy0yMjE1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zOTA0PXN0YXRpYyBpbnQga2RhbW9uZF9mbih2b2lkICpkYXRhKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQwNzQtXFxubW0vZGFtb24vY29yZS5jOjQwNzU6c3RydWN0IGRhbW9uX3N5c3RlbV9yYW1fcmFuZ2Vfd2Fsa19hcmcge1xcbm1tL2RhbW9uL2NvcmUuYy00MDc2LVxcdGJvb2wgd2Fsa2VkO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTQxMDU9c3RhdGljIGJvb2wgZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZSh1bnNpZ25lZCBsb25nICpzdGFydCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MTM2LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo0MTM3OmludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG5tbS9kYW1vbi9jb3JlLmMtNDEzOC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nICpzdGFydCwgdW5zaWduZWQgbG9uZyAqZW5kLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQxNjEtICovXFxubW0vZGFtb24vY29yZS5jOjQxNjI6dm9pZCBkYW1vbl91cGRhdGVfcmVnaW9uX2FjY2Vzc19yYXRlKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIGJvb2wgYWNjZXNzZWQpXFxubW0vZGFtb24vY29yZS5jLTQxNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQxNzItICovXFxubW0vZGFtb24vY29yZS5jOjQxNzM6Ym9vbCBkYW1vbl9pbml0aWFsaXplZCh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy00MTc0LXtcXG4tLVxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTQtICovXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYzoxNTppbnQgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cCxcXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jLTE2LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKip0YXJnZXRwKVxcbi0tXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oOjQ2OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTU1PXN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X21vbml0b3JfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNTktXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjYwOnZvaWQgZGFtb25fcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy02MS17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtOTUtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjk2OnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy05Ny17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MTI1PXN0YXRpYyBib29sIGRhbW9uX2h1Z2V0bGJfcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xMzctXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjEzODp2b2lkIGRhbW9uX2h1Z2V0bGJfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEzOS1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE2Mi1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTYzOmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTY0LVxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMDgtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjIwOTppbnQgZGFtb25fY29sZF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMTAtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTIxOD1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb19ta29sZF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0yMzctXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjIzODp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTIzOS17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM9MjkxPXN0YXRpYyBib29sIGRhbW9uX2ZvbGlvX3lvdW5nX29uZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTMyNy1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MzI4OmJvb2wgZGFtb25fZm9saW9feW91bmcoc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMzI5LXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYz01MjY9Ym9vbCBkYW1vc19vcHNfaGFzX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNTM0LVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo1MzU6Ym9vbCBkYW1vbl9vcHNfZmlsdGVyX21hdGNoKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmZpbHRlciwgc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNTM2LXtcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uaD05PXN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X21vbml0b3JfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xMC1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTE6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMjp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTEzLSNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjE0OnZvaWQgZGFtb25faHVnZXRsYl9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTUtXFx0XFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg9MTc9c3RhdGljIGlubGluZSB2b2lkIGRhbW9uX2h1Z2V0bGJfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMjEtI2VuZGlmXFx0LyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoyMjp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoyMzpib29sIGRhbW9uX2ZvbGlvX3lvdW5nKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaC0yNC1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MjU6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMjYtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6Mjc6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uaC0yOC1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTMzPWJvb2wgZGFtb3Nfb3BzX2hhc19maWx0ZXIoc3RydWN0IGRhbW9zICpzKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMzQtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjM1OmJvb2wgZGFtb25fb3BzX2ZpbHRlcl9tYXRjaChzdHJ1Y3QgZGFtb25fZmlsdGVyICpmaWx0ZXIsIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA9REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTY1PXN0YXRpYyBzc2l6ZV90IG1heF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODE6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgyLXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTEwNj1zdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMTc6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZClcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9OT1leHRlcm4gc3RydWN0IG11dGV4IGRhbW9uX3N5c2ZzX2xvY2s7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTE6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlIHtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTc6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOC1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOS1cXHRcXHR1bnNpZ25lZCBsb25nIG1heCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjA6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yMS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0yMj1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc191bF9yYW5nZV9rdHlwZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI3LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yOS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzMtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzU6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM2LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTM3PWV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZXNfa3R5cGU7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzgtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzk6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDEtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDI6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00My1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTQ2PXZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjUxOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTc9dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zNTY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNjY6c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTI4LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwMjA6c3RydWN0IGRhbW9uX3N5c2ZzX3dhdGVybWFya3Mge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDIxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTc0OnN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjgzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg1LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19xdW90YXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk1OTpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTYwLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk2Nj1zdGF0aWNcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE5Njgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZClcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4NS17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4OTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0ODppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ5LVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNjc6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zMTA1PXZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMTUyOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxNTMtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE0LVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTU6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbiB7XFxubW0vZGFtb24vc3lzZnMuYy0xNi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz04MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25fa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTkwLVxcbm1tL2RhbW9uL3N5c2ZzLmM6OTE6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTItXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIwOS1cXG5tbS9kYW1vbi9zeXNmcy5jOjIxMDpzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0IHtcXG5tbS9kYW1vbi9zeXNmcy5jLTIxMS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0zMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0X2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0zMTYtXFxubW0vZGFtb24vc3lzZnMuYzozMTc6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMzE4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTQzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc190YXJnZXRzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy00NDQtXFxubW0vZGFtb24vc3lzZnMuYzo0NDU6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTQ0Ni1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz01OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2dvYWxfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTYwMS1cXG5tbS9kYW1vbi9zeXNmcy5jOjYwMjpzdHJ1Y3QgZGFtb25fc3lzZnNfaW50ZXJ2YWxzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTYwMy1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz03NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy03NTUtXFxubW0vZGFtb24vc3lzZnMuYzo3NTY6c3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAge1xcbm1tL2RhbW9uL3N5c2ZzLmMtNzU3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTc2MT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAgKmRhbW9uX3N5c2ZzX3ByZXBfYWxsb2Modm9pZClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtNzcxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6NzcyOnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwX2FjdGlvbl9uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTc3My1cXHRjb25zdCBlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9ODQzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3ByZXBfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTg1Mi1cXG5tbS9kYW1vbi9zeXNmcy5jOjg1MzpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtODU0LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTk2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19wcmVwc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtOTcxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6OTcyOnN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTczLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTk4MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqZGFtb25fc3lzZnNfZmlsdGVyX2FsbG9jKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTk4NC1cXG5tbS9kYW1vbi9zeXNmcy5jOjk4NTpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMuYy05ODYtXFx0ZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTE2NS1cXG5tbS9kYW1vbi9zeXNmcy5jOjExNjY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTE2Ny1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMjc1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEyODQtXFxubW0vZGFtb24vc3lzZnMuYzoxMjg1OnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSB7XFxubW0vZGFtb24vc3lzZnMuYy0xMjg2LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEzOTEtXFxubW0vZGFtb24vc3lzZnMuYzoxMzkyOnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTM5My1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3Byb2Jlc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTUyMC1cXG5tbS9kYW1vbi9zeXNmcy5jOjE1MjE6c3RydWN0IGRhbW9uX3N5c2ZzX2F0dHJzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE1MjItXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTYxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19hdHRyc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTYyNi1cXG5tbS9kYW1vbi9zeXNmcy5jOjE2Mjc6c3RydWN0IGRhbW9uX3N5c2ZzX29wc19uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE2MjgtXFx0ZW51bSBkYW1vbl9vcHNfaWQgb3BzX2lkO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNjMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUgZGFtb25fc3lzZnNfb3BzX25hbWVzW10gPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE2NDYtXFxubW0vZGFtb24vc3lzZnMuYzoxNjQ3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0IHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE2NDgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTg5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0X2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xOTAyLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTkwMzpzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTkwNC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMDIyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMDMxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjAzMjpzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCB7XFxubW0vZGFtb24vc3lzZnMuYy0yMDMzLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTIwNjY9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfa2RhbW9uZF9ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjozMS43ODk0MjUxNjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY4MTIxMTQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBTY2hlbWUgQXBwbGljYXRpb24gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIGhvdyBEQU1PTiBzY2hlbWVzIGFyZSBhcHBsaWVkLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AuIE15IHN0YXJ0aW5nIHBvaW50IGlzIGBtbS9kYW1vbi9jb3JlLmNgLCB3aGVyZSBJIHNlZSB0aGUgZnVuY3Rpb24gZGVmaW5lZC4gRmlyc3QgdGhpbmcgSSdtIGNoZWNraW5nIGlzIGlmIGl0J3Mgc3RhdGljIOKAkyBhbmQgeWVwLCBsaW5lIDMzNzEgY29uZmlybXMgaXQgaXM6IGBzdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylgLiBUaGF0IHRlbGxzIG1lIGl0cyBzY29wZSBpcyBsaW1pdGVkLCB3aGljaCBjb3VsZCBpbXBhY3QgaG93IGFuZCB3aGVyZSBJIGNhbiBpbnN0cnVtZW50IG9yIG1vZGlmeSBpdHMgYmVoYXZpb3IuXG5cbk5vdywgSSBuZWVkIGEgYnJvYWRlciBwaWN0dXJlLiBJJ20gZ29pbmcgdG8gbG9vayBhdCByZWxhdGVkIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdzogaG93IGRvZXMgdGhlIHN5c3RlbSAqYWN0dWFsbHkqIGFwcGx5IHNjaGVtZXM/IEkgbmVlZCB0byBjaGVjayB0aGUgZm9sbG93aW5nOiBga2RhbW9uZF9mbmAsIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzYCwgYGRhbW9zX2FwcGx5X3RhcmdldGAsIGFuZCBgZGFtb3NfYXBwbHlfc2NoZW1lYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBrZXkgcGxheWVycy5cblxuQWxzbywgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGFyZ2V0IHZhbGlkYXRpb24gYmV0dGVyLCBzbyBJJ20gZ29pbmcgdG8gZm9sbG93IHRoZSBwcm9jZXNzaW5nIGZsb3cgb2YgYW55IHN5c2ZzIGNvbW1hbmRzIHJlbGF0ZWQgdG8gREFNT04gc2NoZW1lcyBhbmQgdGFyZ2V0IHZhbGlkYXRpb24uICBJJ2xsIHdhbnQgdG8gY2hlY2sgYGRhbW9uX3N5c2ZzX2NtZF9yZXF1ZXN0YCBvciBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBgbW0vZGFtb24vc3lzZnMuY2AuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyB1c2VyIGNvbW1hbmRzIGZvciBzdGFydGluZywgc3RvcHBpbmcsIGFuZCBjb25maWd1cmluZyBEQU1PTiwgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBvZiB0aG9zZSBjb21tYW5kcy4gVGhpcyBpbmNsdWRlcyBleGFtaW5pbmcgaG93IHRhcmdldCB2YWxpZGF0aW9uIHBsYXlzIGEgcm9sZSBpbiBhY2NlcHRpbmcvcmVqZWN0aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNzMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6MzUuNDcwNjM5ODMzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDQ1Njg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGF0ZV9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9zeXNmcy5jPTI2MzI9c3RhdGljIGludCBkYW1vbl9zeXNmc19oYW5kbGVfY21kKGVudW0gZGFtb25fc3lzZnNfY21kIGNtZCxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjY3MS1cXG5tbS9kYW1vbi9zeXNmcy5jOjI2NzI6c3RhdGljIHNzaXplX3Qgc3RhdGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG5tbS9kYW1vbi9zeXNmcy5jLTI2NzMtXFx0XFx0Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjM1LjU0MTEwMjgyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NzgyNDY2MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGVudHJ5IHBvaW50czogYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGBrZGFtb25kX2ZuYCwgYGRhbW9zX2FwcGx5X3NjaGVtZWAsIGBkYW1vbl9zdGFydGAsIGFuZCBgZGFtb25fc3lzZnNfaGFuZGxlX2NtZGAuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGFzIHRoZSByZWFzb25pbmcgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHRoZSBwYXRjaCBtb2RpZmllcyBpdC5cblxuTm93LCBsZXQncyBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgaW4gcGxhY2UuIFRoZSBjb3JlIERBTU9OIGZyYW1ld29yayAoYERBTU9OYCksIHRoZSBzeXNmcyBpbnRlcmZhY2UgKGBEQU1PTl9TWVNGU2ApLCBhbmQgYm90aCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMgKGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmApIGFyZSBhbGwgbmVjZXNzYXJ5LiBHb29kLCB0aG9zZSBhcmUgc3RhbmRhcmQgZm9yIGEgREFNT04gc2V0dXAsIHNvIHRoYXQgc2VlbXMgcmVhc29uYWJsZS5cblxuVGhlIHJlYXNvbmluZyBoaWdobGlnaHRzIHRoYXQgdGhlIHBhdGNoIGFkZHJlc3NlcyBzY2hlbWUgcXVvdGEgdHJhY2tpbmcgd2l0aGluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIHdoZW4gYSB0YXJnZXQgYmVjb21lcyBpbnZhbGlkLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgd2l0aGluIHRoZSBNTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSwgd2hpY2ggaXMgYSBjb21tb24gZnV6eiB0YXJnZXQuIFRoaXMgaXMgYWxsIGdvb2QuXG5cblRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgbGlzdGVkLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYGtkYW1vbmRfZm5gLCBgZGFtb3NfYXBwbHlfc2NoZW1lYCwgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBhbmQgYGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWRgIGZ1bmN0aW9ucywgZXNwZWNpYWxseSB0aGUgZmlyc3QgdHdvLCBzaW5jZSB0aGV5IGFyZSBpbiBgbW0vZGFtb24vY29yZS5jYC4gVGhlc2UgYXJlIGFsbCBmYWlybHkgc3BlY2lmaWMgdG8gdGhlIERBTU9OIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCBmb3IgcmVkdWNpbmcgbm9pc2UuXG5cbk9rYXksIGxldCdzIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIG9mIGNvbmZpZ3MgYW5kIHN5bWJvbHMgdG8gbWFrZSBzdXJlIHRoZXJlJ3Mgbm90aGluZyBvYnZpb3VzbHkgd3Jvbmcgb3Igb3Zlcmx5IGJyb2FkLiBUaGUgY29uZmlncyBzZWVtIGNvcnJlY3QsIGFuZCBJJ2xsIGNvbmZpcm0gdGhlIHN5bWJvbCBuYW1lcyBhcmUgd2hhdCBJIGV4cGVjdCBpbiB0aGUgREFNT04gY29udGV4dC4gIEknbGwgdmVyaWZ5IHRoYXQgdGhlc2Ugc3ltYm9scyBhcmUgbm90IG92ZXJseSBnZW5lcmljIG9yIHVzZWQgaW4gb3RoZXIgc3Vic3lzdGVtcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBub2lzZSBhbmQgZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LlxuXG5GaW5hbGx5LCBhc3N1bWluZyBhbGwgbG9va3MgZ29vZCwgSSdsbCBwYXNzIHRoaXMgYXNzZXNzbWVudCBhbG9uZyB0byB0aGUgZnV6emluZyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzgyLCJPdXRwdXRUb2tlbnMiOjE2NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjo0NC4zMjM1NzIyMjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE5Nzg3NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2RhbW9uZF9mblwiLFxuICAgIFwiZGFtb3NfYXBwbHlfc2NoZW1lXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fY29tbWl0X2N0eFwiLFxuICAgIFwiZGFtb25fc3lzZnNfaGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGluIERBTU9OIGNvcmUgKG1tL2RhbW9uL2NvcmUuYykgdG8gcmVzZXQgdGhlIHNjaGVtZSBxdW90YSBjaGFyZ2UgdGFyZ2V0IGFuZCBhZGRyZXNzIHdoZW4gYSB0YXJnZXQgaXMgbWFya2VkIGludmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2RhbW9uZF9mblwiLFxuICAgIFwiZGFtb3NfYXBwbHlfc2NoZW1lXCIsXG4gICAgXCJkYW1vbl9zdGFydFwiLFxuICAgIFwiZGFtb25fY29tbWl0X2N0eFwiLFxuICAgIFwiZGFtb25fc3lzZnNfaGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpIGluIERBTU9OIGNvcmUgKG1tL2RhbW9uL2NvcmUuYykgdG8gcmVzZXQgdGhlIHNjaGVtZSBxdW90YSBjaGFyZ2UgdGFyZ2V0IGFuZCBhZGRyZXNzIHdoZW4gYSB0YXJnZXQgaXMgbWFya2VkIGludmFsaWQuIFRoaXMgaXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBhY2Nlc3NpYmxlIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjo0NC40ODU1NTk3NjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDg5MDAyODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MzY6NDQuNDg1OTkwNzEzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg0ODg1NjY5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBrZGFtb25kX2FwcGx5X3NjaGVtZXMoKWAgaW4gYG1tL2RhbW9uL2NvcmUuY2AgdG8gcmVzZXQgYHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgdG8gYE5VTExgIGFuZCBgcy1cXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbWAgdG8gYDBgIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgdGFyZ2V0IChgdGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlYCkuXFxuXFxuVGhpcyBjaGFuZ2UgY2xlYXJzIHN0YWxlIHRhcmdldCByZWZlcmVuY2VzIGluIERBTU9OIHNjaGVtZSBxdW90YSB0cmFja2luZy4gSXQgZG9lcyBub3QgYWxsb2NhdGUgbmV3IG1lbW9yeSwgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBidWZmZXJzLCBhbHRlciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGhhbmRsaW5nLCBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UuIEFueSBwb3RlbnRpYWwgc3RhbGUgcG9pbnRlciBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgS0FTQU4sIHdoZXJlYXMgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDE3ZTM4MTBiMTE2MDliZmZiZDg4OGM1MjM5NzgzZGMwZTViNTBjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE2OjM1OjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA2NDVjYjM2NzAxOWFlLi4wNmNmMmFiN2U5N2Q3IDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0zMzkzLDggKzMzOTMsMTUgQEAgc3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4gXHRtYXhfcmVnaW9uX3N6ID0gZGFtb25fcmVnaW9uX3N6X2xpbWl0KGMpO1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZjLVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbiBcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XG4tXHRcdGlmIChjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQgXHUwMDI2XHUwMDI2IGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCh0KSA9PSBmYWxzZSlcbitcdFx0aWYgKGMtXHUwMDNlb3BzLnRhcmdldF92YWxpZCBcdTAwMjZcdTAwMjYgYy1cdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlKSB7XG4rXHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbitcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxuK1x0XHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbitcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG4rXHRcdFx0fVxuIFx0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4gXHRcdGRhbW9zX2FwcGx5X3RhcmdldChjLCB0LCBtYXhfcmVnaW9uX3N6KTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjQ0LjQ4NTk5MjA5M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1ODg5NzEwNzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgREFNT04gQ29yZSBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggaW4gdGhlIGNvbnRleHQgb2YgdGhlIERBTU9OIGNvcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBpbml0aWFsIG1vdmUgaXMgdG8gemVybyBpbiBvbiBgbW0vZGFtb24vY29yZS5jYC4gSSdtIHRoaW5raW5nIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzMzkzLiBJ4oCZbGwgbGV2ZXJhZ2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIOKAkyB3aGF0ZXZlcidzIHF1aWNrZXN0IOKAkyB0byBnZXQgdGhlIGNvbnRleHQgcmlnaHQgdGhlcmUuIEkgbmVlZCB0aGF0IGltbWVkaWF0ZSBzdXJyb3VuZGluZyBjb2RlIGZvciBhIHByb3BlciBhc3Nlc3NtZW50LiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjUwLjM3NTcwNzM1MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTkzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzODA6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzM4MTpcXHRcXG4zMzgyOlxcdFxcdFxcdGlmICghcy1cXHUwMDNld21hcmtzLmFjdGl2YXRlZClcXG4zMzgzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjMzODQ6XFx0XFxuMzM4NTpcXHRcXHRcXHRoYXNfc2NoZW1lc190b19hcHBseSA9IHRydWU7XFxuMzM4NjpcXHRcXG4zMzg3OlxcdFxcdFxcdGRhbW9zX2FkanVzdF9xdW90YShjLCBzKTtcXG4zMzg4OlxcdFxcdH1cXG4zMzg5OlxcdFxcbjMzOTA6XFx0XFx0aWYgKCFoYXNfc2NoZW1lc190b19hcHBseSlcXG4zMzkxOlxcdFxcdFxcdHJldHVybjtcXG4zMzkyOlxcdFxcbjMzOTM6XFx0XFx0bWF4X3JlZ2lvbl9zeiA9IGRhbW9uX3JlZ2lvbl9zel9saW1pdChjKTtcXG4zMzk0OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmMtXFx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcXG4zMzk1OlxcdFxcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0LCBjKSB7XFxuMzM5NjpcXHRcXHRcXHRpZiAoYy1cXHUwMDNlb3BzLnRhcmdldF92YWxpZCBcXHUwMDI2XFx1MDAyNiBjLVxcdTAwM2VvcHMudGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlKSB7XFxuMzM5NzpcXHRcXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xcbjMzOTg6XFx0XFx0XFx0XFx0XFx0aWYgKHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxcbjMzOTk6XFx0XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzQwMDpcXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbjM0MDE6XFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuMzQwMjpcXHRcXHRcXHRcXHR9XFxuMzQwMzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zNDA0OlxcdFxcdFxcdH1cXG4zNDA1OlxcdFxcdFxcdGRhbW9zX2FwcGx5X3RhcmdldChjLCB0LCBtYXhfcmVnaW9uX3N6KTtcXG4zNDA2OlxcdFxcdH1cXG4zNDA3OlxcdFxcbjM0MDg6XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcXG4zNDA5OlxcdFxcdFxcdGlmICh0aW1lX2JlZm9yZShjLVxcdTAwM2VwYXNzZWRfc2FtcGxlX2ludGVydmFscywgcy1cXHUwMDNlbmV4dF9hcHBseV9zaXMpKVxcbjM0MTA6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzQxMTpcXHRcXHRcXHRkYW1vc193YWxrX2NvbXBsZXRlKGMsIHMpO1xcbjM0MTI6XFx0XFx0XFx0ZGFtb3Nfc2V0X25leHRfYXBwbHlfc2lzKHMsIGMpO1xcbjM0MTM6XFx0XFx0XFx0cy1cXHUwMDNlbGFzdF9hcHBsaWVkID0gTlVMTDtcXG4zNDE0OlxcdFxcdFxcdGRhbW9zX3RyYWNlX3N0YXQoYywgcyk7XFxuMzQxNTpcXHRcXHR9XFxuMzQxNjpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmMtXFx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcXG4zNDE3OlxcdH1cXG4zNDE4OlxcdFxcbjM0MTk6XFx0I2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG4zNDIwOlxcdHN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9tZXJnZV90d29fcmVnaW9ucyhcXG4zNDIxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKmwsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIpXFxuMzQyMjpcXHR7XFxuMzQyMzpcXHRcXHQvKiBkYW1vbl9tZXJnZV90d29fcmVnaW9ucygpIG1heSBjcmVhdGVkIGluY29ycmVjdCBsZWZ0IHJlZ2lvbiAqL1xcbjM0MjQ6XFx0XFx0V0FSTl9PTkNFKGwtXFx1MDAzZWFyLnN0YXJ0IFxcdTAwM2U9IGwtXFx1MDAzZWFyLmVuZCwgXFxcImw6ICVsdS0lbHUsIHI6ICVsdS0lbHVcXFxcblxcXCIsXFxuMzQyNTpcXHRcXHRcXHRcXHRsLVxcdTAwM2Vhci5zdGFydCwgbC1cXHUwMDNlYXIuZW5kLCByLVxcdTAwM2Vhci5zdGFydCwgci1cXHUwMDNlYXIuZW5kKTtcXG4zNDI2OlxcdH1cXG4zNDI3OlxcdCNlbHNlXFxuMzQyODpcXHRzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbWVyZ2VfdHdvX3JlZ2lvbnMoXFxuMzQyOTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjo1MC4zNzYwNjk2NDFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzkwNzQ3Mzc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBsaWtlbHkgZGVhbHMgd2l0aCBzb21lIGNoYXJnaW5nIGZ1bmN0aW9uYWxpdHkuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4gV2hlcmUgZG9lcyB0aGlzIGBjaGFyZ2VfdGFyZ2V0X2Zyb21gIGZ1bmN0aW9uLCB2YXJpYWJsZSwgb3Igd2hhdGV2ZXIgaXQgaXMsIGFjdHVhbGx5IGNvbWUgaW50byBwbGF5PyBNeSBpbnN0aW5jdCBpcyB0byB1c2UgYGdyZXBgLiBJIHdhbnQgdG8gcXVpY2tseSBpZGVudGlmeSAqYWxsKiB0aGUgcGxhY2VzIGluIHRoZSBjb2RlYmFzZSB3aGVyZSBgY2hhcmdlX3RhcmdldF9mcm9tYCBpcyByZWZlcmVuY2VkLiBLbm93aW5nIGl0cyB1c2FnZSBjb250ZXh0IGlzIGNyaXRpY2FsIGJlZm9yZSBJIGRpdmUgaW50byB0aGUgYWN0dWFsIGNvZGUgbW9kaWZpY2F0aW9uLiBUaGlzIHdpbGwgc2hvdyBtZSB0aGUgdXBzdHJlYW0gY2hhbmdlcyBhbmQgZGV0ZXJtaW5lIGlmIGFueXRoaW5nIGRvd25zdHJlYW0gcmVxdWlyZXMgYXR0ZW50aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQxLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjozNjo1NC4yODM1NDY0MDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTIwNTMyNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hhcmdlX3RhcmdldF9mcm9tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZGFtb24uaD0yNzY9c3RydWN0IGRhbW9zX3F1b3RhIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGFtb24uaC0zMDAtXFx0dW5zaWduZWQgbG9uZyBjaGFyZ2VkX2Zyb207XFxuaW5jbHVkZS9saW51eC9kYW1vbi5oOjMwMTpcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpjaGFyZ2VfdGFyZ2V0X2Zyb207XFxuaW5jbHVkZS9saW51eC9kYW1vbi5oLTMwMi1cXHR1bnNpZ25lZCBsb25nIGNoYXJnZV9hZGRyX2Zyb207XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NzMyPXN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MzgtXFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSA9IDA7XFxubW0vZGFtb24vY29yZS5jOjczOTpcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmMtNzQwLVxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNjk2PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldHMoXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTcyMi1cXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgZHN0KSB7XFxubW0vZGFtb24vY29yZS5jOjE3MjM6XFx0XFx0XFx0XFx0aWYgKHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9PSBkc3RfdGFyZ2V0KSB7XFxubW0vZGFtb24vY29yZS5jOjE3MjQ6XFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmMtMTcyNS1cXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNDQ5PXN0YXRpYyBib29sIGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24oc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNDU3LVxcdC8qIFNraXAgcHJldmlvdXNseSBjaGFyZ2VkIHJlZ2lvbnMgKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjQ1ODpcXHRpZiAocXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNDU5OlxcdFxcdGlmICh0ICE9IHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pXFxubW0vZGFtb24vY29yZS5jLTI0NjAtXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjQ4My1cXHRpZiAociA9PSBkYW1vbl9sYXN0X3JlZ2lvbih0KSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNDg0OlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbm1tL2RhbW9uL2NvcmUuYy0yNDg1LVxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNjg1PXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3NDQtXFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKSB7XFxubW0vZGFtb24vY29yZS5jOjI3NDU6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XFxubW0vZGFtb24vY29yZS5jLTI3NDYtXFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV9hZGRyX2Zyb20gPSByLVxcdTAwM2Vhci5lbmQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzM3MT1zdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMzk3LVxcdFxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XFxubW0vZGFtb24vY29yZS5jOjMzOTg6XFx0XFx0XFx0XFx0aWYgKHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSAhPSB0KVxcbm1tL2RhbW9uL2NvcmUuYy0zMzk5LVxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL2RhbW9uL2NvcmUuYzozNDAwOlxcdFxcdFxcdFxcdHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XFxubW0vZGFtb24vY29yZS5jLTM0MDEtXFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM2OjU3LjI5NTYwNDkyMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Njc4OTI0OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBRdW90YSBUcmFja2luZyBGaXgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLCB0aGUgY29kZSBpdGVyYXRlcyB0aHJvdWdoIERBTU9OIHRhcmdldHMuIFRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IGlmIGEgdGFyZ2V0IGJlY29tZXMgaW52YWxpZOKAlGBjLVx1MDAzZW9wcy50YXJnZXRfdmFsaWQodCkgPT0gZmFsc2Vg4oCUYW5kIGBzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgd2FzIHByZXZpb3VzbHkgcG9pbnRpbmcgdG8gaXQsIHdlJ3ZlIGdvdCBhIHBvdGVudGlhbCBpc3N1ZS4gVGhhdCBwb2ludGVyLCBpZiBub3QgY2xlYXJlZCwgY291bGQgbGVhZCB0byBhIHN0YWxlIHJlZmVyZW5jZSwgc2tpcHBlZCB0YXJnZXRzIGluIHN1YnNlcXVlbnQgd2Fsa3MgZHVlIHRvIGEgbm9uLU5VTEwgY29tcGFyaXNvbiwgb3IsIHdvcnN0LWNhc2UsIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gaWYgdGhlIGludmFsaWQgdGFyZ2V0IGlzIGRlYWxsb2NhdGVkLlxuXG5UaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogd2hlbiBgdGFyZ2V0X3ZhbGlkKHQpID09IGZhbHNlYCwgd2UgcmVzZXQgYHMtXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTGAgYW5kIGBzLVx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb20gPSAwYC4gVGhpcyBjbGVhbnMgdXAgdGhlIHF1b3RhIHRyYWNraW5nIHN0YXRlIGZvciB0aGF0IGludmFsaWQgdGFyZ2V0LiBJJ3ZlIGNoZWNrZWQgZm9yIGNvbW1vbiBwaXRmYWxscyBhbmQgSSdtIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuXG5cbkxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IEtNU0FOIGNvbmNlcm5zLCBJJ3ZlIGNvbmZpcm1lZDpcblxuKiAgIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgaW50cm9kdWNlZC5cbiogICBObyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGBzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbWAgZmllbGQgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTC5cbiogICBUaGUgY29kZSBzZXRzIHZhcmlhYmxlcyB0byBleHBsaWNpdCBjb25zdGFudHMgKE5VTEwgYW5kIDApLCBlbGltaW5hdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucy5cbiogICBUaGlzIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIGxvZ2ljIGJ1ZywgYSBzdGFsZSBwb2ludGVyIGlzc3VlLCBpbiB0aGUgREFNT04gcXVvdGEgdHJhY2tpbmcuXG4qICAgS0FTQU4gc2hvdWxkIGNhdGNoIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMuXG4qICAgVGhlcmUncyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLlxuXG5XZSBjYW4gcnVsZSBvdXQgYW55IEtNU0FOLXJlbGF0ZWQgaXNzdWVzLiBUaGUgc3RydWN0dXJlIGlzIE5PVCBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlJ3Mgbm8gY29uZGl0aW9uYWwgbG9naWMgb3IgY29weSBvcGVyYXRpb24gZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBDb21wbGV4IHN0cnVjdHVyZXMgYXJlIE5PVCBhbGxvY2F0ZWQsIGFuZCB0aGVyZSBhcmUgTk8gYm91bmRzIGNoZWNrcyBvciBsZW5ndGggbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBidWZmZXJzLiBUaGUgbG9naWMgaXMgc2ltcGxlIGFuZCBmaXhlcyB0aGUgc3RhbGUgcG9pbnRlciBpc3N1ZS5cblxuSW4gc2hvcnQ6IFRoZSBwYXRjaCBjb3JyZWN0bHkgaGFuZGxlcyBzdGFsZSByZWZlcmVuY2VzIHRvIGludmFsaWQgdGFyZ2V0cyBpbiBEQU1PTidzIHF1b3RhIHRyYWNraW5nIGJ5IHJlc2V0dGluZyB0aGUgdHJhY2tpbmcgc3RhdGUuIEtBU0FOIGlzIHRoZSByZWxldmFudCB0b29sIGhlcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiBUaGlzIGlzIGEgbG9naWMgZml4LCBub3QgYSBtZW1vcnkgc2FmZXR5IGlzc3VlIHJlcXVpcmluZyBLTVNBTi4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMzQsIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjM3OjAyLjk3NDUzMjkyNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGtkYW1vbmRfYXBwbHlfc2NoZW1lcygpYCBpbiBgbW0vZGFtb24vY29yZS5jYCB0byByZXNldCBgcy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tYCB0byBgTlVMTGAgYW5kIGBzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tYCB0byBgMGAgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCB0YXJnZXQgKGB0YXJnZXRfdmFsaWQodCkgPT0gZmFsc2VgKS5cXG5cXG5UaGlzIGNoYW5nZSBjbGVhcnMgc3RhbGUgdGFyZ2V0IHJlZmVyZW5jZXMgaW4gREFNT04gc2NoZW1lIHF1b3RhIHRyYWNraW5nLiBJdCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgbWVtb3J5LCBhY2Nlc3MgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGJ1ZmZlcnMsIGFsdGVyIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaGFuZGxpbmcsIG9yIGNvcHkgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZS4gQW55IHBvdGVudGlhbCBzdGFsZSBwb2ludGVyIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBLQVNBTiwgd2hlcmVhcyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBga2RhbW9uZF9hcHBseV9zY2hlbWVzKClgIGluIGBtbS9kYW1vbi9jb3JlLmNgIHRvIHJlc2V0IGBzLVxcdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb21gIHRvIGBOVUxMYCBhbmQgYHMtXFx1MDAzZXF1b3RhLmNoYXJnZV9hZGRyX2Zyb21gIHRvIGAwYCB3aGVuIGVuY291bnRlcmluZyBhbiBpbnZhbGlkIHRhcmdldCAoYHRhcmdldF92YWxpZCh0KSA9PSBmYWxzZWApLlxcblxcblRoaXMgY2hhbmdlIGNsZWFycyBzdGFsZSB0YXJnZXQgcmVmZXJlbmNlcyBpbiBEQU1PTiBzY2hlbWUgcXVvdGEgdHJhY2tpbmcuIEl0IGRvZXMgbm90IGFsbG9jYXRlIG5ldyBtZW1vcnksIGFjY2VzcyB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYnVmZmVycywgYWx0ZXIgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBoYW5kbGluZywgb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlcnNwYWNlLiBBbnkgcG90ZW50aWFsIHN0YWxlIHBvaW50ZXIgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGJ5IHN0YW5kYXJkIEtBU0FOLCB3aGVyZWFzIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[1] Phase: Succeeded StartedAt: 2026-09-10 16:37:14 +0000 UTC FinishedAt: 2026-09-10 16:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 16:37:14 +0000 UTC FinishedAt: 2026-09-10 16:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2] Phase: Succeeded StartedAt: 2026-09-10 16:37:14 +0000 UTC FinishedAt: 2026-09-10 20:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:37:14 +0000 UTC FinishedAt: 2026-09-10 20:17:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:37:14 +0000 UTC FinishedAt: 2026-09-10 16:37:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:37:14 +0000 UTC FinishedAt: 2026-09-10 16:37:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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-workflowfwc7h/series-workflowfwc7h-convert-artifact-3886105668/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:37:24 +0000 UTC FinishedAt: 2026-09-10 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:37:24 +0000 UTC FinishedAt: 2026-09-10 16:53:40 +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:*04cb4cbb-bdef-440c-8632-d5bd8df84749,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-workflowfwc7h/series-workflowfwc7h-convert-artifact-3886105668/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": "c515646b-4a7f-478d-a3be-4ccdaee352b9", "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-workflowfwc7h/series-workflowfwc7h-build-action-3539437442/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:37:24 +0000 UTC FinishedAt: 2026-09-10 16:53:30 +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:*04cb4cbb-bdef-440c-8632-d5bd8df84749,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-workflowfwc7h/series-workflowfwc7h-convert-artifact-3886105668/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": "c515646b-4a7f-478d-a3be-4ccdaee352b9", "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-workflowfwc7h/series-workflowfwc7h-build-action-3539437442/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:53:40 +0000 UTC FinishedAt: 2026-09-10 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:53:40 +0000 UTC FinishedAt: 2026-09-10 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:53:40 +0000 UTC FinishedAt: 2026-09-10 16:53:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:53:40 +0000 UTC FinishedAt: 2026-09-10 16:53:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-workflowfwc7h/series-workflowfwc7h-convert-artifact-3623051971/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:53:50 +0000 UTC FinishedAt: 2026-09-10 16:55:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:53:50 +0000 UTC FinishedAt: 2026-09-10 16:55:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c515646b-4a7f-478d-a3be-4ccdaee352b9,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-workflowfwc7h/series-workflowfwc7h-build-action-3539437442/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-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:55:41 +0000 UTC FinishedAt: 2026-09-10 16:55:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:55:41 +0000 UTC FinishedAt: 2026-09-10 16:55:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:55:41 +0000 UTC FinishedAt: 2026-09-10 17:12:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:55:41 +0000 UTC FinishedAt: 2026-09-10 17:12:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*04cb4cbb-bdef-440c-8632-d5bd8df84749,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-workflowfwc7h/series-workflowfwc7h-convert-artifact-3623051971/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": "4ccfb792-252e-46c1-9555-4c2306855c54", "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-workflowfwc7h/series-workflowfwc7h-build-action-682806647/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 16:55:41 +0000 UTC FinishedAt: 2026-09-10 17:11:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*04cb4cbb-bdef-440c-8632-d5bd8df84749,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-workflowfwc7h/series-workflowfwc7h-convert-artifact-3623051971/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": "4ccfb792-252e-46c1-9555-4c2306855c54", "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-workflowfwc7h/series-workflowfwc7h-build-action-682806647/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:12:01 +0000 UTC FinishedAt: 2026-09-10 17:12:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:12:01 +0000 UTC FinishedAt: 2026-09-10 17:12:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:12:01 +0000 UTC FinishedAt: 2026-09-10 17:13:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:12:01 +0000 UTC FinishedAt: 2026-09-10 17:13:40 +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:*4ccfb792-252e-46c1-9555-4c2306855c54,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-workflowfwc7h/series-workflowfwc7h-build-action-682806647/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-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:13:50 +0000 UTC FinishedAt: 2026-09-10 20:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:13:50 +0000 UTC FinishedAt: 2026-09-10 20:17:17 +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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"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:*c515646b-4a7f-478d-a3be-4ccdaee352b9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4ccfb792-252e-46c1-9555-4c2306855c54,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-workflowfwc7h/series-workflowfwc7h-build-action-3539437442/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-workflowfwc7h/series-workflowfwc7h-build-action-682806647/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:13:50 +0000 UTC FinishedAt: 2026-09-10 17:14:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:13:50 +0000 UTC FinishedAt: 2026-09-10 17:13:55 +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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"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-workflowfwc7h/series-workflowfwc7h-convert-artifact-184862684/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:13:50 +0000 UTC FinishedAt: 2026-09-10 17:13:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:13:50 +0000 UTC FinishedAt: 2026-09-10 17:13:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:13:50 +0000 UTC FinishedAt: 2026-09-10 17:13:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:14:00 +0000 UTC FinishedAt: 2026-09-10 20:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwc7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"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":["kdamond_fn","damos_apply_scheme","damon_start","damon_commit_ctx","damon_sysfs_handle_cmd"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"cf558a250cf4475a8936902b8978fbb6c61016f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","DAMON_PADDR"],"series_id":"329c6dc6-1bf1-408f-928e-52c1f7b6eba5","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-09-10 17:14:00 +0000 UTC FinishedAt: 2026-09-10 20:17:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c515646b-4a7f-478d-a3be-4ccdaee352b9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4ccfb792-252e-46c1-9555-4c2306855c54,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-workflowfwc7h/series-workflowfwc7h-build-action-3539437442/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-workflowfwc7h/series-workflowfwc7h-build-action-682806647/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-workflowfwc7h/series-workflowfwc7h-convert-artifact-184862684/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,}